【问题标题】:Why many .pkg(installation package) are to be converted to mountable disk image( .dmg) before distribution为什么很多.pkg(安装包)在分发之前要转换成可挂载的磁盘映像(.dmg)
【发布时间】:2018-07-19 04:54:50
【问题描述】:

很多软件在.dmg(磁盘镜像)里面都有一个.pkg(安装包),我想知道为什么会这样。

  1. 即使在将所有内容绑定到 .pkg 之后,也需要拥有软件的可挂载磁盘映像(即 .dmg)。

  2. .pkg 是否容易受到 zip slip 之类的影响,是否需要额外的安全性?如果以 .pkg 格式分发软件可能会面临哪些问题。

  3. .pkg 似乎已经被压缩了,因为 dmg 在那之后并没有减少文件大小。似乎压缩不是主要原因,如果我错了,请告诉我。

  4. 有人提到“.pkg 不是一个文件,而是一个文件夹。所以也许将它收集到一个文件中对于下载是必不可少的。”但是我无法右键单击并查看内容,也无法通过 cmd 行显示它不是目录。那么为什么我们不能将软件作为 .pkg 分发,只是为什么需要挂载。

【问题讨论】:

  • 安装程序包格式的早期版本实际上是文件夹(因此需要以 .dmg 之类的格式进行传输),但从 OS X v10.5 开始,Apple 增加了对 @987654321 的支持@,现在几乎所有这些都被使用了。我不确定为什么它们仍然包裹在磁盘映像中,但我怀疑这主要是惯性。
  • 感谢@GordonDavisson,即使我观察到 .pkg 现在是平面文件。你说的惯性是什么意思,你能详细说明一下吗?
  • 基本上,我的意思是,当扁平包出来的时候,每个人都习惯了“.pkg 包装成.dmg”的格式,即使最初的目的已经没有了,也继续使用它。另一个例子见the baked ham joke。请注意,我没有将此作为答案添加,因为我不完全确定它是否正确 - 包装扁平包装可能还有一些我不知道的相关原因。
  • @GordonDavisson。明白了谢谢

标签: macos cocoa dmg pkg-file


【解决方案1】:

仅当您的应用程序很复杂并且需要执行一些脚本或必须在文件系统中安装一些额外的资源时才需要 pkg(安装包)。对于大多数应用程序,用户更容易,建议提供 zip 文件供下载。下载后,Zip 档案将自动从 Safari 中解压缩,并且该应用程序已准备好使用。

有 pkg​​ 查看器和有关如何检查安装包内容的说明 (https://www.macobserver.com/tmo/article/how-to-inspect-an-os-x-package-file-pkg-without-installing)。

【讨论】:

  • 谢谢 Marc,但是“pkgutil --expand”对我不起作用,虽然我可以通过使用“xar -xvf”查看内容,但我主要关心的是人们为什么要包装 .pkg在磁盘映像中必须有一些理由这样做我想知道原因。
  • 您也可以压缩 .pkg 包。我认为它更多地是关于传统的原因。多年前,软件以 CD 或 DVD 形式分发。分发需要磁盘映像 (dmg),所以为什么不为用户下载软件提供相同的体验。即使对于像 Xcode 这样的应用程序,这种情况多年来也发生了变化,Mac App Store 中可用的任何应用程序都以 zip 的形式分发。这样做没有技术原因。
猜你喜欢
  • 2014-04-15
  • 2018-07-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多