从app bundle打包Mac安装程序会安装文件夹" Contents" in / Applications而不是bundle本身

时间:2015-03-13 13:33:57

标签: macos pkgbuild productbuild

当我尝试使用我的.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文件夹中,我看到“内容”(即应用程序包的内容)

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

中添加“/Applications/myapp.app”

2 个答案:

答案 0 :(得分:1)

正如维克拉姆所说,pkgbuild不应捆绑" .app",而是仅查找"内容"出现在该目录中。

如果您的唯一目标是更改到安装捆绑软件的目录,则可以指定备用安装位置。

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

答案 1 :(得分:0)

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

使用--component标志,您应该提供存在捆绑包的目录路径。您不应该将路径指向应用程序包名称。 如果要捆绑./TestDir/myapp.app中的内容,则应将路径设置为./TestDir,并且dir内的所有内容都将捆绑在一起。

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