我有一个用Java写的应用程序。我使用appbundler将JVM与应用程序捆绑在一起,然后使用pkgbuild创建一个.pkg安装程序。在我添加公证并升级到Catalina之前,它一直运行得很好。公证和装订工作正常。但是.pkg installer会生成一个错误,“正在尝试安装到系统卷”。
我已经更新到appbundler的最新版本。它创建了一个嵌入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当我在查找器中双击Myapp.app时,它运行得很好。如果我运行Myapp.pkg,安装程序会成功运行,但它会替换我的开发目录中的副本。要在应用程序目录中安装Myapp,必须运行sudo pkgutil --forget com.myapp.tony.Myapp。然后,当我再次运行Myapp.pkg时,在安装程序请求我的密码后,它报告“此软件包与此版本的macOS不兼容。软件包正在尝试将内容安装到系统卷中。”这与第一次尝试安装的用户向我报告的情况是一样的。
有什么建议吗?
发布于 2019-11-23 02:27:34
Harded runtime仍然会导致java出现问题。我也面临着同样的问题。尝试删除hardened选项( remove:--options runtime),它会暂时导致警告。
附言:您正在装订另一个文件,然后在altool中。真的是这样吗?
https://stackoverflow.com/questions/58999043
复制相似问题