如何在macOS 11.0 Big Sur上向磁盘映像添加软件许可条款,而不使用hdiutil flatten和unsa



在Mac上,我试图将软件许可条款添加到磁盘映像文件中,用户必须在安装磁盘映像之前同意该条款。我过去可以使用hdituil的扁平化和非扁平化动词以及Rez来完成这项工作(类似于这里的操作方式(。

然而,Rez和flatten/unwatten动词已被弃用,hdiutil flatten/unswatten谓词已从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

我相信我得到这个输出是因为我试图在上面执行这个操作的磁盘映像以前没有被渲染。要生成资源分叉,以前我只需要压平磁盘映像,但现在我无法使用该选项;恢复";资源分支到我的磁盘映像,以便我可以使用udifrez谓词向其中添加license-terms.xml文件?

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

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

最后,我最终使用了DMG Canvas,我可以肯定地推荐它:它是商业性的,但不贵,在Big Sur下运行良好,除了添加许可证外,它还可以很好地设计.DMG(例如,添加背景图像、额外的图像和文本(,以及代码签名和注释。一旦我把所有东西都设置好了,在重新构建我的.app(加上使用终端中的一行代码在其中签名二进制文件(后,只需点击"构建",等待几分钟苹果就可以创建一个新的.dmg。

最新更新