vil*_*pam 18 macos uninstallation packagemaker
作为我的用户的服务,我想提供一个卸载脚本来完全删除我的应用程序在Mac OS X上的所有痕迹.应用程序使用包安装而不是仅仅被拖入Applications文件夹,因为它是一个守护进程类型应用程序还需要在安装时运行脚本才能启动.
我的想法是包含一个被调用的文件uninstall.sh并将其放入/Library/Application Support/com.<mycompany>.<myapplication>/并从应用程序文档中引用它.目的基本上是在运行,卸载和删除相应的plist以及删除任何应用程序文件时停止守护程序.这听起来合理还是有更好的方法来实现这一目标?
此外,我想知道是否使用删除包的痕迹是一个好习惯pkgutil --forget- 如果我不这样做,下次安装包时它会显示为升级而不是安装.有关最佳实践信息的任何建议或指示?
在OS X上没有标准的方法吗?
Rob*_*ier 17
在OS X上没有标准的方法可以做到这一点.是的,令人震惊,我知道.Apple始终警告所有人远离软件包安装程序(除其他外,为他们提供的文档不足).然后,他们专门为自己的独立应用程序使用软件包安装程序....
是的,你应该包括pkgutil --forget.
如果您的客户对这种脚本感到满意,那么您的方法听起来不错.如果他们想要"双击它",那么你应该放入卸载程序/Applications,但如果可以,请避免使用.
如果你有一个GUI,状态项或首选项面板,那么在那里放置一个"卸载"按钮或菜单项是很好的,而不是要求他们乱用终端.
顺便说一句,如果你去寻找软件交付指南,它已被移动了一年左右,而他们"更新"它.
无法删除软件包多年来一直困扰着我,所以我编写了一个卸载软件包的工具:
http://www.corecode.at/uninstallpkg/index.html
它比shell脚本好一点,因为它确保永远不会删除任何其他安装的包使用的任何文件
我有一个类似的应用程序并遇到了同样的问题。我所采用的方法是我见过其他应用程序使用的方法。不要简单地分发 .pkg 安装程序,而是将其包装在 .dmg 文件中。卸载脚本可以包含在 .dmg 中的 .pkg 中。
然后卸载脚本被重命名为“uninstall.tool”。.tool 扩展名允许用户通过双击来运行脚本,而不必从命令行运行它。
我解决这个问题的方法是使用Automator,创建一个应用程序文档,然后添加对话框和脚本操作。最后保存您的 Automator 应用程序文档,您最终会得到一个简单的 GUI 应用程序来运行卸载。
通常卸载操作需要管理员权限 - 我通过运行 shell 脚本操作在 Automator 中解决了这个问题,该操作生成另一个 shell 脚本,然后可以在 applescript 操作中运行该脚本,如下所示:
on run {input, parameters}
do shell script "/tmp/uninstaller.sh" with administrator privileges
return input
end run
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15202 次 |
| 最近记录: |