为什么;macOS文件夹存档“;不';我不能与install4j签约

为什么;macOS文件夹存档“;不';我不能与install4j签约,macos,code-signing,install4j,Macos,Code Signing,Install4j,我不明白为什么install4j即使在常规设置中指示“为macOS媒体文件签名”,归档/macOS文件夹归档也不会得到签名。在构建期间查看日志,我确实看到DMG得到了签名。 签名证书很好,因为我有另一个没有问题的应用程序签名,唯一的区别是媒体是安装程序/macOS文件夹。所以它在DMG上签名而不在里面的应用文件夹上签名?重点是什么?我一定错过了什么 我试图为用户实现一个非常简单的流程-单击dmg,将应用程序归档拖到应用程序中,然后单击运行。不需要安装人员。在dmg从互联网上下载之前,它工作得很好

我不明白为什么install4j即使在常规设置中指示“为macOS媒体文件签名”,归档/macOS文件夹归档也不会得到签名。在构建期间查看日志,我确实看到DMG得到了签名。 签名证书很好,因为我有另一个没有问题的应用程序签名,唯一的区别是媒体是安装程序/macOS文件夹。所以它在DMG上签名而不在里面的应用文件夹上签名?重点是什么?我一定错过了什么

我试图为用户实现一个非常简单的流程-单击dmg,将应用程序归档拖到应用程序中,然后单击运行。不需要安装人员。在dmg从互联网上下载之前,它工作得很好,Mac认为这很危险,因为没有开发者签名,乐趣就开始了。。。如何使用install4j进行此签名

非常感谢您的帮助。 (install4j版本为6.1.6)

我正在尝试为用户实现一个非常简单的流程-单击dmg,将>应用程序归档拖到应用程序中,然后单击运行

然后使用macOS单包归档,而不是macOS文件夹安装程序

所以它在DMG上签名而不在里面的应用文件夹上签名

不,DMG和所有生成的启动器都由macOS文件夹安装程序的install4j签名

注意:对于macOS 10.14,您需要安装4J 7.0.6+,否则签名将报告为无效


在评论中讨论后更新:

在您的例子中,可执行文件是一个shell脚本。对于mach-o二进制文件,macOS上的
codesign
工具将签名直接保存在二进制文件中,对于非mach-o二进制文件,它将保存文件Info.plist的扩展HFS+属性。即使在macOS上构建,这些扩展属性也不会被install4j获取,它们将在运行时丢失,签名将无效


我担心唯一的解决办法是使用生成的启动器。

我必须使用自己的启动器,这就是为什么我不能使用捆绑包,因为它迫使我使用instal4j启动器,而我无法创建(另一个故事,不是针对本期)。因此,我找到了一种方法,制作应用程序文件夹并将所有内容放在其中,这样Mac就可以运行它了——它确实做到了。剩下的就是在dmg中的文件夹上签名,让Mac高兴。我在Mac 10.13.4上,是否需要intall4j7来完成此工作?
剩下的就是在dmg中对该文件夹进行签名
->您可以对dmg或应用程序包进行签名,普通文件夹无法进行签名。如果你有自己的启动器,那么你只需自己签名并将其添加到分发树中即可。据我所知,应用程序包是一个普通文件夹,不是吗?DMG中包含的是特定的包(定义结构的应用程序文件夹,以便Mac可以执行其中的内容)。我是按照苹果应用程序包的规则自己创建的。当我进行本地安装时,它工作得很好,这证明包的结构是正确的,包括启动器和JRE,就在那里。糟糕的是,当我从我的分发站点下载相同的DMG时,Mac拒绝运行它,因为它没有签名。所以,我很困惑——需要签署什么?如何实现呢?应用程序包的签名是写入到特定文件中的,没有对目录进行签名的一般概念。要自己签署一个应用程序包,请看是的,我可能可以自己这样做,分离DMG文件,签署应用程序包和其中的可执行文件,然后将其放回DMG。我的问题是为什么install4j不为我做这件事?我不能使用“macOS单包归档”,因为它需要启动器,而启动器又需要主类。我没有。我的应用程序由shell脚本引导,并启动了Java服务包装器,该包装器引导JVM。我将尝试单独签署可执行文件,可能它会通过。。。