我正在开发一个像cocoa应用程序一样的“安装”,它需要处理一些http请求,一些文件系统读取,将文件复制到/usr/share,设置cron(不是launchd)并向用户询问一些信息。 我放弃了 PackageMaker,因为我需要更大的灵 active 。
目前一切进展顺利,但在最后一个安装步骤中,我需要:
- 删除我之前安装的应用程序文件夹(如果存在)。它始终是相同的路径:/usr/share/MY_APP
- 再次创建应用程序文件夹:/usr/share/MY_APP
- 将应用程序文件复制到/usr/share/MY_APP
- 更新 cron 作业
使用管理权限保护/usr/share/MY_APP 非常重要,因此普通用户不应删除它。
实现这些步骤的最佳方法是什么?
顺便说一句,我使用的是 Xcode 3.2。
非常感谢! 卡洛斯。
最佳答案
在 preflight 脚本、postflight 脚本以及可能还有自定义 UI 的安装程序插件之间,我认为您没有理由不能在 PackageMaker 中完成所有这些操作。
注意:“安装程序插件”有点误导。用户不必必须在某个地方安装该插件作为单独的步骤;您将该插件包含在您的包中,安装程序将从那里使用它。
相关文件为a ReadMe file in a sample code project 。从 2.0 开始,Xcode 中还有一个 Installer 插件项目模板。
此外,an Installer plug-in won't get used if the user does a command-line installation 。当然,如果您编写自己的自定义安装程序,它们根本无法从命令行安装(包括远程安装到充满计算机的办公室或实验室)。
顺便问一下:为什么是/usr/share?你放在那里什么?可能有更好的方法来完成您真正想要完成的任务。
关于objective-c - Cocoa - 如何复制文件到/usr/share?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2529248/