问题标签 [pkgbuild]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
241 浏览

javascript - 如何更改使用 pkgbuild/productbuild 构建的 OS X 安装程序中的安装路径?

我们有一个安装到自定义文件夹的应用程序,现在我们必须为应用程序扩展(插件)创建一个安装程序。
主机应用程序的安装程序是使用跨平台工具创建的,它允许用户选择安装文件夹,甚至允许在同一系统上安装多个版本。
主机应用程序不仅仅是一个“应用程序”,就像许多 Mac 程序一样,而是一个包含多个文件 + 一个“应用程序”的目录。

插件安装程序应该:
1. 基于 pkgbuild/productbuild,因为我们不想使用跨平台安装程序,因为它是基于 Java 的,我们遇到了麻烦
2. 使用 CFBundleIdentifier 查询所有已安装的主机应用程序并选择一个安装
3.将有效负载的内容安装到所选主机应用程序的目录

我设法找到了前两个要求的解决方案,但我不知道如何处理第三个要求。
是否有任何解决方案可以从 Distribution.xml 更改安装路径?
我玩过choice.customLocation 属性,但我没有设法从JavaScript 进行修改。

有什么“优雅”的解决方案吗?
谢谢。

0 投票
1 回答
930 浏览

macos - 添加组件时出现 pkgbuild 错误

我当前的工作目录(CWD)中有以下目录结构:

  • MyAppBundle/MyApp.app

  • MyAppBundle.plist

MyAppBundle.plist 包含以下内容:

当我从 CWD 运行以下命令时:

...我得到以下输出:

0 投票
0 回答
677 浏览

macos - 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 文件中,我有这个:

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

如何阻止它降级?

0 投票
1 回答
812 浏览

macos - 如何在 mac 上的 dmg/pkg 中包含安装程序依赖项

我有一个 mac 应用程序(例如 Sample.pkg 包含 Sample.app)以及一些 pkg 依赖项(例如 A.pkg 和 B.pkg )。每当用户运行dmg/product与这三个软件包捆绑在一起的存档时,A.pkg必须在安装B.pkg之前先运行Sample.pkg

有没有一种方法可以在打包 mac 应用程序时指定此依赖项,而无需用户手动检查并以正确的顺序安装它们?

0 投票
0 回答
827 浏览

python - Python 修改 .pkg 文件

我的 python 代码需要解压缩一个 .pkg 文件,在那里修改一些文件并再次打包。有什么成熟的python模块可以推荐吗?我看到有pyxar(xarfile),需要先在机器上安装xar。

我还有其他选择吗?

最后决定直接从python调用xar,实际上可以。但另一个问题是,包内payload.kg下的Scripts没有解包。它应该是一个目录,但仍然是一个文件。奇怪的是,文件 Scripts 显示为gzip compressed data, from Unix. 但是无论在mac还是linux上,我都无法使用gzip打开它。在 mac 上,我可以使用 tar -xf 打开它,但在 linux 上不能。有什么建议吗?

谢谢!

0 投票
0 回答
428 浏览

macos - 在 OSX 上为守护进程创建包安装程序

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

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

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

0 投票
1 回答
1292 浏览

macos - OSX - 将我的命令行二进制启动守护进程和依赖 dylibs 放在哪里

我有一个命令行应用程序(不是 .app 包),一个可执行文件。它从例如运行usr/bin/myapp。mac 中的所有用户都应该可以访问它。它是一个 LaunchDaemon 并以root用户身份运行。如果我把它放在里面,usr/bin它工作正常。

当用户安装应用程序时,pkgbuild将文件复制到/usr/binpostinstall脚本启动 LaunchDaemon。

该应用程序取决于nss库。所以现在我需要将 nss 二进制文件和 dylib 文件复制到某个usr/bin/lib/nss文件夹中。是否可以使用pkgbuildpreinstall脚本?由于pkgbuild --install-location设置为/usr/bin将复制到myapp那里,但是如何将 nss 文件夹复制到usr/lib

另一种选择是制作一个完整的文件夹结构/usr/bin/MyApp并将我的myapp二进制文件复制到那里并将文件保存nss/usr/bin/MyApp/nss文件夹中。但这是个好主意吗?

或者我应该将文件结构设置为/usr/local/MyApp?以 root 用户身份运行 myapp LaunchDaemon 的最佳位置是哪个? /usr/local还是usr/bin其他地方?

0 投票
1 回答
3759 浏览

linux - 在 Linux 上构建 OSX .pkg 文件

请问在ubuntu上构建.pkg文件的实用选项是什么?我正在尝试 xar,但生成的 .pkg 文件无法安装在 mac 上,出现“com.apple.installer.pagecontroller 错误 -1”而且我试图使用 munkipkg,但这取决于pkgbuildOS X。这可能吗在 linux 上有 pkg​​build 吗?或者任何人都可以提出一个最好的方法来做到这一点?

谢谢!

0 投票
1 回答
444 浏览

macos - pkgbuild 和移动的应用程序

我在 OS X 上使用 pkgbuild 和 productbuild 工具创建了一个应用程序安装程序。我创建的包将我的应用程序安装到 /Application 文件夹。现在,如果我使用 NSFileManager(使用另一个我的应用程序)将此应用程序移动到另一个位置,我的包会将其重新安装到新位置,但 /Application 将安装它。

这看起来像是一些文件路径缓存,我可以以某种方式“刷新现金”,以便我的 pkg 将应用程序安装到正确的位置吗?

我在 Mavericks 和 El Capitan 上注意到了这一点。我相信优胜美地也是如此。

0 投票
0 回答
370 浏览

macos - OSX pkgbuild:安装到备用卷时将包的 plist 放在启动磁盘中

我们正在使用 pkgbuild 为音频插件创建安装程序。它由几个包(VST、AU、内容、预设等)组成。

由于内容很大,我们希望允许用户将内容包安装到外部驱动器。我在 distribution.xml 中使用了适当的设置(customLocationAllowAlternateVolumes="Yes")。但是,当内容安装到这样的外部驱动器时,安装程​​序还会在该驱动器上的 /Library/Receipts 文件夹(它创建)中的外部驱动器上放置一个 .plist 和一个 .bom 文件(参见屏幕截图)。

此文件夹结构是在外部驱动器上创建的:

这是在外部驱动器上创建的

无论内容包安装在哪个驱动器上,如何实现这些文件都放在启动盘上?

这是 pkgbuild 脚本:

这是分发文件中的相关片段: