避免“从 Internet 下载的应用程序”警告

Posted

技术标签:

【中文标题】避免“从 Internet 下载的应用程序”警告【英文标题】:Avoid "Application Downloaded From The Internet" warning 【发布时间】:2017-05-26 20:59:08 【问题描述】:

我已经使用电子编写了一个应用程序并对其进行了签名。

我已确认我已使用codesign -dvvv 命令正确签名:

Executable=/Volumes/MyApp/MyApp.app/Contents/MacOS/MyApp
Identifier=com.example.my-app
Format=app bundle with Mach-O thin (x86_64)
CodeDirectory v=20200 size=285 flags=0x0(none) hashes=3+3 location=embedded
Hash type=sha256 size=32
CandidateCDHash sha1=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
CandidateCDHash sha256=exxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Hash choices=sha1,sha256
CDHash=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Signature size=8925
Authority=Developer ID Application: Example, LLC (XXXXXXXXX)
Authority=Developer ID Certification Authority
Authority=Apple Root CA
Timestamp=May 24, 2017, 4:30:26 PM
Info.plist entries=21
TeamIdentifier=XXXXXXXXXX
Sealed Resources version=2 rules=13 files=10
Internal requirements count=1 size=192

然而,当我的同事从互联网上下载它进行测试时,他收到了以下警告:

"MyApp" is an application downloaded from the Internet.  Are you sure you want to open it?

尽管从设置中的“安全和隐私”屏幕中选择了“Mac App Store 和已识别的开发者”,但还是会出现这种情况。

根据对 Gatekeeper 的描述:

https://support.apple.com/en-us/HT202491

我不希望收到该警告。

我可以在构建或分发应用程序的方式上进行哪些更改,以使用户不会收到该警告?我们的用户根本不懂技术,所以任何警告信息都会让我们的手机响起。

【问题讨论】:

【参考方案1】:

来自article you linked about Gatekeeper,如果应用程序未正确签名,警告会有所不同 - “[MyApp] 来自身份不明的开发人员”或“[MyApp] 已损坏且无法打开”。

因此,您收到“[MyApp] 是从 Internet 下载的应用程序”这一事实是正常的,表明您的应用程序已正确签名。

您看到的是用户将从互联网下载任何应用程序的相同警告。例如,如果您下载 Google Chrome,您将看到相同的消息:

因此,您的用户应该习惯于在他们从 Mac App Store 之外下载内容时看到该消息。

要删除警告,他们需要在系统上完全禁用 Gatekeeper。 this blog post 中有相关说明。

【讨论】:

我实际上根据经验相信你,但它似乎与 Gatekeeper 中的“和确定的开发人员”设置冲突。如果仍然收到警告,为什么还要设置该设置? 如果 Gatekeeper 阻止应用程序运行,您根本不会获得“打开”选项。来自已确定开发者的应用允许运行,您会在屏幕截图中看到消息 - 允许您运行该应用。

以上是关于避免“从 Internet 下载的应用程序”警告的主要内容,如果未能解决你的问题,请参考以下文章

Vue.js。子组件中的变异道具不会触发警告。想知道为啥

使用 ref 的 vue3 性能警告

警告:'RaisedButton' 已弃用,不应使用。改用 ElevatedButton

如何避免警告:UndefinedMetricWarning:

验证 iOS 应用以进行上传的警告和错误

JSX 道具不应使用箭头函数 eslint 警告 [重复]