按照中的说明,例如,使OS X安装程序包像Pro-Xcode开发人员ID一样准备好pkg,我就可以将我的Firebreath插件项目(本质上是一个可执行文件,但后缀为.plugin,安装在/Library/Internet Plugins中)构建到.pkg文件中。当我在OSX Mountain Lion或Lion系统上运行.pkg文件时,安装程序没有报告任何错误,但在/Library/Internet Plugins中安装了一个不可用的零长度.plugin文件。以下是我用来构建.pkg文件的命令:
xcodebuild ARCHS=i386 ONLY_ACTIVE_ARCH=NO -target ALL_BUILD -configuration Release
codesign -s "$appCertificate" projects/$srcdir/Release/np$srcdir.plugin
pkgbuild --component projects/$srcdir/Release/np$srcdir.plugin --identifier com.company.$srcdir --version $version --install-location /Library/Internet Plug-ins --sign "$installCertificate" $srcdir.pkg
我还尝试过用productbuild和其他各种迭代来包装.pkg组件文件——没有什么不同。它总是安装一个长度为零的可执行文件。我在安装程序日志中也看不到任何消息。
有趣的是,当我使用XCode UI归档项目,然后使用归档目录中的.plugin构建包时,我得到了一个有效的安装。因此,Release文件夹中的.plugin文件一定有所不同。因此,如果我能找到一种从命令行创建归档的方法,我可以使用它而不是Release中的方法。但是xcodebuild手册页并没有告诉我如何做到这一点——我可以使用一个archive命令,但当我尝试这样做时,它会告诉我该命令不可用。这是因为我在一个项目中构建,而不是在一个工作空间中,并且没有定义任何方案吗?
任何帮助都将不胜感激——无论是在弄清楚为什么安装的.plugin为零大小方面,还是在如何构建归档文件方面,我都可以使用它。
.plugin-FireBreath构建的文件通常是一个文件夹。
当我构建插件并最终开发出包含AppleScript的DMG时,我对不同的安装方法进行了大量研究。这个应用程序基本上运行一个shell命令,将所有东西安装在正确的位置(/Library/Internet插件)。我并不认为这是一种正确的方法,但你可以看看它是否适合你的需求。