2012-01-04 67 views
2

XCode不包括其打包程序的卸載選項。通常,用戶只需將應用程序拖到垃圾箱中(如果他們想要卸載它) - 大多數應用程序都是自包含在應用程序包中。OS X內核擴展圖形卸載程序

但是,我有一個內核擴展,它必須使用幾個簡單的命令行來卸載。有一個腳本可以工作,但我需要提供一個圖形化的卸載程序。

我不希望有一個即插即用的示例代碼,它提供了一種在顯示進度條時運行腳本的方式,但我希望有人已經處理了這個問題,或者有幾個指針如何快速方便地完成此操作

腳本只有兩行,沒有任何反饋,所以我們可以在應用程序中執行命令,只要我們可以輕鬆請求並安全地使用root權限(即讓OS X處理權限 - 我們只是要求OS X給我們,這應該導致它向用戶詢問它們是否與應用程序中的軟件包安裝程序相似)。

回答

1

有使用可可AppleScript的項目在Xcode中運行shell腳本,在這裏相當好辦法:

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

它涵蓋了使用進度條,處理錯誤,並得到了正確的root權限運行shell腳本。

不幸的是這是一個有點長剪切和粘貼在這裏,但一般的步驟是:

  1. 創建類型可可AppleScript的應用程序的新的Xcode項目
  2. 創建和測試預期的shell腳本,它添加到你的項目
  3. 編輯MainMenu.nib中添加並命名一個按鈕(theObject)和進度條(pMainProgress),然後編輯標題和UI等方面去品味
  4. 領帶的按鈕的AppleScript項目(在Inspector中,按鈕選擇chec k爲action盒,放在myprojectname.applescript
  5. 編輯的AppleScript到一個類似於以下內容:
 
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 

您可以進一步自定義應用程序(名稱,例如),並添加文本框到窗口提醒用戶如果您正在運行多個腳本時發生了什麼步驟(在將名稱爲「efStatus」的用戶界面添加文本字段後,將set the contents of text field "efStatus" of window "wMain" to "Copying files..."放入您的腳本中)