在 PackageMaker 中设置可修改安装路径的正确方法是什么?
What is the proper way to set modifiable install path in 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/directory 拖入 PackageMaker 时,它将创建一个新的 choice 和一个新的 package。然而,choice和package层都包含Destination,这让我很困惑。此外,在 Components 页面中 packages 派生自 app 或 bundle,有一个标记为 "Allow Relocation" 的复选框,这引起了进一步的混乱。
我未能找到有关这些选项的详细信息。经过多次尝试,我使用了以下布局和选项组合,非常接近我的目标:
- 三个选择和包,每个包含应用程序、包或资源目录。
- 在所有 choice 层中,用实际的默认安装路径填充 Destination 条目,select "Allow alternate volume"复选框;
- 在所有 package 层中,用
/
填充 Destination 条目,select "Allow custom location"复选框;
- 在组件页面中包层中,deselect所有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 中。应用程序和插件的包标识符均为空。在我为它们分配不同的值后,一切正常。
首先,我说的是 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/directory 拖入 PackageMaker 时,它将创建一个新的 choice 和一个新的 package。然而,choice和package层都包含Destination,这让我很困惑。此外,在 Components 页面中 packages 派生自 app 或 bundle,有一个标记为 "Allow Relocation" 的复选框,这引起了进一步的混乱。
我未能找到有关这些选项的详细信息。经过多次尝试,我使用了以下布局和选项组合,非常接近我的目标:
- 三个选择和包,每个包含应用程序、包或资源目录。
- 在所有 choice 层中,用实际的默认安装路径填充 Destination 条目,select "Allow alternate volume"复选框;
- 在所有 package 层中,用
/
填充 Destination 条目,select "Allow custom location"复选框; - 在组件页面中包层中,deselect所有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 中。应用程序和插件的包标识符均为空。在我为它们分配不同的值后,一切正常。