【问题标题】:Packaging a Mac installer from app bundle installs the folder "Contents" in /Applications instead the bundle itself从应用程序包打包 Mac 安装程序会在 /Applications 中安装文件夹“Contents”,而不是包本身
【发布时间】:2015-03-13 13:33:57
【问题描述】:

当我尝试使用 .app 打包来创建 Mac 安装程序并运行安装程序时,它会在我的 /Applications 文件夹中创建一个名为“Contents”的文件夹,而不是应有的“捆绑应用程序”。

我已经使用 pkgbuild + productbuild 进行了测试:

pkgbuild --component "./myapp.app" --version 1 --install-location /Applications component.pkg
productbuild  --package-path "component.pkg" --distribution "./Distribution.xml" --package-path "./Temp" --resources "./Resources" --sign mycert "myapp.pkg"

仅使用 productbuild:

productbuild --component "./myapp.app" /Applications -s mycert myapp.pkg

在这两种情况下,我都运行了安装程序,一切似乎都很好,但在 Applications 文件夹中我看到了“Contents”(即应用程序包的内容)

我也尝试在 --component 属性中使用“./myapp.app/”,甚至在 --install-location 中添加“/Applications/myapp.app”

【问题讨论】:

    标签: macos pkgbuild productbuild


    【解决方案1】:
    pkgbuild --component "./myapp.app" --version 1 --install-location /Applications component.pkg
    

    使用--component 标志,您应该提供您的捆绑包所在的目录路径。您不应该提供应用程序包名称的路径。 如果要捆绑./TestDir/myapp.app 中的内容,则应提供./TestDir 的路径,目录中的所有内容都将被捆绑。

    pkgbuild --component "./TestDir" --version 1 --install-location /Applications component.pkg
    

    使用目标根目录 /tmp/Sample.dst 的全部内容构建包 Sample.pkg。

    pkgbuild --identifier com.sample.pkg.app --root /tmp/Sample.dst Sample.pkg
    

    【讨论】:

    • pkgbuild:在 ./TestDir 添加组件 pkgbuild:错误:路径“./TestDir”不是有效的捆绑组件(使用目标路径“.”)
    • 好的。您可以尝试使用--root 代替--component。它将使用目标根目录的全部内容构建包。
    【解决方案2】:

    正如 Vikram 所说,pkgbuild 不应该捆绑“.app”,而是只查找该目录中存在的“内容”。

    如果您的唯一目标是更改安装包的目录,您可以指定一个替代安装位置。

    pkgbuild --component "./myapp.app" --version 1 --install-location /Applications/myapp.app component.pkg
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-14
      • 1970-01-01
      • 1970-01-01
      • 2017-05-28
      • 2011-10-24
      • 1970-01-01
      相关资源
      最近更新 更多