OS X内核扩展图形卸载程序

时间:2012-01-04 18:55:41

标签: macos user-interface kernel root uninstall

XCode不包含其打包程序的卸载选项。通常,用户只需将应用程序拖到垃圾箱即可将其卸载 - 大多数应用程序都自包含在应用程序包中。

但是,我有一个内核扩展,必须使用一些简单的命令行卸载它。有一个可行的脚本,但我需要提供一个图形卸载程序。

我不认为有一个即插即用的示例代码,它提供了一种在显示进度条的同时运行脚本的方法,但是我希望有人已经处理过这个问题或者有一些指示如何快速轻松地实现这一目标

脚本只有两行没有反馈,所以我们可以在应用程序中执行命令,只要我们可以安全地轻松请求和使用root权限(即让OS X处理权限 - 我们只需要OS X将它们提供给我们,这应该让它在应用程序内部向用户询问类似于软件包安装程序的情况。

1 个答案:

答案 0 :(得分:1)

使用xcode中的Cocoa-Applescript项目在这里运行shell脚本有一个相当不错的方法:

http://www.mactech.com/articles/mactech/Vol.22/22.08/GUI-upyourScript/index.html

它包括使用进度条,处理错误以及获取正确的root权限来运行shell脚本。

不幸的是,这里剪切和粘贴有点长,但一般步骤是:

  1. 创建Cocoa-Applescript app类型的新xcode项目
  2. 创建并测试预期的shell脚本,将其添加到项目中
  3. 编辑MainMenu.nib以添加并命名按钮(theObject)和进度条(pMainProgress),然后编辑ui的标题和其他方面以品尝
  4. 将按钮绑定到项目中的applescript(在Inspector中选中按钮,选中action框并输入myprojectname.applescript
  5. 将AppleScript编辑为类似于以下内容的内容:
  6. on clicked theObject
       -- setup
       set myPath to POSIX path of (path to me) as string
       -- Start progress bar
       set uses threaded animation of progress indicator "pMainProgress" of window "wMain" to true
       tell progress indicator "pMainProgress" of window "wMain" to start
    
       -- Do it!
       try
          do shell script quoted form of myPath & "Contents/Resources/backup.sh" with administrator privileges
       on error number 255
          display dialog "Sorry, an error occurred.  I can't make the copy."
       end try
       -- Stop progress bar
       tell progress indicator "pMainProgress" of window "wMain" to stop
       set uses threaded animation of progress indicator "pMainProgress" of window "wMain" to false
    
    end clicked
    

    您可以进一步自定义应用程序(例如名称)并向窗口添加文本框,以便在用户运行多个脚本时向用户发出正在发生的步骤(在添加“脚本”后将set the contents of text field "efStatus" of window "wMain" to "Copying files..."放入脚本中文本字段为ui,名称为“efStatus”)