我们目前使用productbuild --component将我的mac安装程序构建为pkg文件(根据以下帖子:Mac app store productbuild).
这非常有效,但我还希望为此安装程序添加许可证文件.
使用packagemaker,您可以指定选项--resources [path_to_resources_file].如果将License.txt放在指定的资源文件夹中,则安装程序会神奇地包含许可证步骤.
虽然productbuild的手册页也描述了--resources选项,但实际上这似乎不适用于--component选项.它似乎完全忽略了这个选项.
根据productbuild手册页, - component选项显然只接受产品定义plist(我查看了plist选项,似乎没有应用于许可文件),组件,可选安装路径和输出路径.虽然--sign选项也有效.
有没有人知道在使用productbuild --component时是否有可能(如果是这样,如何)为安装程序包含许可文件?
提前致谢.
伊恩
我有一个项目依赖于现已弃用的PackageMaker工具来为OS X创建安装程序.我正在努力更新它以使用pkgbuild和productbuild.我正在尝试通过将--resources
标志传递给productbuild
包含背景图像的目录来向安装程序添加自定义背景.我没有从productbuild
命令中得到任何错误,但是当我在Pacifist中打开包时,我根本看不到我的资源.我尝试过引用背景图片distribution.xml
,但似乎并没有什么区别.我不知道接下来要尝试调试这个.
我正在尝试创建一个Mac安装程序包,pkgbuild
并且productbuild
可以选择将1个软件包安装到4个位置,具体取决于分发定义xml文件中列出的安装程序选项的结果.
不幸的是,我找不到一种自定义Distribution.xml
安装包不止一次的方法.
我能看到的唯一选择是捆绑4个相同的包,但具有单独的安装位置; 但这是不可取的,因为它会使我的安装程序不必要地大.
有没有其他方法来实现这种自定义行为?
我的产品安装程序使用pkgbuild和productbuild可以很好地工作。但是,现在我试图弄清楚如何使我的安装程序也可以充当卸载程序。通过修改我的distribution.xml文件,我可以为用户显示卸载选择,如下所示:
<choices-outline>
<line choice="install"/>
<line choice="uninstall"/>
</choices-outline>
<choice id="install" visible="true" title="Install" description="Installation description goes here">
<pkg-ref id="com.prosc.RemoteExecution.install.pkg">#installer.pkg</pkg-ref>
</choice>
<choice id="uninstall" visible="true" title="Uninstall" description="Uninstaller description goes here" start_selected="false">
<pkg-ref id="com.prosc.RemoteExecution.uninstall.pkg">#installer.pkg</pkg-ref>
</choice>
Run Code Online (Sandbox Code Playgroud)
但是,当他们选择卸载时,我需要安装后脚本以某种方式知道他们选择了哪种选择。我看不到安装后脚本知道的任何方式-环境变量中没有任何内容可以表明这一点,也没有包含在传递给我的脚本的参数中。
在我看来,我可以编写一个单独的卸载程序包,并使用其自己的单独的后安装脚本,然后将该程序包作为整个产品的一个组件包含在内,但这似乎需要大量额外的安装工作。
如果基于用户做出的安装选择存在细微的行为差异怎么办?我是否需要为每个选择单独制作包装组件?
有没有不需要额外组件包的好的解决方案,还是我应该单独制作单独的组件包以进行安装/卸载?
我想为Mac OS X构建一个包含4个子包的安装包.子包是使用pkgbuild构建的.最终的包使用product.xml构建,使用Distribution.xml进行欢迎和许可文本以及安装位置选择.
现在我想在安装成功后运行脚本.特别是在所有打包的收据都由安装程序写入之后.
据我所知,手册页和文档以及其他有用的链接我应该使用postflight脚本.不幸的是我无法让它发挥作用.我将它命名为postflight并使用--script选项添加到pkgbuild的子包中,但似乎pkgbuild不支持postflight脚本.当我将其命名为postinstall时,它会在收据写入之前运行.
我需要在写入收据后运行,因为我想使用pkgutil工具为XCode编写一个xcconfig文件,以构成其他软件包的安装位置的位置.
我已经尝试通过在扩展的pkg中添加Scripts /文件夹来使用expand-flatten hack,但是在我展平之后这似乎被忽略了.
有没有办法满足我的需求?(将我的包的选定安装位置写入子包的安装位置中的文件)
如果可能的话,我想避免使用已弃用的packagemaker工具,至少如果还有其他更好的方法.
提前致谢
我正在使用 pkgbuild 和 Productbuild 构建安装程序,并且我希望该过程的一部分涉及询问用户一些简单的问题。这些问题可以通过复选框(是/否)或小型单行文本输入字段来回答。
一旦提出这些问题,我想将它们提供给安装后脚本。
对于更多上下文,我的产品是一组命令行工具,将位于 /usr/local/X 中,其中 X 是我的产品的名称。然后,运行一个简单的安装后脚本来初始设置一些内容。pkgbuild 已经很好地处理了这个问题。我真正想要的是为安装后脚本提供我的问题的答案,也许在环境变量中,这样它就可以进行相应的设置。
我需要制作Mac OS app安装程序,它还会安装其他第三方软件包.
当尝试通过productbuild --synthesize添加它时,它告诉"ThirdPartyPackage.pkg是产品档案,而不是组件包".
那么,我该如何正确地将第三方产品安装程序插入到我的安装程序中?
我正在尝试构建一个有背景的 pkg。我正在研究 ElCapt。我成功地用背景图像构建了 pkg,它是这样的:
部分背景图像隐藏在欢迎说明下方。
如何使这个透明,以便我可以看到欢迎说明部分下方的图像隐藏部分?
我正在尝试从脚本构建一个mac包安装程序,我想运行postinstall和postflight脚本.我构建包的脚本如下所示:
pkgbuild --root MyRoot/MyApp.app --identifier com.myapp.MyApp --scripts Scripts --install-location /Applications/MyApp.app MyApp.pkg
productbuild --synthesize --package MyApp.pkg Distribution.xml
productbuild --distribution Distribution.xml --resources Resources --package-path . CompleteInstaller.pkg
Run Code Online (Sandbox Code Playgroud)
我已将postinstall脚本放在Scripts中,并且它正在成功执行.我遇到运行postflight脚本的问题.它放在Resources目录中,不会被执行.这还不足以指定它的路径吗?我找不到这个问题的答案,如果我错过了,我很抱歉.
PS:我的postflight脚本没有什么特别之处 - 现在它试图在主目录中创建一个文件:
#!/bin/sh
touch ~/file
exit 0
Run Code Online (Sandbox Code Playgroud) 我正在尝试<readme>
在包的Distribution.xml部分设置标记以包含可能包含图像的内容.现在我试过rtfd和pdf ; 对于rtfd,它表示由于权限不足而无法打开文件,并且pdf显示为纯文本.所以问题是:如何使用Distribution.xml包含可能包含图像的内容
我已经使用packages为 mac os 构建了一个安装程序。现在我想将其上传到应用商店。但苹果抱怨说安装程序应该使用 Xcode 或 Productbuild 构建。我想我将无法使用 Xcode,因为我的应用程序代码库是用 python 编写的。
我还有安装程序插件(注册和另外 1 个插件),它们是在 Objective C 中开发的。我还有在每个组件复制到用户计算机后运行的安装前和安装后脚本。
有什么方法可以将安装程序构建从 mac 软件包的 packagesbuild 移植到 Productbuild 吗?
我遇到了这个产品构建文档: https://www.unix.com/man-page/osx/1/productbuild/ ,但它没有讨论每个组件的安装后脚本。
productbuild ×11
macos ×10
pkgbuild ×7
installer ×4
packagemaker ×2
app-store ×1
cocoa ×1
deployment ×1
installation ×1
licensing ×1
xcode ×1