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

2021-04-22 20:38:21 +08:00
 qdwang

发现一个奇怪的现象。

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

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

这里面是什么原理呢?

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

但是这样 build 好的程序压缩后分发给别人怎么办呢
so898
2021-04-22 21:48:32 +08:00
这个坑我遇到过……你用苹果系统解压 Zip,出来的.app 文件夹就没事,但是用其他的,比如说 rar,可能就有事……
解压完看看.app 里面的 binary 的可运行状态就知道了……
对于不可运行的,可以 chmod a+x,给 binary 来一下
qdwang
2021-04-22 22:12:31 +08:00
@so898 这里有个比较麻烦的问题是,我如何构建一个可信的.app 包呢?不管是压缩成 zip 还是建立 dmg,分发给别人后,总会显示文件损坏。总要用 xattr -cr 去修复。。
aureole999
2021-04-22 22:29:47 +08:00
给小米盒子刷机时用 Mac 解压出来的文件刷就会一直 Boot loop……
找了好久原因,最后才发现有人说不能用 Mac 解压刷机包
BrettD
2021-04-22 22:30:18 +08:00
用开发者证书签名之后用 dmg 格式分发或者上架应用商店
qdwang
2021-04-22 22:40:30 +08:00
@BrettD 嗯嗯,看了一下,一定要用开发者证书签名,这是唯一的办法。
morize
2021-04-22 22:49:59 +08:00
原来是这样,之前也遇到过。我忘记哪个 app 了,github 上的包下 zip 的就报错,下 dmg 的就正常。报 Issue 还说我电脑有问题😅
BingoXuan
2021-04-23 09:11:01 +08:00
有一次打开自己编译的程序发现运行不了,然后 scp 传到服务器上面再 scp 回来,打开没问题。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/772549

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX