注意:这仅适用于OS X Installer程序包,提交到Mac App Store的程序包遵循不同的规则.
由于Mountain Lion的Gatekeeper,我终于不得不把我的PackageMaker构建脚本放在谷仓后面并拍摄它.PackageMaker已经从Xcode中删除并转移到"Xcode的辅助工具"中,所以希望它很快就会被遗忘.
现在的问题是我怎么用pkgbuild
,productbuild
和pkgutil
来代替它?
我使用pkgbuild productbuild来构建安装程序.但是,安装在OS X 10.12 Sierra上,安装完成后,我会看到"您是否要将安装程序移动到废纸篓?要将此包和磁盘映像保留在当前位置.请单击"保留".
我想禁用该表.怎么做?
有没有人有关于这种新行为的更多信息?
installer operating-system productbuild pkgbuild macos-sierra
我的Java应用程序有一个启动器,它是一个.app和一个与它捆绑在一起的帮助应用程序.
我正在尝试使用以下命令使用背景图像制作.pkg安装程序:
pkgbuild --root "./Temp" --identifier "com.company.id" --install-location "/Applications" --sign "signature" "temp.pkg"
productbuild --package-path "temp.pkg" --distribution "./Distribution.xml" --package-path "./Temp" --resources "./Resources" --sign "installer signature" "$FINAL_PKG"
Run Code Online (Sandbox Code Playgroud)
当我查看./Temp目录时,两个.app文件夹都存在,当我解构.pkg时:
pkgutil --expand "temp.pkg" "temp"
我看到.app文件夹,但有时从pkg安装时,其中一个.app文件夹不显示.它们似乎总是在第一次安装时出现,但是在多次安装和删除应用程序的机器上(如在测试和开发机器上),其中一个.app文件夹最终不会显示.我想知道这里会发生什么?
最初我们将帮助应用程序作为主应用程序放在一个单独的目录中,在这种情况下,帮助应用程序有时不会安装,但主应用程序总是会安装.接下来,我们尝试将帮助应用程序放在主应用程序中,然后这是第一次工作,但下次我尝试从安装程序安装主应用程序不在那里!
我正在尝试在Mac OS 10.8.4上为Java应用程序创建安装程序.该应用程序运行正常,我可以从zip文件中顺利安装它.我可以用productbuild或pkgbuild创建一个.pkg安装程序.我也可以成功安装任何一个安装程序.pkg文件,但由于两个打包程序都将数据目录及其下级文件和子目录的所有权从用户更改为root,因此应用程序无法正常运行.我将此数据目录安装在.app包的Resources目录中,并且在程序第一次执行时,它将数据目录移动到/ Users/user/Library/Application Support.我尝试使用-ownership preserve和--ownership保留 - 其他选项与pkgbuild无济于事.我能够正确安装和执行的唯一方法是通过zip文件,因为它只保留文件所有权.这是我正在使用的pkgbuild命令:
pkgbuild --ownership preserve --component ./myApp.app ./myApp-installer.pkg
我的问题是:
我如何强制pkgbuild兑现我的 - 所有权保留选项?
是否可以构建一个具有用户所有权并且发往用户区域的单独的仅数据包,并通过pkgbuild的--synthesize选项将其与可执行包合并?如果有,有人可以告诉我如何构建这样一个仅限数据的包吗?
我按照本教程打包我的Mac应用程序.
这些包分两步生成:
首先,我生成一个临时包pkgbuild
.它只包含二进制文件
pkgbuild --root ${ROOT} --scripts ${SCRIPTS} --identifier myapp \
--version ${VERSION} --install-location ${INSTALL_DIR} %PKG%
Run Code Online (Sandbox Code Playgroud)
其中%PKG%
是临时包文件名Distribution.xml
.
然后我生成一个包含前一个tmp包,一个Distribution.xml
,背景图像等的包productbuild
:
productbuild --distribution ${DIST_FILE} --package-path ${PKG_PATH} \
--resources ${RESOURCES} ~/myapp.pkg'
Run Code Online (Sandbox Code Playgroud)Distribution.xml
看起来像这样:
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<installer-gui-script minSpecVersion="1">
<title>MyApp</title>
<options hostArchitectures="x86_64"/>
<options customize="never" rootVolumeOnly="true"/>
<welcome file="Welcome.rtf"/>
<license file="license.rtf"/>
<background file="background.png" scaling="proportional" alignment="bottomleft"/>
<os-version min="10.6.6"/>
<options customize="never" require-scripts="false"/>
<product id="myapp" version="%VERSION%" />
<choices-outline>
<line choice="default">
<line choice="myapp"/>
</line>
</choices-outline>
<choice id="default"/>
<choice …
Run Code Online (Sandbox Code Playgroud) Apple 关于向Mac App Store提交应用程序的文档包含使用命令productbuild的示例,来自/ Developer/usr/bin /.
productbuild \
--component build/Release/Sample.app /Applications \
--sign "3rd Party Mac Developer Installer: Name1 Name2" \
--product product_definition.plist Sample.pkg
Run Code Online (Sandbox Code Playgroud)
当我在我的示例应用程序上运行此命令时,我收到错误:
productbuild:error:在"product_definition.plist"中找不到产品定义plist.
什么是product_definition.plist,它应该来自哪里,应该包含哪些内容,以及应该使用什么工具来创建这个plist?
我想在安装程序中禁用"更改安装位置..."按钮(下面的屏幕截图).我正在尝试使用macOSX 10.8上的pkgbuild和productbuild创建安装程序.首先,我使用pkgbuild创建两个.pkg文件.
pkgbuild --root myApp --component-plist myApp.plist --scripts appScripts --identifier com.myapp.coreapp --version 1.0.00 --install-location /Applications --ownership preserve
pkgbuild --root myBr --component-plist myBr.plist --scripts brScripts --identifier com.myapp.browser --version 1.0.00 --install-location /Library/Internet\ Plug-Ins --ownership preserve
Run Code Online (Sandbox Code Playgroud)
在上面的plists中,我使用的BundleIsRelocatable
是假的.
然后我使用productbuild来创建最终的安装程序包.
productbuild --distribution dist.xml --resources res inst.pkg
Run Code Online (Sandbox Code Playgroud)
在dist.xml,我已经尝试了所有组合domains
也rootVolumeOnly
,但我仍然不能禁用"更改安装位置..."按钮.
有人可以帮忙吗?非常感谢.
我有一个用 Qt 构建的 OSX 应用程序。它经过协同设计,打包适合 macstore,并已获得 Apple 批准,可以在 mac store 中销售。
尽管安装后,它会安装到打包过程中它所在的位置,而不是 /Applications。
或者,我正在创建该文件的 .dmg 包,我可以将其安装到 /Applications 中。
在构建过程结束时,我运行以下命令:
codesign --force --deep --verify MyApp.app/ --entitlements ${INSTDIR}/Entitlements.plist -s "3rd Party Mac Developer Application: Company Name"
productbuild --component MyApp.app /Applications --sign "3rd Party Mac Developer Installer: Company Name" MyApp.pkg
Run Code Online (Sandbox Code Playgroud)
其结果是 pkg,我尝试通过安装程序安装它:
$ sudo installer -store -pkg MyApp.pkg -target /
installer: Note: running installer as an admin user (instead of root) gives better Mac App Store fidelity
installer: MyApp.pkg has valid signature for …
Run Code Online (Sandbox Code Playgroud) 我正在productbuild
为 MacOS Mojave 创建 .pkg 安装程序。我已阅读Distribution.xml 文件的架构参考。我成功地使用它来包含自定义欢迎。因此,当我运行时,我知道我的资源路径被正确使用:
productbuild --resources ./res --sign "$PKG_SIGN_ID" --distribution Distribution.xml foo.pkg
但我似乎无法创建自定义背景图像。我尝试过各种 jpg 和 png 图像。
我已经阅读了这个问题和答案,我已经尝试过en.lproj
在我的资源目录中有和没有子目录。
我Distribution.xml
最终看起来像这样:
<?xml version="1.0" encoding="utf-8"?>
<installer-gui-script minSpecVersion="1">
<background file="background.jpg" mime-type="image/jpeg" scaling="tofit"/>
<welcome file="welcome.html"/>
<title>My App</title>
<pkg-ref id="com.foo.myapp"/>
<options customize="never" require-scripts="false"/>
<choices-outline>
<line choice="default">
<line choice="com.foo.myapp"/>
</line>
</choices-outline>
<choice id="default"/>
<choice id="com.foo.myapp" visible="false">
<pkg-ref id="com.foo.myapp"/>
</choice>
<pkg-ref id="com.foo.myapp" version="1.0" onConclusion="none">foo.pkg</pkg-ref>
</installer-gui-script>
Run Code Online (Sandbox Code Playgroud)
这不再可能与莫哈韦沙漠有关吗?
我正在尝试为 macOS (Monterey) 上的 CLI 创建一个 .pkg 安装程序。我遇到过pkgbuild
和productbuild
。
它们已经安装在我的 mac 上。
我在哪里可以阅读有关这些 CLI 功能的更多信息?(不仅仅是如何使用)。
两者有什么区别?
我从这个堆栈溢出线程中遇到了它们: Making macOS Installer Packages which are Developer ID ready
productbuild ×10
macos ×7
pkgbuild ×7
installer ×3
xcode ×3
macos-mojave ×1
macos-sierra ×1
package ×1
packagemaker ×1
packaging ×1
qt ×1