【发布时间】:2016-09-13 14:34:46
【问题描述】:
首先,我说的是 PackageMaker,一个 GUI 应用程序;不是 packagemaker,一个命令行程序。
我正在尝试制作一个包含三个组件的安装包,安装在不同的位置:
-
XxxxBin.app应用,默认安装到
/Applications; -
Xxxx.bundle 插件包,默认安装到
/Library/Audio/Plug-Ins/VST/(并重命名为Xxxx.vst,使用安装后脚本很容易实现); - 一些资源文件,默认安装在
/Library/Company/Xxxx_resources/。
并且我希望允许用户在安装过程中更改每个组件的目标目录。
我注意到 PackageMaker 中有两层:choice 和 package。当您将应用程序/捆绑包/目录拖到 PackageMaker 中时,它将创建一个新的 choice 和一个新的 package。然而,choice 和 package 层都包含 Destination,这让我很困惑。此外,在派生自应用程序或捆绑包的包的组件页面中,有一个标记为“允许重定位”的复选框,这引入了进一步的混乱。
我未能找到有关这些选项的详细信息。经过多次尝试,我使用了以下布局和选项组合,非常接近我的目标:
- 三个 choice 和 package,每个都包含应用程序、捆绑包或资源目录。
- 在所有选择层中,用实际的默认安装路径填充目标条目,然后选中“允许备用卷”复选框;
- 在所有包层中,用
/填写Destination条目,并选中“允许自定义位置”复选框; - 在包层的所有组件页面中,取消选中所有允许重定位复选框。
然而,它仍然有一个非常奇怪的行为:应用程序被复制了两次,分别复制到它自己的目录,并覆盖了插件包的目录。如果您在已安装的捆绑包上“显示内容”,它将如下所示:
/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