給自己搭建iPhone Installer軟件源
給自己搭建iPhone Installer軟件源是本文要介紹的內(nèi)容,在Jailbreak(越獄)的iPhone手機(jī)中,用戶可以自己安裝使用開源SDK開發(fā)的第三方軟件。目前國內(nèi)幾乎所有的iPhone或者iPod Touch都有安裝Installer程序,有點(diǎn)類似linux上的apt工具,直接通過Wifi或者Edge即可從軟件源下載并安裝第三方軟件。
本文簡單介紹如何自己搭建iPhone Installer軟件源,這樣就可以將自己的iPhone軟件發(fā)布出去讓用戶直接安裝了。僅僅需要你了解一點(diǎn)php知識以及知道如何用文本編輯器編輯xml文件。
下文所說的"iPhone"也同時適用于iPod Touch。
準(zhǔn)備工作:
首先,你需要一個支持php的web空間或者web服務(wù)器。當(dāng)然,如果在自己電腦上開一個apache自己測試也是可以的。
接下來,下載這個例子:
http://iphone.nullriver.com/beta/demo.zip
將其解壓縮,里面有2個文件和2個目錄。
index.php
這個php基本不用編輯,放到你的webserver做為首頁就可以了。
repository.plist
這個文件是我們要進(jìn)行修改的,是標(biāo)準(zhǔn)的plist格式??梢灾苯佑梦谋揪庉嬈鞔蜷_。
你可以修改以下內(nèi)容:
<dict>
<key>name</key>
<string>[你自己的installer源的名稱]</string>
<key>maintainer</key>
<string>[你的名字]</string>
<key>contact</key>
<string>[你的郵件地址]</string>
<key>url</key>
<string>[軟件源地址]</string>
<key>category</key>
<string>[分類]</string>
</dict>
plists/
這個目錄保存的是你準(zhǔn)備在源中提供的軟件的信息,plists可以包含多個分類,按照目錄排列。一個.plist文件包含一個軟件。每個分類可以有多個.plist文件。
目錄中提供了三個.plist的例子,你可以參考它們的語法。如果不需要這些例子,直接把它們移到別的目錄。你可以自己創(chuàng)建包含軟件信息.plist文件。
這里的.plist文件主要對軟件進(jìn)行描述,同時在文件中對軟件的安裝前、安裝后、安裝過程、更新及卸載進(jìn)行腳本定義。這樣,iPhone中的Installer就可以根據(jù)這些.plist文件對軟件源中提供的zip包中的內(nèi)容進(jìn)行定制的安裝了。
這里介紹一下.plist文件中各個key的用法,這樣你就可以給自己的軟件建立.plist文件了:
bundleIdentifier 必須鍵值,唯一軟件包描述。一旦你指定了這個鍵,在今后的軟件更新時,千萬不要修改。否則會引起軟件的混亂。命名有些類似java的domain方式。比如你的軟件如果叫做myapp,你可以將自己的軟件叫做com.mycompany.iphone.myapp。
name 必須鍵值,名稱。這個名稱將會在Installer的列表中顯示。比如你可以寫成“我的軟件”。
version 必須鍵值,版本號。Installer目前只能安裝一個特定軟件的一個唯一版本。比如你可以寫成1.0。
location 必須鍵值,安裝位置。用于指定本軟件的.zip文件位置。如果你希望安裝執(zhí)行文件的話,zip文件壓縮的時候,必須在zip中保留文件執(zhí)行權(quán)限,比如0755。比如你可以寫成http://iphone.mycompany.com/zips/myapp.zip
size 必須鍵值,zip文件的大小。這個數(shù)值必須和你的zip文件完全一致,否則Installer不會安裝,以防止文件損壞對iPhone造成的傷害。
url 可選鍵值,更多信息的鏈接。.plist文件中如果帶有這個地址,用戶在Installer中點(diǎn)擊More Info就可以直接指向這個地址。比如你可以寫成 http://iphone.mycompany.com/myapp/info.html
description 可選鍵值,軟件描述。注意不要寫的太長。
maintainer 可選鍵值,第三方維護(hù)人員名字。如果軟件是你自己的,那就不需要寫這項(xiàng)了。
contact 可選鍵值,第三方維護(hù)人員聯(lián)系信息。如果軟件是你自己的,這項(xiàng)也不需要寫。
restartInstaller 可選鍵值,安裝完成后是否需要重啟Installer(注意不是重啟iPhone)。這個鍵值設(shè)為true,安裝后Installer會自動重啟。
scripts 必須鍵值,安裝腳本。這個鍵值包括以下項(xiàng)目:
preflight 可選鍵值,安裝或更新之前執(zhí)行的腳本。但是在刪除軟件之前不會執(zhí)行這段腳本。這個鍵值主要用于檢查軟件是否可以進(jìn)行安裝。
install 必須鍵值,安裝腳本。你需要設(shè)定這部分腳本,用以將軟件安裝在iPhone上。
update 可選鍵值,更新腳本。如果軟件需要升級,可以在這個鍵值中定義升級的腳本。這部分腳本可以用于比較大的軟件僅僅升級一部分關(guān)鍵程序或者數(shù)據(jù)時使用。如果沒有定義這個鍵值,Installer會自動使用install中的安裝腳本覆蓋舊版本的軟件。
postflight 可選鍵值,安裝或更新之后執(zhí)行的腳本。但是在刪除軟件之后不會執(zhí)行這段腳本。
uninstall 可選鍵值,軟件卸載腳本。雖然是可選鍵值,但是強(qiáng)烈建議你對這部分腳本進(jìn)行定義,否則Installer將不會顯示uninstall選項(xiàng),意味著你的軟件無法正確卸載。
注意:和腳本相關(guān)的鍵值都是數(shù)組的形式出現(xiàn)的。數(shù)組的寫法是:
CommandName 參數(shù) 1 參數(shù) 2
CommandName用于執(zhí)行命令,可以帶有任意數(shù)量的參數(shù),命令甚至可以嵌套。如果Installer執(zhí)行到無法識別的命令,將會退出安裝并通知用戶。</p>
比較常用的CommandName有:
>CopyPath
復(fù)制文件
帶有兩個參數(shù),源文件和目標(biāo)文件。可以是文件,也可以是目錄。如果是目錄,Installer會將其下的所有子目錄全部復(fù)制。
源文件如果不指定為絕對路徑(前面不帶/),Installer會認(rèn)為這個文件在zip包中。如果指定為絕對路徑(前面帶/),Installer會認(rèn)為這個路徑是在用戶iPhone的文件系統(tǒng)中。
目標(biāo)文件的路徑必須是絕對路徑。如果你希望復(fù)制目錄,請不要帶上文件名。
舉例:
<pre lang="xml">
<array>
<string>CopyPath</string>
<string>Launcher.app</string>
<string>/Applications/Launcher.app</string>
</array>
就會將zip包中的Launcher.app整個文件夾復(fù)制到iPhone的/Applications/Launcher.app文件夾中。
RemovePath
刪除文件。
帶有一個參數(shù),即需要刪除的文件或者目錄。如果需要刪除多個不同文件或目錄,需要建立多個RemovePath命令。
小結(jié):給自己搭建iPhone Installer軟件源的內(nèi)容介紹完了,希望本文對你有所幫助!
本文來自:http://www.cocoachina.com/iphonedev/toolthain/2009/0611/208.html