在 PackageMaker 中设置可修改安装路径的正确方法是什么?

What is the proper way to set modifiable install path in PackageMaker?

首先,我说的是 GUI 应用程序 PackageMaker;不是 packagemaker,一个命令行程序。

我正在尝试制作一个包含三个组件的安装包,安装在不同的位置:

并且我希望允许用户在安装过程中更改每个组件的目标目录。

我注意到 PackageMaker 中有两层:choicepackage。当您将 app/bundle/directory 拖入 PackageMaker 时,它将创建一个新的 choice 和一个新的 package。然而,choicepackage层都包含Destination,这让我很困惑。此外,在 Components 页面中 packages 派生自 app 或 bundle,有一个标记为 "Allow Relocation" 的复选框,这引起了进一步的混乱。

我未能找到有关这些选项的详细信息。经过多次尝试,我使用了以下布局和选项组合,非常接近我的目标:

然而,它仍然有一个非常奇怪的行为:应用程序被复制了两次,既复制到它自己的目录,又覆盖了插件包的目录。如果你 "show content" 在已安装的包上,它将看起来像这样:

/Library/Audio/Plug-Ins/VST/Xxxx.vst
  |
  +contents
    |
    +-info.plist: after looking on its content, it is actually the app's plist, not the bundle's
    |
    +-MacOS
    |  |
    |  +-Xxxx: the bundle's dynamic library, which is expected to be here
    |  |
    |  +-XxxxBin: the app's executable, which is NOT expected to be here
    |
    +-Resources
       |
       +-Xxxx.xml: some config info for the bundle, which is expected to be here
       |
       +-icon.icns: the app's icon, which is NOT expected to be here

我已经精疲力尽了,但仍然没有达到我的目标,看起来非常简单:多个组件的用户可更改安装目录。真的很感谢有人能把我从这个泥潭里拉出来。非常感谢!

最后我发现真正的原因不在 PackageMaker 的东西中,而是在正在打包的 bundle 中。应用程序和插件的包标识符均为空。在我为它们分配不同的值后,一切正常。