我有一个用 Java 编写的应用程序。我使用 appbundler 将 JVM 与应用程序捆绑在一起,然后使用 pkgbuild 创建一个 .pkg 安装程序。在我添加公证并升级到 Catalina 之前,这一直很好。公证和装订工作正常。但是 .pkg 安装程序会生成错误,“尝试安装到系统卷”。
我已经更新到最新版本的 appbundle。它创建一个嵌入 jdk1.8.0_151.jdk 的应用程序。
这是我的entitlements.plist:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/ PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.security.cs.allow-dyld-environment-variables</key>
<true/>
<key>com.apple.security.cs.disable-library-validation</key>
<true/>
<key>com.apple.security.cs.disable-executable-page-protection</key>
<true/>
<key>com.apple.security.cs.allow-jit</key>
<true/>
<key>com.apple.security.cs.allow-unsigned-executable-memory</key>
<true/>
</dict>
</plist>
我使用以下命令来创建安装程序:
$ ant # creates appBundle/Myapp.app
$ codesign -s "Developer ID Application" --timestamp --options runtime -fv --entitlements entitlements.plist --deep appBundle/Myapp.app
$ /usr/bin/ditto -c -k --keepParent appBundle/Myapp.app Myapp.zip
$ xcrun altool --notarize-app --primary-bundle-id "com.myapp.tony.Myapp" -u "developer@myapp.com" -p <xxx> --file Myapp.zip
$ xcrun altool --notarization-info <xxx> -u "developer@myapp.com" -p <xxx>
$ xcrun stapler staple appBundle/Myapp.app
$ pkgbuild --root appBundle Myapp.pkg
当我在 finder 中双击 Myapp.app 时,它运行良好。如果我运行 Myapp.pkg,安装程序会成功运行,但它会替换我开发目录中的副本。要将 Myapp 安装在 Applications 目录中,必须运行sudo pkgutil --forget com.myapp.tony.Myapp
. 然后当我再次运行 Myapp.pkg 时,在安装程序请求我的密码后,它会报告“此软件包与此版本的 macOS 不兼容。该软件包正在尝试将内容安装到系统卷。” 这与第一次尝试安装的用户向我报告的内容相同。
有什么建议么?