问题标签 [productbuild]

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 投票
1 回答
1641 浏览

macos - Unity OSX Standalone Player 不存储本地数据

我正在使用 Unity 3.5,试图为我的应用程序制作一个独立的 OSX 播放器。一切都很顺利,直到我使用 productbuild 从中制作了一个 pkg。

我的 productbuild 行的语法如下:

productbuild --component ProjectName.app "/Applications" --sign "$signingid" ProjectName.pkg

尽管这最初似乎有效,并且在请求超级用户的许可后生成了一个似乎可以正确安装应用程序的 pkg 文件,但是当我运行已安装的应用程序时,我发现它没有保留我的保存数据。Application.datapath显然,在这种情况下设置为“/Applications/ProjectName.app/Contents/”,并且不可全局写入。

据我所知,我有两个可能的解决方案:第一个是找到某种方法来确保在我的应用程序开始时它Application.datapath 是可写的。但是,我不知道该怎么做。我能看到的唯一其他解决方案是对我的应用程序进行所有必要的更改,使其不再假定它Application.datapath是可写的,并且我需要建立另一个位置来保存我的持久数据。如果我采用后一种方法,我还需要知道 Unity 是否提供了一种工具来获取可以存储此类数据的目录,因为我目前不知道。

如果除了我上面概述的两种方法之外还有其他方法,我绝对愿意接受替代方案,但如果有人可以帮助我完成我需要知道的以完成上述任何一种方法,我会在这方面同样感激也是。

提前感谢任何人都可以提供的任何帮助。

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 投票
3 回答
1026 浏览

macos - 带有包含图像的自述文件的 Mac OS 安装程序包

我正在尝试<readme>在包的 Distribution.xml 部分中设置标签以包含可能包含图像的内容。现在我已经尝试过rtfdpdf;对于rtfd,由于缺少权限,它无法打开文件,并且pdf显示为纯文本。所以问题是:如何在 Distribution.xml 中使用可能包含图像的东西

0 投票
1 回答
232 浏览

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

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

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

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

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

0 投票
3 回答
4026 浏览

macos - 在使用 productbuild 创建的安装程序中禁用“更改安装位置...”按钮

我想在安装程序中禁用“更改安装位置...”按钮(如下截图)。我正在尝试在 macOSX 10.8 上使用 pkgbuild 和 productbuild 创建安装程序。首先,我正在使用 pkgbuild 创建两个 .pkg 文件。

在上面的 plists 中,我使用BundleIsRelocatableas false

然后我使用 productbuild 创建最终的安装程序包。

在 dist.xml 中,我已经尝试了所有的组合以及domainsrootVolumeOnly但我仍然无法禁用“更改安装位置...”按钮。

有人可以帮忙吗?非常感谢。

在此处输入图像描述

0 投票
1 回答
3329 浏览

java - productbuild --distribution : 无法加载包 xxx.pkg

我正在尝试使用 productbuild 命令打包应用程序以创建一个包含许可证文件的 pkg 文件。这是我的做法:

我总是收到以下警告:

productbuild:警告:无法加载包 ./tamaggoibi.pkg

如果我双击第一个创建的包安装成功完成。如果我双击另一个,什么都不会发生。

我只是无法弄清楚第一个使其无法加载的包有什么问题。

这是 distribution.xml 文件:

0 投票
1 回答
838 浏览

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

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

不幸的是,我找不到一种方法来自定义Distribution.xml多次安装软件包。

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

还有另一种实现这种自定义行为的方法吗?

0 投票
1 回答
1153 浏览

xcode - 如何从 pkgbuild / productbuild 正确使用“默认写入”?

我正在构建一个安装程序包

我想在安装后设置一些用户默认值。所以我做了一个postinstall脚本:

但是,这不起作用 - 设置被写入/var/root/Library/Preferences,并且只能由sudo defaults read.

所以我尝试了这个:

现在它们被写入正确的位置,但权限错误 -stat显示 plist 文件上的权限是-rw------- 1 root wheel,并且defaults read无法访问它们。我怎样才能让它正常工作?

0 投票
1 回答
1874 浏览

xcode - 通过 productbuild 和 pkgbuild 修改文件所有权

我正在尝试为 Mac OS 10.8.4 上的 Java 应用程序创建安装程序。该应用程序运行良好,我可以毫不费力地从 zip 文件中安装它。我可以使用 productbuild 或 pkgbuild 创建一个 .pkg 安装程序。我也可以成功安装任一安装程序 .pkg 文件,但是由于两个打包程序都将数据目录及其从属文件和子目录的所有权从用户更改为 root,因此该应用程序无法正常运行。我将此数据目录安装在 .app 包的 Resources 目录中,程序第一次执行时,它会将数据目录移动到 /Users/user/Library/Application Support。我尝试使用 pkgbuild 的 --ownership preserve 和 --ownership preserve-other 选项无济于事。我能够正确安装和执行的唯一方法是通过 zip 文件,因为它只留下文件所有权。这是我正在使用的 pkgbuild 命令:

pkgbuild --ownership 保留 --component ./myApp.app ./myApp-installer.pkg

我的问题是:

  1. 如何强制 pkgbuild 遵守我的 --ownership 保留选项?

  2. 是否可以构建一个具有用户所有权并用于用户区域的单独的仅数据包,并通过 pkgbuild 的 --synthesize 选项将其与可执行包合并?如果是的话,有人可以告诉我如何构建这样一个仅数据包吗?

0 投票
1 回答
4543 浏览

macos - 制作从 Mountain Lion 到 Lion 或 Snow leopard 的 OS X 安装程序包

我正在按照教程打包我的 Mac 应用程序。

包分两步生成:

  1. 首先,我使用pkgbuild. 它只包含二进制文件

    %PKG%的临时包文件名在哪里Distribution.xml

  2. 然后我用以前的 tmp 包、a Distribution.xml、背景图像等生成一个包productbuild

    /li>

Distribution.xml看起来像这样:

如果该软件包在与创建它的操作系统版本相同的机器上执行 - 在这种情况下为 Mountain Lion - 但它会在早期版本中引发“无法在这台计算机上安装”错误;日志显示“安装检查失败。” 信息。

但是,临时包安装在 Lion 和 Snow Leopard 上运行良好。不知何故productbuild限制了应用程序的安装位置。我试过设置,Distribution.xml但结果是一样的。