问题标签 [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 回答
1673 浏览

xcode - 上传到 Mac App Store 时出错:ITMS-90239

首先让我说我知道有无数这样的问题,但我相信我已经检查了前面问题中的所有原因,仍然有问题。

我的应用程序正在使用Qt,所以我的提交过程没有通过Xcode。在过去,我提交申请没有太多麻烦。

这是我的codesign命令:

这似乎有效,如果我codesign用来验证我得到:

接下来,我使用productbuild生成我的.pkg文件以通过Application Loader.

请注意,我在两个命令中都使用了类型证书,3rd Party Mac Developer并且我正在使用Application证书codesignInstaller.productbuild

当我提交MyApp.pkg通过iTunesConnect时,ApplicationLoader 3.1我得到:

错误 ITMS-90239:“无效签名。代码对象根本没有签名。路径 [MyApp.app/Contents/MacOS/MyApp] 处的二进制文件包含无效签名。确保您已使用分发证书对应用程序进行签名,而不是临时证书或开发证书。

显然我的代码对象是签名的,所以问题一定是它认为我正在使用ad hocdevelopment证书,但正如你从我使用的命令中看到的那样,事实并非如此。

有任何想法吗?

0 投票
1 回答
1167 浏览

macos - 查看使用 productbuild 创建的包内容

我使用productbuild实用程序创建了一个 pkg 文件,我想查看它的内容。我怎样才能做到这一点?

我在MacOS 10.9.5下。

0 投票
1 回答
791 浏览

macos - osx 安装脚本 - 检测 firefox 是否正在运行并重新启动提示

我正在为我的应用程序创建一个命令行工具。它使用pkgbuildproductbuild创建包。它是一个launchdaemon二进制文件。我有preinstallpostinstall脚本。

安装后,可能在postinstall脚本中,我需要检测 Firefox 是否正在运行,然后提示用户他需要重新启动 Firefox。有可能这样做吗?如何?

脚本的一些摘录,它是安装后脚本的一部分。

0 投票
1 回答
1763 浏览

xcode - 从 Mac App bundle 访问 /Library/Application Support 的权限

我有一个应用程序包(如果相关,则使用 Unity 3d 构建),我可以使用 productbuild 创建一个 .pkg 安装程序并在 App Store 上分发而不会出现问题。但是,该应用程序会下载并缓存大量媒体,并且有一些可选配置文件需要在机器上的所有用户之间共享。根据Apple 的文档,配置文件可能应该放在 /Library/Application Support 目录中,而媒体应该放在 /Library/Caches 中。我已经制作了该应用程序的修改版本,它使用这些目录而不是沙盒应用程序可以访问的目录,但它没有 /Library 目录的权限,除非我以 root 身份运行该应用程序,这不是现实的选择。

我已经在谷歌搜索了几个小时,但我似乎找不到任何关于创建这样一个安装程序的信息。我确实读过这个答案,它有一个安装程序的屏幕截图,可以选择为所有用户安装,但要么我错过了一些启用该选项的选项,要么该屏幕截图刚刚过时,因为我似乎无法创建 .pkg这给了我这个选择。

所以我想我的问题归结为:我如何打包我的应用程序以便它可以为所有用户安装,并有权读取和写入 /Library/Application Support/{app name},或者是否有另一种首选方式在同一台机器上的多个用户之间共享配置文件和/或媒体?

0 投票
1 回答
444 浏览

macos - pkgbuild 和移动的应用程序

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

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

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

0 投票
1 回答
1145 浏览

macos - 使用 Application Loader 上传调试符号

我正在从命令行构建和打包一个 mac 商店应用程序。这会产生一个 .dSYM 文件,我使用 dsymutil 从应用程序内的二进制文件中提取,然后我们对 .app 进行代码签名,然后使用 productbuild 将其打包。

将此 .pkg 传递给我们的团队,它会成功安装,并被 Application Loader 的预检查接受,并出现在 iTunes 连接构建列表中。

问题是在 iTunes 中的构建详细信息中连接“包含符号”为“否”。

使用 Application Loader 似乎没有任何选项可以上传 .dSYM 调试符号。

那么,关于我们如何将“包含符号”为“是”的构建上传到 iTunes Connect 的任何想法?


查看 xcode,它似乎创建了一个 .pkg 文件,其中包含一个名为“Symbolication”的文件夹,这似乎表明它是 productbuild 的责任,而不是 Application Loader。

0 投票
1 回答
1032 浏览

xcode - 提交到 Mac App Store 时不断为应用程序的安装程序提供“无效签名”

我正在尝试向 Mac App Store 提交一个应用程序(使用 Qt 5.4.2(怀疑它很重要,但包括以防万一)),由于某种原因,我不断收到以下错误:

无效签名- 当您错误地签署了应用程序的安装程序时,会发生此错误。此过程需要两个证书:“3rd Party Mac Developer Application”证书和“3rd Party Mac Developer Installer”证书。对包进行签名时,您需要确保使用安装程序证书对包进行签名。确保在通过 Xcode Organizer 提交应用程序或从命令行运行 productbuild 时指定此证书。

当我在 10.10.4 上使用 Xcode 6.4 时,我在 Application Loader 中遇到了这个错误。在进行了通常的搜索之后,我能找到的所有关于这个问题的参考资料都是 3-4 岁的。在一个旧答案中,有人提到升级 OSX 和 Xcode 为他们修复了它,所以我想出了什么问题。

我升级到 OSX 10.11.13 并使用 Xcode 7.2.1(以及 Application Loader 3.4 (902))进行编译,起初我想“哦,嘿!错误消失了!” 因为应用程序加载器不再显示它。但是现在,一旦 Application Loader 上传它,我就会在电子邮件中收到相同的错误(如上所示)!

我有一个 Python 脚本,它通过在 Qt 框架中进行复制、修复和签署二进制文件来执行大量巫术操作,然后它所做的最后两件事是创建 PKG 文件并对其进行签名。起初,我分两个单独的步骤进行操作。对于傻笑,我尝试一步一步地添加--sign参数productbuild,但我得到了相同的结果。命令如下所示:

另外,FWIW,这是我一年来第一次尝试更新应用程序(我知道:()这是台新机器。所以,我删除了开发人员门户(developer.apple.com)中的证书,重新创建它们然后导入/安装/下载它们。实际上,我已经做了好几次试图弄清楚。上次我通过 Xcode 创建它们。所以钥匙串访问看起来像:

在此处输入图像描述

我在开发者门户中的视图如下所示:

在此处输入图像描述

但是,我可能会提到的另一件事(我不确定它是否重要),每次我将这些新证书添加到 Keychain 时,无论是在 Xcode 中还是主要是创建、下载和导入证书,我必须右键单击证书并转到获取信息-> 信任并将“代码签名”从“未指定值”更改为“始终信任”。

我试图提供很多细节,希望有人可以帮助我查明我做错了什么。如果有人有任何建议或想法,我将不胜感激!

0 投票
2 回答
1876 浏览

macos - 安装时忽略 productbuild 路径

我有一个用 Qt 构建的 OSX 应用程序。它经过代码设计、打包以适合 macstore,并已获得苹果的批准,可以在 mac 商店中销售。

虽然在安装后,它会安装到它在打包过程中所在的位置,而不是 /Applications。

或者,我正在创建文件的 .dmg 包,我可以将其安装到 /Applications 中。

在构建过程结束时,我正在运行这些命令:

结果是我试图通过安装程序安装的 pkg:

在 productbuild 之后,重定位说 /Applications,但它没有在那里安装它!在随后的运行中,它会说错误的路径。我也尝试过从不同的位置安装。

我也尝试从 Mac Store 安装应用程序,它的作用相同......它进入了不正确的路径。

我用过:

提取包。PackageInfo 文件是这样说的:

有什么想法可能会出错吗?我试图用谷歌搜索解决方案,但没有运气。这个不正确的路径可以存储在哪里?在 productbuild 之前,我没有看到嵌入到任何文件中的路径。productbuild 是否在做一些奇怪的事情?

0 投票
2 回答
1839 浏览

macos - 有没有办法更改 pkg 的日志记录位置?

我正在使用pkgbuildand构建安装程序productbuild。如果出现任何问题,我希望能够从我的用户那里收集安装日志。如果这些日志没有与他们安装的所有其他东西混合在一起,那就太好了。

默认情况下,看起来所有日志都转到/var/logs/install.log. 有什么方法可以更改我的应用程序安装程序日志的这个位置吗?

0 投票
1 回答
131 浏览

xcode - 如何禁止 .pkg 安装程序在与指定安装目录不同的位置搜索包含的 .app,

这个问题已经在 Stackoverfl0w 上讨论过多次,但不幸的是我没有看到任何真正令人满意的解决方案。

情况:

(仅包括在内,因为大多数先前的答案都与“只是不要这样做!没有理由拥有多个版本的应用程序..等等”这一行一致,我同意大多数情况下,但不是这个。)

我们目前正在发送一个 .pkg 文件,该文件将我们的软件包安装到 /Applications/$CompanyName/$SoftwareName_$VersionNumber 。在文件夹名称中包含版本号而不删除旧版本是必要的,因为我们的许多客户同时使用我们当前的发行版和 beta 版本,此外,许多客户使用旧版本软件是因为他们认证了它用于特定用途案例,但他们对当前项目使用当前版本。

我们过去只为 macOS 提供命令行工具和库,因此多年来它对我们来说工作得很好。

但是,我们开始仅将我们的 GUI 应用程序从 Windows 移植到 Windows / macOS / Linux,它们在 macOS 下以 .app 格式提供。

问题:

如果 .app 包含在 .pkg 安装程序中,安装程序会在空盘中搜索相同 .app 的旧实例。如果找到,它会替换它找到的实例(非常糟糕),并且也不会将 .app 放在指定的安装目录中(也很糟糕)。

我找到的解决方案:

a) 为每个发布的版本更改 .app 的 CFBundleIdentifier。对我来说似乎不是一个干净的方式。我认为它还会导致 .app 在启动板中多次出现
b) 在安装程序执行之前搜索 .app 的所有实例,压缩它们,并在安装后再次提取它们。(听起来也不是一个好的解决方案。)

有人对此有干净的方法吗?无法相信 Apple 没有办法指定在创建 .pkg 期间应省略此行为。

有比我找到的更好的文档吗?:

https://developer.apple.com/library/mac/documentation/DeveloperTools/Reference/DistributionDefinitionRef/Chapters/Distribution_XML_Ref.html#//apple_ref/doc/uid/TP40005370-CH100-SW15

http://s.sudre.free.fr/Stuff/Ivanhoe/FLAT.html(良好的文档,但经过约 8 年的正常运行时间后,许多字段仍标有“即将发布的说明”。)

编辑:添加 XCode 作为标签。用这个问题赢得风滚草后撞了。将不胜感激任何建议:)