无法安装使用productbuild创建的OSX包

时间:2011-11-18 11:15:39

标签: macos installer package mac-app-store productbuild

我对整个mac开发和部署世界都很陌生。我试图创建一个OSX应用程序并使用Itunes Connect和Application Loader将其上传到appstore。我正在使用Mac OSX版本10.6.8

我使用以下代码对我的应用进行了编码:

codesign -s "3rd Party Mac Developer Application: <company name>" <my app name>.app

然后我使用以下方法构建了一个安装程序包:

productbuild --component <my app name>.app /Applications --sign "3rd Party Mac Developer Installer: <company name>" <my app name>.pkg

在codesign和productbuild期间,我没有错误,应用程序运行没有问题。

不幸的是我无法安装软件包。如果我使用以下命令在命令行中运行pkg:

sudo installer -store -pkg <my app name>.pkg -target /

我得到以下输出:

installer: <my app name>.pkg has valid signature for submission
installer: Installation Check: Passed
installer: Volume Check: Passed
installer: Bundle <my bundle name> will be relocated to <path to my app>/<my app name>.app
installer: Starting install
installer: Install 0.0% complete
installer: Install 5.0% complete
[...]
installer: Install 95.0% complete
installer: Install failed: Beim Extrahieren von Dateien aus dem Paket <my app name>.pkg“ ist ein Fehler aufgetreten.

错误表示“在提取包文件时出错...”

installer.log中有关faild安装的条目:

Install Failed: PKG: extracting "<my bundle name>"
Error Domain=PKInstallErrorDomain Code=110 UserInfo=0x1004687b0 "Beim Extrahieren von Dateien aus dem Paket „<my app name>.pkg“ ist ein Fehler aufgetreten." Underlying Error=(Error Domain=BOMCopierFatalError Code=0 UserInfo=0x10c9af710 "Der Vorgang konnte nicht abgeschlossen werden. cpio read error: Unknown error: 0") {
    NSFilePath = "/var/folders/zz/zzzivhrRnAmviuee+++++++++++/Cleanup At Startup/PKInstallSandbox-tmp/Root/Applications";
    NSLocalizedDescription = "Beim Extrahieren von Dateien aus dem Paket \U201e<my App name>.pkg\U201c ist ein Fehler aufgetreten.";
    NSURL = "#<my bundle name>.pkg -- file://localhost/<path to my app>/<my app name>.pkg#Distribution";
    NSUnderlyingError = "Error Domain=BOMCopierFatalError Code=0 UserInfo=0x10c9af710 \"Der Vorgang konnte nicht abgeschlossen werden. cpio read error: Unknown error: 0\"";    

我想它与cpio读取错误有关,但我在这里丢失了......

2 个答案:

答案 0 :(得分:1)

问题是installd在磁盘上的其他地方找到你的.app并得出结论已经安装但重新定位。它在你的构建目录中找到它,对吗?至少这是我的情况。

解决这个问题的方法是:

  1. 构建安装程序;
  2. 压缩用于生成此版本的所有资源,您可能希望为此特定版本存档(对于需要将应用程序置于软件包之外的崩溃报告符号),包括.app软件包,除了实际安装程序。
  3. 这样,完全相同的二进制(当您启动安装程序时),在安装过程中磁盘上的任何位置都会找不到 (它已存档)。 installd不会关心可以在〜/ Library / Developer / Xcode / DerivedData / 或磁盘上任何其他位置找到的应用程序的调试版本。

答案 1 :(得分:-2)

好的,重建应用程序并将其打包到另一个文件夹中就可以了。我仍然不确定问题是什么,但至少我现在可以继续。