问题标签 [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.
xcode - 制作已准备好开发人员 ID 的 macOS 安装程序包
注意:这仅适用于OS X 安装程序包,提交到Mac App Store的包遵循不同的规则。
由于 Mountain Lion 的Gatekeeper,我最终不得不将我的PackageMaker构建脚本带到谷仓后面并拍摄它。PackageMaker 已从 Xcode 中删除并移至“Xcode 辅助工具”,因此希望它很快就会被遗忘。
问题是如何使用pkgbuild
,productbuild
和pkgutil
替换它?
macos - 将 PackageMaker 命令行构建安装程序移植到 pkgbuild
我一直在尝试将 Mac PackageMaker命令行构建移植到 pkgbuild 和 productbuild 但我被卡住了。不幸的是,除了这篇StackOverflow 帖子以及pkgbuild和productbuild手册页 之外,我还没有找到任何记录这些新程序如何工作的任何内容。
这是我的问题。我创建了一个根安装目录,其中包含以下文件:
下面的命令行调用非常适合 PackageMaker。它创建了一个安装程序,安装了上述所有文件。
现在我正在尝试用 pkgbuild 写这个并且遇到了一个主要问题。我使用以下调用:
此命令构建一个安装程序,将 MyProgram.framework 目录复制到 /Library/Frameworks。但是,它不会将 MyProgram.app 文件安装到 /Applications 目录中。当我查看安装程序日志时,我看到以下消息:
Applications/MyProgram.app 重定位到 /some_path/Applications/MyProgram.app
谁能解释一下为什么没有像 PackageMaker 那样将 MyProgram.app 文件添加到 /Applications 目录中?
macos - 如何使用 pkgbuild 为 $HOME 指定默认安装位置?
我正在将我们的安装程序从 PackageMaker 移植到 pkgbuild 并尝试将默认安装位置设置为当前用户的主目录,并且仍然允许用户在系统范围内安装。
在我的分发文件中,我有 enable_currentUserHome="true" 和 enable_localSystem="true" 正确地允许用户“为这台计算机的所有用户安装”或“仅为我安装”。但是,我希望默认选择“仅为我安装”。
pkgbuild 有一个用于“--install-location”的命令行选项,手册页说它指定了默认位置,但没有提到如何指定主目录。我试过“~”和“$HOME”但没有运气。有什么我不知道的宏吗?
有谁知道如何告诉 pkgbuild 默认安装在当前用户的主目录下?
提前致谢!
-欧文
macos - 使用 pkgbuild 创建包时出现未知错误
我遵循了几个教程——它们似乎都说了同样的话——关于如何使用 OS X 系统提供的pkgbuild
工具创建可部署的平面包 (.pkg)。包总是生成得很好。但是,他们确实不想安装。
在提示更高权限后,运行图形 Apple 安装程序或命令行界面installer
会提前中止安装,并给出一般的“未知错误”。
经过仔细调查几小时后,我发现我也无法安装其他软件包。甚至没有来自 OS X App Store 的更新和新安装。为什么我不能安装我自己的或任何其他软件包?发生了什么事?
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>
元素似乎没有起到作用......
xcode - 如何使用 pkgbuild 在 Xcode 中创建 kext 安装程序
我了解 PackageMaker 现在已弃用。我们现在应该使用 pkgbuild/productbuild。
但是,我似乎找不到为 kext 创建安装程序的示例。我希望将包构建为我的 kext Xcode 项目构建步骤的一部分。所以任何 bash/脚本文件都会很棒。
macos - 为卸载程序使用 OS X 产品构建
我的产品安装程序使用 pkgbuild 和 productbuild 运行良好。但是,现在我正试图弄清楚如何使我的安装程序也可以用作卸载程序。我可以通过修改我的 distribution.xml 文件为用户显示卸载选择,如下所示:
但是当他们选择卸载时,我需要我的安装后脚本以某种方式知道他们选择了哪个选项。我看不到安装后脚本有任何方法知道这一点 - 环境变量中没有任何内容可以表明这一点,也没有包含在传递给我的脚本的参数中。
我突然想到,我可以编写一个单独的卸载包,使用它自己的单独的安装后脚本,然后将它作为一个组件包含在我的整个产品中,但这似乎是很多额外的设置工作。
如果基于用户做出的安装选择存在细微的行为差异怎么办?我需要为每个选择制作一个单独的包组件吗?
是否有一个不需要额外组件包的好解决方案,或者我应该只制作单独的组件包以进行安装/卸载?
macos - 如何在 Mac 上使用 pkgbuild 和 productbuild 运行 postflight 脚本构建安装包
我想为 Mac OS X 构建一个包含 4 个子包的安装包。子包是用 pkgbuild 构建的。最终的包是用 productbuild 构建的,使用 Distribution.xml 用于欢迎和许可文本以及安装位置选择。
现在我想在安装成功后运行一个脚本。特别是在所有打包的收据都由安装人员写好之后。
据我了解手册页和文档以及其他有用的链接,我应该为此使用 postflight 脚本。不幸的是,我无法让它工作。我将它命名为 postflight 并使用 --script 选项将其添加到带有 pkgbuild 的子包中,但似乎 pkgbuild 不支持 postflight 脚本。当我将它命名为 postinstall 时,它会运行,但不幸的是在写收据之前。
我需要在写完收据后运行,因为我想使用 pkgutil 工具为 XCode 编写一个 xcconfig 文件,其中包含其他软件包安装位置的位置。
我已经尝试通过将 Scripts/ 文件夹添加到扩展的 pkg 来使用 expand-flatten hack,但是在我展平它之后似乎被忽略了。
有没有办法满足我的需求?(将我的包的选定安装位置写入子包安装位置的文件中)
如果可能的话,我想避免使用已弃用的 packagemaker 工具,至少如果有另一种更好的方法的话。
提前致谢
objective-c - pkgbuild postinstall 脚本在其他人的 Mac 上导致“安装失败”
当我将安装后脚本附加到 pkg 时,我的自定义安装程序出现问题。在我的计算机上,安装工作得很好,但在其他用户的系统上安装了 .app,但安装后脚本在没有执行的情况下失败。
如果我删除--scripts
pkgbuild 上的参数,安装程序不会产生任何问题。如果我添加它(即使postinstall
脚本为空),则会显示“安装失败”消息。不产生日志。
pkg 是使用类似于以下的脚本构建的:
在我的系统上,应用程序安装到 /Applications 中,安装后脚本运行并完成它的业务。在其他系统上,postinstall 似乎根本没有执行。
它已经在 OSX 10.8 和 10.7 上进行了测试,并且都遇到了同样的问题。安装后脚本在所有系统上独立测试(./postinstall
在终端中使用)并且可以工作。
脚本如下所示:
什么可能导致此问题?
macos - 制作 OS X Web 安装程序包
我有一个使用“Packages”实现的安装程序,其中包含有效负载,在运行一些插件和安装后脚本后,它成功安装了产品。
相同的软件包也用于进行更新,因为我们在后台以 root 权限运行它,它会覆盖当前/旧的安装文件。
我们现在需要制作一个轻量级安装程序,在 Web 位置中包含要下载和安装的组件(产品内的不同包)。
据我所知,这在其他系统中是可能的,例如带有“Web 类型版本”的 Windows/InstallShield,我想知道这在 OS X 中是否可行。否则,我将从头开始实现它(包管理,下载, 软件包版本比较以进行选择性更新、权限升级等)。