- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个名为 Parent.unsigned.mpkg
的父安装程序包,我想用 OS X productsign
对其进行签名。
文件 Parent.unsigned.mpkg
包含名为 A.pkg
、B.pkg
和 C.pkg
,它依次安装 Clang 编译的命令行二进制文件和 bash
包装器脚本:
./Parent.unsigned.mpkg/Contents/Packages/A.pkg
./Parent.unsigned.mpkg/Contents/Packages/B.pkg
./Parent.unsigned.mpkg/Contents/Packages/C.pkg
我注册了一个 Mac Developer 帐户,该帐户设置(在其他证书中)一个 ID 为 ABCD1234
的 Developer ID Installer 证书(这个 ID 实际上是不同的,并且特定于我的 Apple ID。)我使用 security
工具获取此 ID 值:
$ security find-certificate -a -c "Developer ID Installer" | grep "alis"
"alis"<blob>="Developer ID Installer: Foo B. Baz (ABCD1234)"
我用这个 ID 值对这些子包中的每一个进行签名,这似乎没有发生任何意外:
$ productsign --timestamp --sign ABCD1234 ./Parent.unsigned.mpkg/Contents/Packages/A.pkg ./Parent.unsigned.mpkg/Contents/Packages/A.signed.pkg
...
$ productsign --timestamp --sign ABCD1234 ./Parent.unsigned.mpkg/Contents/Packages/B.pkg ./Parent.unsigned.mpkg/Contents/Packages/B.signed.pkg
...
$ productsign --timestamp --sign ABCD1234 ./Parent.unsigned.mpkg/Contents/Packages/C.pkg ./Parent.unsigned.mpkg/Contents/Packages/C.signed.pkg
...
然后我将这些已签名的子包移回它们的原始文件名:
$ mv ./Parent.unsigned.mpkg/Contents/Packages/A.signed.pkg ./Parent.unsigned.mpkg/Contents/Packages/A.pkg
$ mv ./Parent.unsigned.mpkg/Contents/Packages/B.signed.pkg ./Parent.unsigned.mpkg/Contents/Packages/B.pkg
$ mv ./Parent.unsigned.mpkg/Contents/Packages/C.signed.pkg ./Parent.unsigned.mpkg/Contents/Packages/C.pkg
当我尝试 productsign
父包时,我收到以下警告消息:
$ productsign --timestamp --sign ABCD1234 ./Parent.unsigned.mpkg ./Parent.signed.mpkg
productsign: preparing "Parent.unsigned.mpkg" for signing ...
productsign: Using timestamp authority for signature
productsign: warning: component package "A.pkg" not found inside "Parent.unsigned.mpkg" and must be signed explicitly
productsign: warning: component package "B.pkg" not found inside "Parent.unsigned.mpkg" and must be signed explicitly
productsign: warning: component package "C.pkg" not found inside "Parent.unsigned.mpkg" and must be signed explicitly
productsign: Wrote signed product archive to ./Parent.signed.mpkg
当我尝试验证安装程序是否已签名时,我收到一条拒绝消息:
$ spctl -a -v --type install ./Parent.signed.mpkg
./Parent.signed.mpkg: rejected
我正在使用 Apple 概述的说明 here和 here .
未签名的安装程序可以正常工作,但它需要绕过 OS X Gatekeeper。因此安装包和内容看起来是正确的(或者至少工作正常)。
我遗漏了哪些步骤或程序来生成可与 OS X Gatekeeper 配合使用的数字签名安装程序?
最佳答案
我用了Packages.app
创建包项目。
在Packages.app
内,我将项目类型从 Bundle
更改为至 Flat
并重建安装程序存档。
然后我继续 productsign
如上所述通过命令行执行步骤,除了我只需要签署父 pkg
文件生成一个有效的、签名的安装程序(我没有签署子包)。
使用 pkgutil --flatten
尝试压平 mpkg
命令行上的 bundle 输出最终破坏了安装程序——我不得不将项目类型从 Bundle
更改为至 Flat
在 Packages.app
内并在该应用程序中重建安装程序,并在 Packages.app
之外签署平面安装程序文件.
关于macos - 如何将 productsign 与包含较小签名 pkg 文件的 mpkg 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28389664/
我创建了一个 .mpkg来自多个 .pkg 的 Mac OS X 软件包包包。在 .pkg 之一的飞行后脚本中包,我想执行一个依赖于另一个 .pkg 的操作已经安装的软件包。我可以保证.pkg软件包的
我有一个名为 Parent.unsigned.mpkg 的父安装程序包,我想用 OS X productsign 对其进行签名。 文件 Parent.unsigned.mpkg 包含名为 A.pkg、
我正在与 OSX 的 packageMaker 作斗争,因为它不允许我创建“.pkg”。相反,它迫使我制作一个“.pkg.mpkg”。 这似乎是一个愚蠢的问题,我应该可以通过几次谷歌搜索来回答,但我无
我有一个名为 Parent.unsigned.mpkg 的父安装程序包,我想用 OS X productsign 对其进行签名。 文件 Parent.unsigned.mpkg 包含名为 A.pkg、
长话短说:我有一个包格式 (.mpkg) 的 Mac OS X 安装程序,我需要将它托管在 IIS 中以便人们可以下载它,我不能使用 Apache,IIS 考虑使用 .mpkg 或.bundle 是目
我在 flutter 中有一个 ios 应用程序,并尝试使用 Xcode 将应用程序提交到苹果商店。但是在开始上传时出现以下错误。 “Info.plist 表示一个 iOS 应用程序,但提交了一个 p
我正在尝试提交我的应用程序。它是用 swift 3 编写的,具有 iOS 10 部署目标。所以,我需要使用 Xcode 8。当我创建一个存档时,一切都很好。我什至查看了 .ipa,一切似乎都很好。 但
我是一名优秀的程序员,十分优秀!