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

macos - 安装 .pkg:确定正在更新的应用程序当前是否正在运行?

我正在使用出色的 Mac OS X“包”来生成安装一个 .pkg,并想知道如何构建一个 shell 脚本以确保正在更新的应用程序文件当前没有运行(这看起来很糟糕主意)。

0 投票
1 回答
95 浏览

macos - macOS 安装程序仅“显示文件”“文件列表不可用”

安装程序在文件菜单下有一个内置的文件浏览器。但它只显示“文件列表不可用”。

在安装程序日志中:

截屏:

macOS 安装程序

Install.pkg 的结构: Install.pkg 的结构

0 投票
1 回答
363 浏览

macos - 使用裸可执行文件创建 .pkg 安装程序

我可以使用 pkgbuild 和 productbuild 为应用程序创建体面的安装程序。但是,我需要创建一个安装裸可执行文件和启动守护程序的程序,但我碰壁了。

问题的症结似乎是 pkgbuild 组件列表中的 RootRelativeBundlePath 项。由于没有安装包,因此没有路径可以在那里工作,但我也不能省略 RootRelativeBundlePath。所以无法生成组件包。

我该怎么办?

0 投票
0 回答
423 浏览

macos - PackageKit:不会覆盖以前的版本?

由于某种未知原因,我的安装程序不会覆盖以前的版本。我电脑上安装的旧版本是0.916,新版本是0.92。这是安装程序日志的一部分...

里面还有一行写着:

不知道这里发生了什么。我不知道为什么它不会覆盖 0.92 而不是 0.916。

有人遇到过这个吗?

0 投票
0 回答
278 浏览

macos - InstallerJS获取pkg文件名

我的 PKG 文件名对于每个用户下载都是唯一的。Distribution.xml 文件中的 JS 是否可以访问 pkg 文件名或完整文件路径?

我知道安装前和安装后脚本可以访问以下环境变量

0 投票
0 回答
55 浏览

javascript - 在 javascript 网站上创建 .pkg 文件

我似乎无法找到一种方法将文件从我的 AWS S3 转换为 .pkg 文件在 javascript 网站上。这些文件将被转换并作为 pkg 上传回 AWS。有谁知道如何在线完成这一切,无论是服务器端还是使用javascript?谢谢!

0 投票
0 回答
88 浏览

macos - 什么时候在 MacOSX pkg 中确实调用了 postupgrade?

早上好,我正在阅读 MacOSX 中为我的应用程序创建 pkg 时使用的准备好的脚本。

特别是,我对如何确保使用升级后脚本有一些疑问。我到现在读到的是:从这里

postupgrade 脚本在文件安装后运行,如果已定义,则在 postflight 脚本之前运行。仅当先前已安装该组件时才运行此脚本。如果脚本没有返回零退出状态,安装程序将声明安装失败。

好的,那么升级完成后似乎 postupgrade 将自动运行。但是...从man pkgbuild, 部分--scripts scripts-path

将 scripts-path 的全部内容归档为包脚本。如果此目录包含名为 preinstall 和/或 postinstall 的脚本,这些将作为包的顶级脚本运行。如果你想为特定的 bundle 运行脚本,你必须在组件属性列表中指定它们;在组件属性列表中查看更多信息。只有在顶级或特定于组件的脚本调用它们时,才会使用 scripts-path 下的任何其他文件。

所以,看来我应该将它添加到 component.plist,因为他们没有说任何关于postupgrade. 但看起来很奇怪,我会放更具体的脚本,而不是postupgrade脚本。

阅读更多,我发现指的是this,其中写着:

为了确定一个包是否已经安装,Installer.app 正在查看以下目录的内容:/Library/Receipts。如果其中有一个名为 PackageName.pkg 的文件,则该 Package 已经安装,否则为第一次安装。

好吧,我的应用程序没有留下任何 pkg 文件,但是是的,它存在于 InstallHistory.plist 中。

好吧,最后的问题是:我应该在某个地方设置升级脚本吗,例如在 component.plist 文件中?最后一个链接似乎已过时,有什么变化吗?如何将 pkg 文件放入其中/Library/Receipts?或者更好的是,如何确定我的安装是否确实是安装而不是升级,反之亦然?

谢谢大家,有点迷糊。。。

0 投票
1 回答
1659 浏览

macos - 在不使用 xcode 的情况下使用 productbuild 对 Mac 应用程序进行签名和归档以在 Mac App Store 之外分发应用程序

我是 MAC 应用程序开发的新手,并且正在开发使用 Zoom Mac SDK 但该 SDK 不支持使用 Xcode 存档的项目,因此我需要使用缩放支持中心建议的其他工具进行存档。根据他们的回复,应用程序可以使用 pkgbuild/pkgutil/productbuild 存档,但我不知道为我的 Mac 应用程序创建存档/pkg/dmg 文件的确切步骤。

另外请让我知道我需要创建哪个文件扩展名才能从网站为用户下载我的应用程序。

我正在使用“开发人员 ID 应用程序”和“开发人员 ID 安装程序”证书来签署我的构建,但不知道如何在不使用 Xcode 的情况下创建构建,因为使用 Xcode 我收到第三方框架的错误,因为“代码对象未签名全部”。

感谢您的大力帮助。

0 投票
0 回答
293 浏览

macos - OSX pkg 卸载程序 - 是否可以更改标题栏中的“安装”文本?

我创建了一个单独的卸载程序来:

  • 停止服务
  • rm plist 文件
  • rm 数据目录
  • ...

问题:在标题栏中,它是“Install ...”,欢迎标题是“Welcome to ... installer”。

是否可以将标题栏更改为“卸载 ...”并将欢迎标题更改为“欢迎使用 ...卸载程序”?

在此处输入图像描述

0 投票
0 回答
183 浏览

c++ - 在 MacOS 中打包 Qt/C++ 应用程序后无法写入 ~/Library/Application Support

我在 ~/Library/Application Support (QStandardPaths::AppDataLocation[0]) 中编写我的应用程序日志,如果我从 Qt Creator 启动我的应用程序,一切顺利。使用pkgbuildproductbuild打包应用程序后,使用我的开发人员 ID 应用程序(用于 codesign)和开发人员 ID 安装程序(用于 productbuild)对应用程序进行签名,当我将其安装在我的机器上时,具有管理员权限,不会生成日志文件(目录树它是生成的)。我正在使用 std::ofstream 将 QByteArray 中的消息写入文件。另外,我正在使用qInstallMessageHandler

知道如何让它工作吗?我需要在productbuild 中向我的Distribution.xml添加一些内容吗?我需要在打包步骤中添加更多权利吗?

这是我正在使用的处理程序

这被称为消息出现在 QtCreator 执行中。

此外,只需添加该应用程序不是沙盒。

编辑:经过大量测试,我认为当应用程序开始双击应用程序图标时,没有调用 MessageHandler tracesOutputHandler 。