轉載自:wiki.forum.nokia.com
文字告示
在安裝過程中你可以指定一個檔案檔案顯示給使用者。這個檔案本身不會被拷貝到目標裝置,用於顯示基本的自述資訊或許可協議。為此,添加下行到pkg檔案:
"license.txt" - " ", FILETEXT, TEXTCONTINUEFILETEXT指出在安裝期間顯示該檔案。TEXTCONTINUE會提供一個可以關閉這個文字檔的繼續按鈕然後繼續安裝。代替TEXTCONTINUE,你可以指定為下面之一:
• TEXTSKIP 顯示一個是/否選項。 若選擇是,安裝繼續。 若選擇否,則跳過下一段說明,安裝仍正常繼續向前。
• TEXTEXIT 顯示一個是/否選項。 若選擇是,安裝繼續。若選擇否, 安裝停止並刪除任何已安裝檔案。
• TEXTABORT 顯示一個是/否選項。但當選擇否時,安裝只停止,不刪除任何已安裝檔案。移除運行時產生的檔案。
多語言文字告示
文字告示的語言能被自訂取決於裝置的預設語言。例如:
IF (LANGUAGE=2) ; 若語言是法語,則顯示mytext.t02
"mytext.t02"-"", FILETEXT, TEXTABORT
ELSEIF (LANGUAGE=3) ; 若語言是德語,則顯示mytext.t03
"mytext.t03"-"", FILETEXT, TEXTABORT
ELSE ; 否則顯示mytext.t01
"mytext.t01"-"", FILETEXT, TEXTABORT
ENDIF當裝置上的預設語言是法語時上例將顯示mytext.t02;德語時mytext.t03;任何其它語言時mytext.t01。
順便提及,你也必須在PKG中定義語言:
;Language - standard language definitions
&EN,GE,FR移除運行時產生的檔案
當經由程式的sis檔案卸載程式時,卸載程式會移除所有被安裝程式按照pkg檔案中的檔案說明行拷貝到電話的那些檔案。但在運行時產生的檔案又該如何呢?
若應用程式建立的檔案名稱在安裝時已知,那麼它們必須作為'空檔案(null files)'添加到.pkg檔案。在.pkg檔案中的檔案名稱(語言中立的檔案)的格式如下:
"" - "C/system/data/my_runtime_generated_file", FILENULL這裡的my_runtime_generated_file是一個由應用程式所建立的資料檔案。FN(FILENULL)參數意思是檔案尚不存在,因此它不包含在sis檔案中。是由啟動並執行應用程式建立的,在應用程式被移除時會被刪除。注意: 所指定的源檔案名稱不重要且應為空白("")。也注意: 當升級到一個後來的版本這些不會被刪除。這確保了諸如.ini等檔案,儲存了應用程式偏好,在升級中不丟失。
FILENULL選項在Symbian OS v9.x中是不支援的。建議開發人員在他們的應用程式的資料籠(data cage)內建立檔案,這裡的檔案在卸載時會被自動(及完全)刪除。
若應用程式所建的檔案數量(或它們的準確名稱)未知,情形就稍微有些複雜了。作為一種解決方案,.sis包能包含一個特殊的卸載程式,負責在卸載時找到並移除恰當的檔案。這樣的一個程式可以在卸載時被自動運行,如下:
"/epoc32/release/armi/urel/uninst.app" - "!:/system/apps/myapp/uninst.app", RR, RWRR (RUNREMOVE)參數在移除(卸載)時要啟動並執行檔案。RW (RUNWAITEND)指明(系統)移除工具應啟動這個程式然後等待,直到繼續安裝之前運行完。
嵌入SIS檔案
能在你的sis檔案包含另一個sis檔案,如下面的代碼:
@”sis file name”,(UID)例如: @”prog1.sis”,(0x12341234) prog1.sis,具有UID 0x12341234,在碰到這行時安裝。注意: 在卸載時,這個嵌入的sis直到系統判斷出沒有其他當前已安裝組件使用它(也就是,沒有其他已安裝組件在其pkg檔案也包括該sis)才會被卸載。
在安裝或卸載時運行可執行檔
你能指定要啟動並執行可執行檔,通過在可執行檔描述行尾部添加FILERUN (FR)和RUNINSTALL (RI)關鍵字。
例如:
"/Symbian/6.1/Series60/Epoc32/release/armi/urel/myprogram.exe"-
"!:system/programs/myprogram.exe",FR,RI將安裝myprogram.exe並在安裝期間執行。RUNINSTALL關鍵字可用下面的任何一個替代:
• RUNREMOVE (RR) 使得只在卸載期間才執行。
• RUNREMOVE (RR) 使得可執行檔在安裝和卸載期間都執行。
這三個選項中任一個可進一步與關鍵字 RUNWAITEND (RW)配合使用,RUNWAITEND (RW)使得安裝等到執行結束方可繼續。若未指定,那麼安裝將在可執行檔啟動後馬上繼續。
依賴行(Requisite Lines)
你可以用依賴行指出一個特定的組件必須已經安裝當前的安裝方能繼續。使用下面的格式:
{UID}, Major_Version_#,Minor_Version_#,Build_#,{“Product Name”}這意味著具有指定的UID和產品名、且不早於所指定版本號碼的組件必須存在安裝才能繼續。
例如:
{0x10000123},1,0,0,{"MyDll"}指出一個叫MyDll的組件,具有UID 0x10000123和至少是1.0.0的版本號碼,必須在安裝能繼續前已經存在。依賴行應該看上去比較熟悉——因為這也是目標平台行的實現方式。目標平台行例子:
(0x101F6F88), 0, 0, 0, {"Series60ProductID"}是一個必要的聲明: 名稱為Series60ProductID的組件,其UID為0x101F6F88、版本號碼0.0.0或更高,必須存在安裝方能繼續。
從S60第三版開始,S60產品Id必須寫在方括弧中。例子:
[0x101F7961], 0, 0, 0, {"S60ProductID"}
語言支援
應用程式的多個翻譯版本可存在於單個sis檔案中。當使用者安裝sis檔案時,他們被提示選擇要安裝哪一種語言。為指定你想包含的多種語言,需在pkg檔案頂部添加語言行。語言行以‘&’開始,含有來自下面列表(不完整)的逗號分割的語言碼清單:
AM– US English
AS – Austrian German
AU – Australian English
BF – Belgian French
BL – Belgian Flemish
CS – Czech
DA – Danish
DU – Dutch
EN – UK English
FI – Finnish
FR – French
GE – German
HK – Hong Kong Chinese
HU – Hungarian
IC – Icelandic
IF – International French
IT – Italian
JA – Japanese
NO – Norwegian
NZ – New Zealand
PL – Polish
PO – Portuguese
RO - Romanian
RU – Russian
SF – Swiss French
SG – Swiss German
SK – Slovak
SL – Slovenian
SP – Spanish
SW – Swedish
TC – Taiwan Chinese
TH – Thai
TU – Turkish
ZH – Prc Chinese
一個語言行例子:
&EN, FR, FI它指出此sis檔案含有英語、法語和芬蘭語語言選擇。若不含有語言行,則認為是&EN。
限制支援的裝置
限制包檔案只安裝到某些裝置是可能的。例如,使用WiFi的應用程式應只在有WiFi的裝置上才是可安裝的。若包檔案被裝到無WiFi裝置,安裝程式會顯示一個警告資訊: 此應用程式不相容。
下例示範了一個包檔案例子,只能安裝到Nokia N80, N93, N93 和 N95:
[0x200005F9], 0, 0, 0, {"Nokia N80 ID"}
[0x20000600], 0, 0, 0, {"Nokia N93 ID"}
[0x20000605], 0, 0, 0, {"Nokia N93i ID"}
[0x2000060B], 0, 0, 0, {"Nokia N95 ID"}裝置Id列表可在S60 Platform and device identification codes中找到。
安裝裝置相關檔案
安裝依賴於使用者裝置的檔案是可能的。例如,遊戲開發人員可以為支援3D加速器的裝置建立一個特殊的DLL。對於無3D加速器裝置,包檔案應安裝標準DLL。這個可用下面的代碼來完成:
IF (MachineUID=0x20000600) OR (MachineUID=0x2000060B)
; If the device is Nokia N93 or N95, then install files in this block.
"/epoc32/release/armv5/urel/mydll_3d" -"!:/sys/bin/mydll.dll"
ELSE
; Otherwise install any files in this block.
"/epoc32/release/armv5/urel/mydll" -"!:/sys/bin/mydll.dll"
ENDIF裝置Id列表可在S60 Platform and device identification codes中找到。
安裝平台相關檔案
安裝依賴於作業系統的檔案是可能的。例如,3rd FP2版去掉了一些Bluetooth庫,因此必須安裝不同的檔案。通過檢查z:/system/install檔案夾內的檔案可獲得電話的平台:
if exists("z:/system/install/Series60v3.2.sis")
"/Epoc32/release/gcce/UREL/Common_0x123123123_fp2.dll"-"C:/sys/bin/common_0x123123123.dll"
else
"/Epoc32/release/gcce/UREL/Common_0x123123123.dll"-"C:/sys/bin/common_0x123123123.dll"
endif
本文來自CSDN部落格,轉載請標明出處:http://blog.csdn.net/xjtursh/archive/2008/08/05/2768902.aspx