201005261200在Mac OS X上,利用PackageMaker製作簡單的Installer

在Mac OS X上,一套軟體通常是一個bundle,bundle裡面包含著執行檔,還有執行檔的敘述,還有資源檔...等等.
簡單的程式,通常只包含一個bundle就可以順利執行了,使用者只要把bundle拖到自己喜歡的位置就可以完成安裝了.
但是如果是一套大型的軟體,或者是需要安裝系統元件的程式,就需要installer來幫助使用者完成整個安裝的動作了.

通常會使用installer的情況有:

  • 需要安裝系統元件 
    • 需要安裝到某個特定的位置
    • 需要系統管理員權限
  • 包含安裝其他多套軟體

在Mac OS X上的Installer選擇並不多,最主要的大宗還是Apple提供的PackageMaker,他是在XCode裡面的一個Tool,他是免費的,他的會把Installer做成一個安裝套件(Package bundle,其實是一個目錄,裡面包含許多檔案).

我在這邊,分享我用PackeageMaker製作簡單的一個安裝套件,簡單的介紹各個選項.



首先執行了PackageMaker之後,他會要你輸入Organization,在這邊你要輸入你公司由後往前排的網域. 如abc.com.tw則輸入tw.com.abc.
Minimum Target則依你的需求選擇.

這邊介紹工作環境:

左半邊,給你放你拖拉要安裝的檔案/目錄/bundle用,你要安裝的東西,就把它拖拉到這邊就對了.
我們可以看到主畫面,有左右兩部分.

右半邊,則是設定的畫面. 會顯示所有的property,你將會依需求修改這些欄位.

目前看到的這個畫面,是Package的property:
Title: 你的Installer的Title,通常打XXXX Driver/Application,你要安裝的東西的名稱.
User Sees: 我們這邊只用Easy Install Only,其他選項我沒用過,Easy Install就是選元件和目的,這樣而已.
Volume Selected by user: 可以讓user選擇安裝的磁碟.
System volume: 安裝到系統碟
User home directory: 可以安裝到使用者個人目錄


這邊我們把一個執行檔bundle拖到安裝元件區了.
安裝元件可以有許多項目,每個項目可以包含許多檔案/bundle,而每個項目,可以讓user選擇是否可以選擇安裝or不安裝,還有路徑等等屬性,這邊的畫面是設定安裝項目的畫面.
Choice Name : 顯示在畫面上的字串
Identifier : 內部的安裝項目識別字串(如果你有用script,則會以這個來指定這個項目)
Initial State : 初始的設定

  •  -Selected : 已經被勾選(要安裝這個項目)
  •  -Enabled : 這個項目是有用的
  •  -Hidden : 表示這個選項user看不到(通常用在必安裝項目上)

其他項目不贅述.
Requirement page則設設定此項目需要的軟硬體環境,這個UI應該不難懂.

右鍵安裝的元件,可以設定更多選項,我們通常會care Package Flags.


Package Flags:
我關心的選項主要只有Allow Downgrades,這個選項勾了之後,OS自動會判斷目前要安裝的軟體是否存在系統上,而且版本是否比較新,如果版本沒有比較新的話,是不會安裝的.

安裝元件的設定:
Install : 這是你原來元件的位置
Destination : 你的元件預設要安裝的路徑
Allow custom location : 可以讓user任意指定安裝的位置,如果是執行檔跟文件,不跟系統有關的,可以讓user自己指定安裝的位置,但是假設,系統有規定你的程式一定要放在什麼地方,或者你有特殊考量,這個時候就必須把程式放在固定的路徑.
Package Identifier : Mac OS X會用這個是為識別,做一個這個名稱的檔案,把關於這個元件的information記錄在這裡,以後,若是有version方面的問題,可以從這邊讀取資訊去做處理.
Package Version: 指定目前這個元件的版本,若是你不願意使用者安裝舊版本的到系統上,系統會用這個資訊來比對
Restart Action: 指定是否重新登入,重新開機. 看你的元件的需求,有的要重開機有的要重登入才能被啟用,看你的元件需求.
Require admin authentication: 是否要管理者權限. 要是你的程式要安裝到root權限才能寫入的地方,必須要這個選項,使用者在安裝時,會出現密碼認證的畫面.


元件的內容.
這邊可以把你要安裝的bundle/directory,所有檔案列出來,你可以把所有檔案一個一個分別設定權限和owner.通常我每個檔案根目錄都給他設755,owner設root,group設admin,這樣就不用麻煩一個一個去設了.
Include root in package : 表示你的的元件/bundle,在放置到目標位置時,是把你現在指定的目錄, 包含目錄一起放進去.若無的話,則是copy目錄裡面的檔案.


這個就指定Relocation,和Downgrade了.
這個我不太清楚,這字面意思是
Relocation: 放到別的位置
Downgrade: 降版本

整個編好之後,可以按Build,即可產生pkg安裝bundle. 
做好之後就可以試試整個流程是否正確. 如果不熟這個東西的時候,很多選項常常都沒注意到,造成結果不如預期.

後記:

這個只是我簡單的說明,其實我還是有很多東西我並不太了解,我有用到的東西不多.希望有人可以補充,或指正我,謝謝.

回應
無名正妹時鐘
關鍵字
    沒有新回應!
Open 小將





Powered by Xuite