V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
qdwang
V2EX  ›  macOS

mac 下.app 程序的奇怪表现。

  •  
  •   qdwang · 2021-04-22 20:38:21 +08:00 · 1557 次点击
    这是一个创建于 1092 天前的主题,其中的信息可能已经有所发展或是发生改变。

    发现一个奇怪的现象。

    假如我在 mac 上有一个.app 程序。

    1. 在 mac 上压缩它,得到一个.zip 文件。 [没问题]
    2. 在 mac 上解压这个.zip 文件,得到解压后的.app ,可以运行。 [没问题]
    3. 把这个.zip 发给 windows,然后再发回来。
    4. 解压这个发回来的.zip 文件,得到.app 文件,运行失败。 [显示损坏,不能打开云云]

    这里面是什么原理呢?

    10 条回复    2021-04-23 09:11:01 +08:00
    billlee
        1
    billlee  
       2021-04-22 20:54:36 +08:00
    我觉得可以先校验一下发回来的 .zip 的 md5 是否一致
    xupefei
        2
    xupefei  
       2021-04-22 21:11:38 +08:00 via iPhone
    如果 md5 没变的话是是按住 opt 右键打开。
    qdwang
        3
    qdwang  
    OP
       2021-04-22 21:41:50 +08:00
    @billlee
    @xupefei 我知道了,是解压 zip 过程自动带上了 com.apple.quarantine 属性,就会显示损坏。
    用 `xattr -cr XXXX.app` 就可以去掉。

    但是这样 build 好的程序压缩后分发给别人怎么办呢
    so898
        4
    so898  
       2021-04-22 21:48:32 +08:00
    这个坑我遇到过……你用苹果系统解压 Zip,出来的.app 文件夹就没事,但是用其他的,比如说 rar,可能就有事……
    解压完看看.app 里面的 binary 的可运行状态就知道了……
    对于不可运行的,可以 chmod a+x,给 binary 来一下
    qdwang
        5
    qdwang  
    OP
       2021-04-22 22:12:31 +08:00
    @so898 这里有个比较麻烦的问题是,我如何构建一个可信的.app 包呢?不管是压缩成 zip 还是建立 dmg,分发给别人后,总会显示文件损坏。总要用 xattr -cr 去修复。。
    aureole999
        6
    aureole999  
       2021-04-22 22:29:47 +08:00
    给小米盒子刷机时用 Mac 解压出来的文件刷就会一直 Boot loop……
    找了好久原因,最后才发现有人说不能用 Mac 解压刷机包
    BrettD
        7
    BrettD  
       2021-04-22 22:30:18 +08:00 via iPhone
    用开发者证书签名之后用 dmg 格式分发或者上架应用商店
    qdwang
        8
    qdwang  
    OP
       2021-04-22 22:40:30 +08:00
    @BrettD 嗯嗯,看了一下,一定要用开发者证书签名,这是唯一的办法。
    morize
        9
    morize  
       2021-04-22 22:49:59 +08:00
    原来是这样,之前也遇到过。我忘记哪个 app 了,github 上的包下 zip 的就报错,下 dmg 的就正常。报 Issue 还说我电脑有问题😅
    BingoXuan
        10
    BingoXuan  
       2021-04-23 09:11:01 +08:00 via Android
    有一次打开自己编译的程序发现运行不了,然后 scp 传到服务器上面再 scp 回来,打开没问题。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1147 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 23:08 · PVG 07:08 · LAX 16:08 · JFK 19:08
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.