1

在 Mac 上,我正在尝试将软件许可条款添加到磁盘映像文件中,用户在安装磁盘映像之前必须同意该文件。我曾经能够使用 hdituil 的 flatten 和 unflatten 动词以及 Rez 来做到这一点(类似于这里的做法)。

但是,不推荐使用 Rez 和 flatten/unflatten 动词,并且 hdiutil flatten/unflatten 动词已从 macOS 11.0 Big Sur 中删除。我正在尝试找到一种在 macOS 11.0 上运行但运气不佳的不同方式来执行此操作的方法。我已经咨询了 IgnacioHR 最近对这个问题的回答。我认为他使用 .xml 文件和 hdiutil udifrez 的解决方案听起来很有希望;但是,我无法让终端接受执行此操作的命令。(它告诉我“没有指定图像”。)

hdiutil udifrez -xml mylicensefile.xml mydiskimage.dmg

根据此处所说的通过在磁盘映像之前包含一个空参数来修改我的命令后,终端接受我的命令但给了我另一个错误:“无法获取'mydiskimage.dmg'的资源叉:功能未实现(78) ”和“失败 - 功能未实现”。

hdiutil udifrez -xml mylicensefile.xml '' mydiskimage.dmg

我相信我得到了这个输出,因为我试图执行这个的磁盘映像以前是未展平的。要生成资源分叉,以前我只会展平磁盘映像,但现在我无法使用该选项。因此,仅使用现在在 macOS 11.0 上可用的内容,我如何将资源分支“恢复”到我的磁盘映像,以便我可以使用 udifrez 动词向其中添加许可条款 .xml 文件?

更新:我发现该命令仅在将其应用于压缩的磁盘映像时才有效。如果我这样做,那么该命令会完全按照我的预期将软件许可条款添加到我的磁盘映像中。但是,当尝试将其应用于标准的未压缩读/写磁盘映像时,该命令会失败。如果我记得以前,Rez 曾经能够将许可条款资源应用于未压缩的读/写磁盘映像,这就是为什么我希望它能够在这里做到这一点。这并不能完全回答我的问题,尽管这可能意味着我的问题的答案是未压缩的读/写磁盘映像是不可能的。

4

1 回答 1

0

我在 Big Sur 下将许可证文件添加到我的 .dmg 时也遇到了问题,并且到目前为止还没有找到如何通过终端正确执行此操作,这首先是由于缺乏关于 .xml 许可证文件正确结构的文档。

最后,我最终使用了DMG Canvas,我绝对可以推荐它:它是商业的,但并不昂贵,在 Big Sur 下运行良好,除了添加许可证之外,它还可以很好地设计 .dmg(例如,添加背景图像,额外的图像和文本),并进行代码签名和公证。一旦我正确设置了所有内容,在重新构建我的 .app(加上使用终端中的一行代码在其中添加代码签名二进制文件)后创建一个新的 .dmg 只需单击“构建”并等待几分钟供 Apple 公证。

于 2021-03-19T14:48:57.840 回答