pkg檔案的一些高階選項

2021-04-27 02:14:17 字數 4276 閱讀 6420

"license.txt" - " ", filetext, textcontinue
filetext指出在安裝期間顯示該檔案。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包能包含乙個特殊的解除安裝程式,負責在解除安裝時找到並移除恰當的檔案。這樣的乙個程式可以在解除安裝時被自動執行,如下:

rr (runremove)引數在移除(解除安裝)時要執行的檔案。rw (runwaitend)指明(系統)移除工具應啟動這個程式然後等待,直到繼續安裝之前執行完。

能在你的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)使得安裝等到執行結束方可繼續。若未指定,那麼安裝將在可執行檔案啟動後馬上繼續。

你可以用依賴行指出乙個特定的部件必須已經安裝當前的安裝方能繼續。使用下面的格式:

, major_version_#,minor_version_#,build_#,
這意味著具有指定的uid和產品名、且不早於所指定版本號的部件必須存在安裝才能繼續。

例如:

,1,0,0,
指出乙個叫mydll的部件,具有uid 0x10000123和至少是1.0.0的版本號,必須在安裝能繼續前已經存在。依賴行應該看上去比較熟悉——因為這也是目標平台行的實現方式。目標平台行例子:

(0x101f6f88), 0, 0, 0,
是乙個必要的宣告: 名稱為series60productid的部件,其uid為0x101f6f88、版本號0.0.0或更高,必須存在安裝方能繼續。

從s60第三版開始,s60產品id必須寫在方括弧中。例子:

[0x101f7961], 0, 0, 0,

應用程式的多個翻譯版本可存在於單個sis檔案中。當使用者安裝sis檔案時,他們被提示選擇要安裝哪一種語言。為指定你想包含的多種語言,需在pkg檔案頂部新增語言行。語言行以『&』開始,含有來自下面列表(不完整)的逗號分割的語言碼清單:

乙個語言行例子:

&en, fr, fi
它指出此sis檔案含有英語、法語和芬蘭語語言選擇。若不含有語言行,則認為是&en。

限制包檔案只安裝到某些裝置是可能的。例如,使用wifi的應用程式應只在有wifi的裝置上才是可安裝的。若包檔案被裝到無wifi裝置,安裝程式會顯示乙個警告資訊: 此應用程式不相容。

下例演示了乙個包檔案例子,只能安裝到nokia n80, n93, n93 和 n95:

[0x200005f9], 0, 0, 0, 

[0x20000600], 0, 0, 0,

[0x20000605], 0, 0, 0,

[0x2000060b], 0, 0, 0,

裝置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

交叉編譯的一些選項

這是 c 與 c 編譯器命令。預設值一般是 gcc 與 g 這是用於預處理階段的選項。ar 函式庫開啟包程式。預設命令是 ar as 組合語言編譯程式。預設命令是 as gcc編譯程式的基本過程 cross compile gcc根據輸入檔案的字尾來確定檔案的型別,然後根據使用者的編譯選項 包括優化...

git的一些高階

git clone git git.test.git git branch a 列出有幾個branch,其中一般mask是星號的,當前的。git checkout b myomap4 origin omap4 dev 新checkout 乙個分支 origin omap4 dev 並命名為myoma...

gcc 中一些有用的選項

gcc print libgcc file name print current library search paths and their order ld verbose grep search show all files succeessfully opened during linkin...