Mar*_*ten 6 linux macos software-distribution diskimage dmg
我想分发一个跨平台的应用程序,可执行文件略有不同,具体取决于下载它的用户.这是通过在可执行文件中的某个位置放置占位符字符串来完成的,该位置字符串在下载时被特定于用户的内容替换
必须执行这些字符串替换的Web服务器是Linux机器.对于Windows,可执行文件不会在安装程序.exe中压缩,因此更换字符串很容易.
对于未压缩的Mac OS X .dmg文件,这也很容易.但是,使用gzip或bzip2压缩的.dmg文件并不容易.例如,在后一种情况下,压缩的.dmg不是一个大的bzip2压缩磁盘映像,而是由几个不同的bzip2压缩部分(具有不同的块大小)和一个plist后缀组成.此外,使用bzip2解压缩和重新压缩不同的部分不会产生原始数据,因此我猜测Apple使用bzip2的某些参数不同于命令行工具.
有没有办法从Linux上的未压缩的一个生成压缩的.dmg(没有hdiutil)?或者可能是另一个创建自定义应用程序而不预先生成它们的建议?它应该在没有用户输入的情况下工作.
我意识到我在这里有点太晚了,但是我们想做同样的事情,并使用libdmg让它工作.https://github.com/planetbeing/libdmg-hfsplus
基本上,您可以使用libdmg将dmg文件解压缩到包含hfs +文件系统的未压缩文件,使用hfs +文件系统中的文件,然后将它们重新组合为具有正确校验和的dmg文件.
如果您使用任何花哨的dmg功能,例如在安装映像之前显示EULA,那么这些功能将无法在此过程中继续存在.然而,背景图像等工作.
如果您的 Web 服务器和客户端支持 gzip 编码,那么您可以在服务器上处理未压缩的文件,但可以分别由 Web 服务器/Web 客户端动态压缩/解压缩它们。
例如apache的mod_gzip。
否则也许你可以将你的 dmg 分成 3 部分:
您要替换的内容之前的内容
你想要替换的字符串
你要替换的内容之后的内容
如果 gzip 流在这些点上是可拆分的,您只需将前面和后面连接到要替换的 gzip 字符串上即可。这可以让你即时生成它。
归档时间: |
|
查看次数: |
2060 次 |
最近记录: |