问题标签 [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 投票
5 回答
170146 浏览

xcode - 制作已准备好开发人员 ID 的 macOS 安装程序包

注意:这仅适用于OS X 安装程序包,提交到Mac App Store的包遵循不同的规则。

由于 Mountain Lion 的Gatekeeper,我最终不得不将我的PackageMaker构建脚本带到谷仓后面并拍摄它。PackageMaker 已从 Xcode 中删除并移至“Xcode 辅助工具”,因此希望它很快就会被遗忘。

问题是如何使用pkgbuild,productbuildpkgutil替换它?

0 投票
4 回答
7218 浏览

macos - 将 PackageMaker 命令行构建安装程序移植到 pkgbuild

我一直在尝试将 Mac PackageMaker命令行构建移植到 pkgbuild 和 productbuild 但我被卡住了。不幸的是,除了这篇StackOverflow 帖子以及pkgbuildproductbuild手册页 之外,我还没有找到任何记录这些新程序如何工作的任何内容。

这是我的问题。我创建了一个根安装目录,其中包含以下文件:

下面的命令行调用非常适合 PackageMaker。它创建了一个安装程序,安装了上述所有文件。

现在我正在尝试用 pkgbuild 写这个并且遇到了一个主要问题。我使用以下调用:

此命令构建一个安装程序,将 MyProgram.framework 目录复制到 /Library/Frameworks。但是,它不会将 MyProgram.app 文件安装到 /Applications 目录中。当我查看安装程序日志时,我看到以下消息:

Applications/MyProgram.app 重定位到 /some_path/Applications/MyProgram.app

谁能解释一下为什么没有像 PackageMaker 那样将 MyProgram.app 文件添加到 /Applications 目录中?

0 投票
2 回答
10510 浏览

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

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

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

pkgbuild 有一个用于“--install-location”的命令行选项,手册页说它指定了默认位置,但没有提到如何指定主目录。我试过“~”和“$HOME”但没有运气。有什么我不知道的宏吗?

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

提前致谢!

-欧文

0 投票
1 回答
271 浏览

macos - 使用 pkgbuild 创建包时出现未知错误

我遵循了几个教程——它们似乎都说了同样的话——关于如何使用 OS X 系统提供的pkgbuild工具创建可部署的平面包 (.pkg)。包总是生成得很好。但是,他们确实不想安装。

在提示更高权限后,运行图形 Apple 安装程序或命令行界面installer会提前中止安装,并给出一般的“未知错误”。

经过仔细调查几小时后,我发现我也无法安装其他软件包。甚至没有来自 OS X App Store 的更新和新安装。为什么我不能安装我自己的或任何其他软件包?发生了什么事?

0 投票
3 回答
1158 浏览

macos - 如何在我的 OS X 安装程序包中禁用备用卷的选择?

我正在为 OS X 准备一个安装程序包,但我不知道如何禁用询问用户要安装到哪个卷的屏幕。我希望它在/没有提示的情况下安装。

这是我构建软件包的方式:

pkgbuild--root build/staging/ --identifier xxxx --scripts InstallerOSX/resources/ --scripts InstallerOSX/scripts/ ${OBJROOT}/AgentPayload.pkg

产品构建--distribution InstallerOSX/distribution.dist --package-path ${OBJROOT} --resources InstallerOSX/resources/ ${BUILT_PRODUCTS_DIR}/AgentInstaller.pkg

这是我的分发文件

<domains>元素似乎没有起到作用......

0 投票
1 回答
2836 浏览

xcode - 如何使用 pkgbuild 在 Xcode 中创建 kext 安装程序

我了解 PackageMaker 现在已弃用。我们现在应该使用 pkgbuild/productbuild。

但是,我似乎找不到为 kext 创建安装程序的示例。我希望将包构建为我的 kext Xcode 项目构建步骤的一部分。所以任何 bash/脚本文件都会很棒。

0 投票
0 回答
1245 浏览

macos - 为卸载程序使用 OS X 产品构建

我的产品安装程序使用 pkgbuild 和 productbuild 运行良好。但是,现在我正试图弄清楚如何使我的安装程序也可以用作卸载程序。我可以通过修改我的 distribution.xml 文件为用户显示卸载选择,如下所示:

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

我突然想到,我可以编写一个单独的卸载包,使用它自己的单独的安装后脚本,然后将它作为一个组件包含在我的整个产品中,但这似乎是很多额外的设置工作。

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

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

0 投票
1 回答
4398 浏览

macos - 如何在 Mac 上使用 pkgbuild 和 productbuild 运行 postflight 脚本构建安装包

我想为 Mac OS X 构建一个包含 4 个子包的安装包。子包是用 pkgbuild 构建的。最终的包是用 productbuild 构建的,使用 Distribution.xml 用于欢迎和许可文本以及安装位置选择。

现在我想在安装成功后运行一个脚本。特别是在所有打包的收据都由安装人员写好之后。

据我了解手册页和文档以及其他有用的链接,我应该为此使用 postflight 脚本。不幸的是,我无法让它工作。我将它命名为 postflight 并使用 --script 选项将其添加到带有 pkg​​build 的子包中,但似乎 pkgbuild 不支持 postflight 脚本。当我将它命名为 postinstall 时,它会运行,但不幸的是在写收据之前。

我需要在写完收据后运行,因为我想使用 pkgutil 工具为 XCode 编写一个 xcconfig 文件,其中包含其他软件包安装位置的位置。

我已经尝试通过将 Scripts/ 文件夹添加到扩展的 pkg 来使用 expand-flatten hack,但是在我展平它之后似乎被忽略了。

有没有办法满足我的需求?(将我的包的选定安装位置写入子包安装位置的文件中)

如果可能的话,我想避免使用已弃用的 packagemaker 工具,至少如果有另一种更好的方法的话。

提前致谢

0 投票
2 回答
6233 浏览

objective-c - pkgbuild postinstall 脚本在其他人的 Mac 上导致“安装失败”

当我将安装后脚本附加到 pkg 时,我的自定义安装程序出现问题。在我的计算机上,安装工作得很好,但在其他用户的系统上安装了 .app,但安装后脚本在没有执行的情况下失败。

如果我删除--scriptspkgbuild 上的参数,安装程序不会产生任何问题。如果我添加它(即使postinstall脚本为空),则会显示“安装失败”消息。不产生日志。

pkg 是使用类似于以下的脚本构建的:

在我的系统上,应用程序安装到 /Applications 中,安装后脚本运行并完成它的业务。在其他系统上,postinstall 似乎根本没有执行。

它已经在 OSX 10.8 和 10.7 上进行了测试,并且都遇到了同样的问题。安装后脚本在所有系统上独立测试(./postinstall在终端中使用)并且可以工作。

脚本如下所示:

什么可能导致此问题?

0 投票
1 回答
232 浏览

macos - 制作 OS X Web 安装程序包

我有一个使用“Packages”实现的安装程序,其中包含有效负载,在运行一些插件和安装后脚本后,它成功安装了产品。

相同的软件包也用于进行更新,因为我们在后台以 root 权限运行它,它会覆盖当前/旧的安装文件。

我们现在需要制作一个轻量级安装程序,在 Web 位置中包含要下载和安装的组件(产品内的不同包)。

据我所知,这在其他系统中是可能的,例如带有“Web 类型版本”的 Windows/InstallShield,我想知道这在 OS X 中是否可行。否则,我将从头开始实现它(包管理,下载, 软件包版本比较以进行选择性更新、权限升级等)。