标签: pkgbuild

pkgbuild 与 Productbuild 之间有什么区别?

我正在尝试为 macOS (Monterey) 上的 CLI 创建一个 .pkg 安装程序。我遇到过pkgbuildproductbuild

它们已经安装在我的 mac 上。

我在哪里可以阅读有关这些 CLI 功能的更多信息?(不仅仅是如何使用)。

两者有什么区别?


我从这个堆栈溢出线程中遇到了它们: Making macOS Installer Packages which are Developer ID ready

macos xcode command-line-interface productbuild pkgbuild

7
推荐指数
1
解决办法
2130
查看次数

如何使用pkgbuild为$ HOME指定默认安装位置?

我正在将我们的安装程序从PackageMaker移植到pkgbuild,我正在尝试将默认安装位置设置为当前用户的主目录,并且仍允许用户在系统范围内安装.

在我的分发文件中,我有enable_currentUserHome ="true"和enable_localSystem ="true",它正确地允许用户"为这台计算机的所有用户安装"或"仅为我安装".但是,我希望默认情况下选择"仅为我安装".

pkgbuild有一个"--install-location"的命令行选项,手册页中指的是默认位置,但是没有提到如何指定主目录.我试过"〜"和"$ HOME"但没有运气.有一些我不知道的宏吗?

有没有人知道如何告诉pkgbuild默认安装在当前用户的主目录下?

提前致谢!

-Owen

macos installer pkgbuild

6
推荐指数
1
解决办法
7074
查看次数

Mac安装程序包 - 如何选择安装到多个位置

我正在尝试创建一个Mac安装程序包,pkgbuild并且productbuild可以选择将1个软件包安装到4个位置,具体取决于分发定义xml文件中列出的安装程序选项的结果.

不幸的是,我找不到一种自定义Distribution.xml安装包不止一次的方法.

我能看到的唯一选择是捆绑4个相同的包,但具有单独的安装位置; 但这是不可取的,因为它会使我的安装程序不必要地大.

有没有其他方法来实现这种自定义行为?

deployment productbuild pkgbuild

6
推荐指数
1
解决办法
694
查看次数

macOS Catalina Notarization:使用 pkg npm 模块创建的代码签名可执行文件时出现“严格验证失败”错误

我已使用pkg将 Node.js 脚本打包为可执行文件。随着 macOS Catalina 版本的发布,所有软件都应经过 Apple 公证。由于 Apple 只允许.dmg,.pkg.app文件进行分发。我使用pkgbuild创建 OS X 安装程序并尝试以下操作:

  • 公证 .pkg:它失败并出现错误:The binary is not signed.尽管它是代码签名的。
  • 首先对二进制文件进行代码签名:我尝试在公证之前首先对二进制文件(即使用pkg创建)进行代码签名。它也因错误而失败main executable failed strict validation

我在 GitHub 上发现了类似的pkg问题。我尝试了多个 npm 模块,包括nexeencloseJS ,但没有成功。

有没有其他选择,或者我应该将本机 Node.js 二进制文件与我的脚本捆绑到 pkg 安装程序中,以便轻松进行公证?

code-signing node.js pkgbuild notarize macos-catalina

6
推荐指数
0
解决办法
2088
查看次数

使用OS X产品版本的卸载程序

我的产品安装程序使用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)

但是,当他们选择卸载时,我需要安装后脚本以某种方式知道他们选择了哪种选择。我看不到安装后脚本知道的任何方式-环境变量中没有任何内容可以表明这一点,也没有包含在传递给我的脚本的参数中。

在我看来,我可以编写一个单独的卸载程序包,并使用其自己的单独的后安装脚本,然后将该程序包作为整个产品的一个组件包含在内,但这似乎需要大量额外的安装工作。

如果基于用户做出的安装选择存在细微的行为差异怎么办?我是否需要为每个选择单独制作包装组件?

有没有不需要额外组件包的好的解决方案,还是我应该单独制作单独的组件包以进行安装/卸载?

macos productbuild pkgbuild

5
推荐指数
0
解决办法
993
查看次数

如何在 OSX .pkg 中设置背景图像?

我正在为我的 OSX 应用程序创建一个 .pkg 安装程序,但我无法弄清楚如何设置背景图像。

我在我的构建脚本中创建我的安装程序,如下所示:

pkgbuild --root $APP_FOLDER --identifier "com.company.product" $FINAL_PKG
Run Code Online (Sandbox Code Playgroud)

这很好用,但我无法在手册页中找到有关设置背景图像的任何信息。我见过具有自定义背景图像的软件包安装程序,如何设置它?

编辑:

这是具有自定义背景的软件包安装程序的屏幕截图:

在此处输入图片说明

macos installation package pkgbuild

5
推荐指数
1
解决办法
3316
查看次数

如何在使用 pkgbuild/productbuild 构建的 OS X 安装程序中询问用户问题?

我正在使用 pkgbuild 和 Productbuild 构建安装程序,并且我希望该过程的一部分涉及询问用户一些简单的问题。这些问题可以通过复选框(是/否)或小型单行文本输入字段来回答。

一旦提出这些问题,我想将它们提供给安装后脚本。

对于更多上下文,我的产品是一组命令行工具,将位于 /usr/local/X 中,其中 X 是我的产品的名称。然后,运行一个简单的安装后脚本来初始设置一些内容。pkgbuild 已经很好地处理了这个问题。我真正想要的是为安装后脚本提供我的问题的答案,也许在环境变量中,这样它就可以进行相应的设置。

macos productbuild pkgbuild

5
推荐指数
1
解决办法
766
查看次数

pkgbuild 允许降级

我有以下两个 .pkg 文件:

  • MyApp-v1_3_0.pkg
  • MyApp-v1_2_0.pkg

分别使用以下两个命令构建:

  • pkgbuild --identifier <my identifier> --version 1.3.0 --root ./MyAppBundle --install-location '/Applications/MyApp test' --component-plist MyAppBundle.plist MyApp-v1_3_0.pkg
  • pkgbuild --identifier <my identifier> --version 1.2.0 --root ./MyAppBundle --install-location '/Applications/MyApp test' --component-plist MyAppBundle.plist MyApp-v1_2_0.pkg

在 MyAppBundle.plist 文件中,我有这个:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<array>
    <dict>
        <key>BundleHasStrictIdentifier</key>
        <true/>
        <key>BundleIsRelocatable</key>
        <true/>
        <key>BundleIsVersionChecked</key>
        <true/>
        <key>BundleOverwriteAction</key>
        <string>upgrade</string>
        <key>RootRelativeBundlePath</key>
        <string>MyApp.app</string>
    </dict>
</array>
</plist>
Run Code Online (Sandbox Code Playgroud)

如您所见BundleIsVersionChecked,设置为 true,但是当我在 MyApp-v1_3_0.pkg 之后运行 MyApp-v1_2_0.pkg 时,它很高兴地降级了。

如何阻止它降级?

macos pkgbuild

5
推荐指数
0
解决办法
631
查看次数

为 OSX 上的守护进程创建包安装程序

我正在将守护进程从 Linux 移植到 OSX。守护进程本身是用 C# 编写的,并用 Mono 执行。我正在尝试为安装到目录“/Library/MyAppSuite/MyDaemon”中的守护程序创建一个安装程序包,并包含典型的 bin、lib 等目录。然后将符号链接安装到 /Library/LaunchDaemons 以使其在启动时启动。在 pkgbuild 步骤中:

pkgbuild --root /tmp/MyDaemonComponent.dst --component-plist MyDaemonComponent.plist MyDaemonComponent.pkg --install-location /Library/MyAppSuite/MyDaemon
Run Code Online (Sandbox Code Playgroud)

我收到错误消息“不是有效的捆绑包”。

我如何创建包,以便它安装到正确的目录中并运行安装后脚本?拥有安装向导(不允许更改安装位置)也很好。

macos mono pkgbuild

5
推荐指数
0
解决办法
413
查看次数

OSX PKG 安装程序 - 部分背景图像被隐藏

我正在尝试构建一个有背景的 pkg。我正在研究 ElCapt。我成功地用背景图像构建了 pkg,它是这样的:

在此处输入图片说明

部分背景图像隐藏在欢迎说明下方。

如何使这个透明,以便我可以看到欢迎说明部分下方的图像隐藏部分?

macos installation background-image productbuild pkgbuild

5
推荐指数
1
解决办法
603
查看次数