避免“从 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 下载的应用程序”警告的主要内容,如果未能解决你的问题,请参考以下文章
警告:'RaisedButton' 已弃用,不应使用。改用 ElevatedButton