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

时间:2016-09-13 14:34:46

标签: packagemaker

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

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

  • XxxxBin.app 应用程序,默认安装到/Applications;
  • Xxxx.bundle 插件包,默认安装到/Library/Audio/Plug-Ins/VST/(并重命名为 Xxxx.vst ,使用post后很容易实现安装脚本);
  • 一些资源文件,默认安装在/Library/Company/Xxxx_resources/

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

我注意到PackageMaker中有两个层: choice package 。将app / bundle /目录拖到PackageMaker时,它将创建一个新的选择和一个新的。但是, choice package 层都包含目标,这让我很困惑。此外,在从应用程序或软件包派生的软件包组件页面中,有一个标有" Allow Relocation"的复选框,它引入了进一步混乱。

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

  • 三个选择,每个包含应用,捆绑或资源目录。
  • 在所有选择图层中,使用实际默认安装路径填充目标条目,然后选择"允许备用卷"复选框;
  • 在所有图层中,使用/填充目标条目,然后选择"允许自定义位置"复选框;
  • 层的所有组件页面中,取消选中所有允许重定位复选框。

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

/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

我对这些东西感到非常疲惫,但仍未达到我的目标非常简单:多个组件的用户可更改安装目录。对于那些可以把我拖出这个泥潭的人来说,我真的很感激。非常感谢!

1 个答案:

答案 0 :(得分:1)

最后我发现实际原因不是在PackageMaker中,而是在打包的包内。应用和插件的包标识符为空。在我为它们分配不同的值后,一切正常。