EXWOLF討論區's Archiver

wolf 發表於 2008-6-22 15:00

搭建屬於自己的iPhone Installer Sources

在已經Jailbreak的iPhone手機中,用戶大可自行安裝使用開源SDK開發的第三方軟體。在國內,目前幾乎所有的iPhone或者 iPod Touch都有安裝Installer程序,有點類似linux上的apt工具,直接通過Wifi或者Edge即可從軟體源下載並安裝第三方軟件。
本文簡單介紹如何自己搭建iPhone Installer Sources,這樣就可以將自己的iPhone軟件發佈出去讓用戶直接安裝了。僅僅需要你了解一點php知識以及知道如何用文本編輯器編輯xml文件。
下文所說的”iPhone”也同時適用於iPod Touch。


[b]準備工作:[/b]
首先,你需要一個支持php的web空間或者web服務器。當然,如果在自己電腦上開一個apache自己測試也是可以的。
接下來,下載這個例子:
http://iphone.nullriver.com/beta/demo.zip
將其解壓縮,裡面有2個文件和2個目錄。
index.php
這個php基本不用編輯,放到你的webserver做為首頁就可以了。
repository.plist
這個文件是我們要進行修改的,是標準的plist格式。可以直接用文本編輯器打開。
[b]你可以修改以下內容:[/b]
[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>
[/i]
[b]plists/目錄[/b]
plists/目錄保存的是你準備在源中提供的軟體的信息,plists可以包含多個分類,按照目錄排列。一個.plist文件包含一個軟件。每個分類可以有多個.plist文件。
目錄中提供了三個.plist的例子,你可以參考它們的語法。如果不需要這些例子,直接把它們移到別的目錄。你可以自己創建包含軟件信息.plist文件。
這裡的.plist文件主要對軟件進行描述,同時在文件中對軟件的安裝前、安裝後、安裝過程、更新及卸載進行腳本定義。這樣,iPhone中的Installer就可以根據這些.plist文件對軟件源中提供的zip包中的內容進行定制的安裝了。
這裡介紹一下.plist文件中各個key的用法,這樣你就可以給自己的軟件建立.plist文件了:
     *[b] bundleIdentifier[/b]必須鍵值,唯一軟體包描述。一旦你指定了這個鍵,在今後的軟件更新時,千萬不要修改。否則會引起軟件的混亂。命名有些類似java的domain方式。比如你的軟件如果叫做myapp,你可以將自己的軟件叫做com.mycompany.iphone.myapp。
     * [b]name[/b]必須鍵值,名稱。這個名稱將會在Installer的列表中顯示。比如你可以寫成“我的軟件”。
     *[b] version[/b]必須鍵值,版本號。 Installer目前只能安裝一個特定軟件的一個唯一版本。比如你可以寫成1.0。
     * [b]location[/b]必須鍵值,安裝位置。用於指定本軟件的.zip文件位置。如果你希望安裝執行文件的話,zip文件壓縮的時候,必須在zip中保留文件執行權限,比如0755。比如你可以寫成[url]http://iphone.mycompany.com/zips/myapp.zip[/url]
     * [b]size[/b]必須鍵值,zip文件的大小。這個數值必須和你的zip文件完全一致,否則Installer不會安裝,以防止文件損壞對iPhone造成的傷害。
     * [b]url[/b]可選鍵值,更多信息的鏈接。 .plist文件中如果帶有這個地址,用戶在Installer中點擊More Info就可以直接指向這個地址。比如你可以寫成[url]http://iphone.mycompany.com/myapp/info.html[/url]
     * [b]description[/b]可選鍵值,軟件描述。注意不要寫的太長。
     * [b]maintainer[/b]可選鍵值,第三方維護人員名字。如果軟件是你自己的,那就不需要寫這項了。
     * [b]contact[/b]可選鍵值,第三方維護人員聯繫信息。如果軟件是你自己的,這項也不需要寫。
     * [b]restartInstaller[/b]可選鍵值,安裝完成後是否需要重啟Installer(注意不是重啟iPhone)。這個鍵值設為true,安裝後Installer會自動重啟。
     * [b]scripts[/b]必須鍵值,安裝腳本。這個鍵值包括以下項目:
           o preflight可選鍵值,安裝或更新之前執行的腳本。但是在刪除軟件之前不會執行這段腳本。這個鍵值主要用於檢查軟件是否可以進行安裝。
           o install必須鍵值,安裝腳本。你需要設定這部分腳本,用以將軟件安裝在iPhone上。
           o update可選鍵值,更新腳本。如果軟件需要升級,可以在這個鍵值中定義升級的腳本。這部分腳本可以用於比較大的軟件僅僅升級一部分關鍵程序或者數據時使用。如果沒有定義這個鍵值,Installer會自動使用install中的安裝腳本覆蓋舊版本的軟件。
           o postflight可選鍵值,安裝或更新之後執行的腳本。但是在刪除軟件之後不會執行這段腳本。
           o uninstall可選鍵值,軟件卸載腳本。雖然是可選鍵值,但是強烈建議你對這部分腳本進行定義,否則Installer將不會顯示uninstall選項,意味著你的軟件無法正確卸載。
注意:和腳本相關的鍵值都是數組的形式出現的。數組的寫法是:
[i]CommandName參數1參數2[/i]
[i]</pre>
<p> </p>
<p>CommandName用於執行命令,可以帶有任意數量的參數,命令甚至可以嵌套。如果Installer執行到無法識別的命令,將會退出安裝並通知用戶。 </p>
<p>比較常用的CommandName有:</p>
<p><b>CopyPath </b></p>
<p>複製文件。 </p>
<p>帶有兩個參數,源文件和目標文件。可以是文件,也可以是目錄。如果是目錄,Installer會將其下的所有子目錄全部複製。 </p>
<p>源文件如果不指定為絕對路徑(前面不帶/),Installer會認為這個文件在zip包中。如果指定為絕對路徑(前面帶/),Installer會認為這個路徑是在用戶iPhone的文件系統中。 </p>
<p>目標文件的路徑必須是絕對路徑。如果你希望復制目錄,請不要帶上文件名。 </p>
<p>舉例:</p>
<p> </p>
<pre lang=”xml”>
  <array>
<string>CopyPath</string>
  <string>Launcher.app</string>
<string>/Applications/Launcher.app</string>
</array>
[/i]
就會將zip包中的Launcher.app整個文件夾複製到iPhone的/Applications/Launcher.app文件夾中。
[b]RemovePath[/b]
刪除文件。
帶有一個參數,即需要刪除的文件或者目錄。如果需要刪除多個不同文件或目錄,需要建立多個RemovePath命令。
其他命令請參閱包中的例子。
[b]  zips/目錄
[/b]
zips/目錄存放軟件。軟件用zip壓縮,主要是保存文件的執行權限。如果你在Mac上編譯好myApplication.app,直接壓縮即可。如果在Windows上就會比較麻煩。
zip文件名稱要和plists中的.plist文件中指定的相應位置對應。
一旦你設置好自己的Installer源,建立好plist文件和zip包,將整個目錄包括index.php文件直接上傳到服務器,就可以用iPhone添加你自己的源地址進行訪問了。關於如何使用Installer添加軟件源的方法,這裡就不進行介紹了。

頁: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.