注意:这仅适用于OS X Installer程序包,提交到Mac App Store的程序包遵循不同的规则.
由于Mountain Lion的Gatekeeper,我终于不得不把我的PackageMaker构建脚本放在谷仓后面并拍摄它.PackageMaker已经从Xcode中删除并转移到"Xcode的辅助工具"中,所以希望它很快就会被遗忘.
现在的问题是我怎么用pkgbuild
,productbuild
和pkgutil
来代替它?
作为我的用户的服务,我想提供一个卸载脚本来完全删除我的应用程序在Mac OS X上的所有痕迹.应用程序使用包安装而不是仅仅被拖入Applications文件夹,因为它是一个守护进程类型应用程序还需要在安装时运行脚本才能启动.
我的想法是包含一个被调用的文件uninstall.sh
并将其放入/Library/Application Support/com.<mycompany>.<myapplication>/
并从应用程序文档中引用它.目的基本上是在运行,卸载和删除相应的plist以及删除任何应用程序文件时停止守护程序.这听起来合理还是有更好的方法来实现这一目标?
此外,我想知道是否使用删除包的痕迹是一个好习惯pkgutil --forget
- 如果我不这样做,下次安装包时它会显示为升级而不是安装.有关最佳实践信息的任何建议或指示?
在OS X上没有标准的方法吗?
我有一个应用程序,我需要创建一个安装程序,并且所有安装程序需要做的(除了复制应用程序)运行的脚本(或可执行文件)不是应用程序本身的一部分.有关如何做到这一点的任何帮助?我在" 需求"选项卡中看到"脚本结果" 操作," 操作"选项卡中还有" 预安装操作",其中包含" 打开文件"操作.这些中的任何一个都可以完成这项工作,还是我应该在其
我一直在尝试将Mac PackageMaker命令行构建移植到pkgbuild和productbuild但是我被卡住了.遗憾的是,除了这个StackOverflow帖子以及pkgbuild和productbuild手册页之外,我还没有找到任何记录这些新程序如何工作的内容.
这是我的问题.我创建了一个根安装目录,其中包含以下文件:
/some_path/Applications
/MyProgram.app
/Library
/Frameworks
/MyFramework.framework
/[library files...]
Run Code Online (Sandbox Code Playgroud)
下面的命令行调用对PackageMaker非常有用.它创建了一个安装程序,安装了上面的所有文件.
$ /Developer/usr/bin/packagemaker \
--title "My Program" \
--root /some_path \
--version 1.0.0 \
--filter "\.DS_Store" \
--resources ./resources/ \
--scripts ./scripts/ \
--root-volume-only \
--domain system \
--verbose \
--no-relocate \
--target 10.5 \
--id com.my_company.pkg \
--out MyProgram.pkg
Run Code Online (Sandbox Code Playgroud)
现在我正在尝试用pkgbuild编写这个并遇到一个重大问题.我使用以下电话:
$ pkgbuild \
--root /some_path \
--version 1.0.0 \
--install-location "/" \
--scripts "./scripts/" \
--identifier "com.my_company.pkg" \
MyProgram.pkg
Run Code Online (Sandbox Code Playgroud)
此命令构建一个安装程序,将MyProgram.framework目录复制到/ Library/Frameworks中.但是,它不会将MyProgram.app文件安装到/ Applications目录中.当我查看安装程序日志时,我看到以下消息: …
我正在开发一个Mac OS X应用程序(云打印应用程序).要运行我的应用程序,我需要一些支持驱动程 所以我使用包装制造商软件打包了那些驱动程序和我的应用 我创建了一个pkg文件.
它作为包安装程序正常工作.但我需要通过在终端中运行脚本/命令来静默安装此软件包.
PS:无提示安装是在任何用户干预下安装软件的方法(例如同意条款).它将使用终端命令使用admin privillages静默安装软件.在Windows端,可以执行此静默安装.
任何人都可以提供解决方案在包安装程序中执行此静默安装吗?
我们需要动态构建Mac软件包,如果有一种方法可以在Windows或Linux平台上创建相同的软件包而不是在Mac上使用PackageMaker,那将是很方便的.有任何想法吗?
我正在尝试了解如何修复在Packagemaker(随Xcode 2.4.1一起提供)中开发的Mac软件包,以便在作为标准用户运行时在OS Lion 10.7上安装而无需管理员权限.在10.4,10.5,10.6中,我能够以没有管理员权限的标准用户身份安装此软件包.软件包的内容安装在用户的主文件夹中,因此不需要其他特权.
有谁知道如何做到这一点?或者为什么包现在需要root权限?
或者是否有人知道OS Lion中是否存在新的限制,所有安装都需要管理权限,而不是拥有应用程序包软件包,只需将应用程序包拖到您的主文件夹即可?
我查看了developer.apple.com,但未能找到任何信息.
布赖恩
我需要一种方法来从一个作为我的安装程序的一部分运行的postflight脚本向Login Items添加一个应用程序.它需要在10.5+上工作.优选地,它可以在bash脚本中工作.我的申请已经需要管理权.
我在这里找到的方法:带有参数的Mac OS登录项?似乎是在正确的轨道上(包括在下面)...但是当我在命令行上尝试它并且我不确定如何为所有用户安装或者如果我需要添加逻辑以检查是否在调用此代码之前,它已添加到启动项中.
#!/bin/bash
/usr/bin/osascript -e "tell application \"System Events\" to make new login item with properties { path: \"$1\", hidden:false } at end"
Run Code Online (Sandbox Code Playgroud)
我怀疑我也可以用launchd做点什么.但是,我不确定哪种方法是跨版本兼容性的最佳实践.
注意:我不想在我的应用程序中使用一些objective-c代码添加它.我需要安装程序来添加它. 目前,我所做的是在安装后启动应用程序,然后使用LSSharedFileListRef将其添加到代码中的Login Items ...可以在此处找到该方法的示例:如何在登录时打开应用程序?.这个不合适的原因是我需要在登录屏幕上通过命令行使用Apple Remote Desktop安装我的应用程序.因此,应用程序安装后无需自动启动.
我正在制作需要Git,Heroku,Python,Ruby的开发工具.
所以我需要软件包安装程序检查并安装git和heroku toolbelt,如果那些不存在的话.
在我的猜测中,我可以在XCode中使用包安装程序.
但我在/ Development/Utility中找不到软件包安装程序.
最近,XCode开发目录被移动到了XCode包中,所以我查了一下,但我还是找不到包制造商.
1)包装制造商在哪里?2)我可以使用Package Maker安装heroku和git吗?