• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            隨筆 - 224  文章 - 41  trackbacks - 0
            <2008年11月>
            2627282930311
            2345678
            9101112131415
            16171819202122
            23242526272829
            30123456

            享受編程

            常用鏈接

            留言簿(11)

            隨筆分類(159)

            隨筆檔案(224)

            文章分類(2)

            文章檔案(4)

            經(jīng)典c++博客

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜

            PKG語法詳細說明 常用高級選項

            連接:http://www.yuelongr.cn/post/880.html

            另一篇PKG文章鏈接:

            [symbian編程中pkg文件詳細解密](http://www.yuelongr.cn/post/39.html)

            Contents

            文本警告

            多語言文本提示

            刪除運行時生成的文件

            內(nèi)嵌SIS文件

            在安裝或卸載時運行執(zhí)行文件

            必備程序選項

            語言支持

            手機支持

            安裝特定手機所需文件

            10 安裝指定平臺的文件

            11 安裝條件

            12 外部鏈接

            13 內(nèi)部鏈接

             

             

            文本警告

            在安裝時你可以指定一段文本顯示,這段文本不會復(fù)制到手機上,只是在安裝時顯示需知信息或相關(guān)協(xié)議。在pkg中增加如下代碼:

            "license.txt" - "", FILETEXT, TEXTCONTINUE


            FILETEXT 表明這個文件在安裝時顯示. TEXTCONTINUE提供了一個繼續(xù)按鈕用來關(guān)閉文本內(nèi)容,繼續(xù)安裝程序。


            你也可以將TEXTCONTINUE替換為如下選項:

            • TEXTSKIP 顯示/選項,如果選擇是,那么就會繼續(xù)安裝,如果選擇否,那么下段文本就會跳過,但安裝還是會正常繼續(xù)。

            • TEXTEXIT 顯示/選項,如果選擇是,那么安裝就會繼續(xù),反之安裝就會終止,任何你已安裝的文件會被移除。

            • TEXTABORT 顯示/選項,如果選擇否,那么安裝會終止,但是已經(jīng)安裝的將不會刪除,刪除運行時生成的文件。

             

            多語言文本提示

            文本提示的語言可以根據(jù)手機缺省語言自己適配,如:

            IF (LANGUAGE=2) ; If the language is French, then display mytext.t02
            "mytext.t02"-"", FILETEXT, TEXTABORT
            ELSEIF (LANGUAGE=3) ; If the language is German, then display mytext.t03
            "mytext.t03"-"", FILETEXT, TEXTABORT
            ELSE ; Otherwise display mytext.t01
            "mytext.t01"-"", FILETEXT, TEXTABORT
            ENDIF

            上述示例當(dāng)手機缺省語言為法語時將顯示mytext.t02,當(dāng)為德語時則顯示mytext.t03,其他語種則為mytext.t01

            此外,你需要有相應(yīng)語言定義在PKG

            ;Language - standard language definitions
            &EN,FR,GE

             

            刪除運行時生成的文件

            當(dāng)你要卸載一個sis文件時,卸載程序?qū)瞥性诎惭b時已經(jīng)拷貝到手機上的文件。但那些運行時生成的文件怎么辦?

            如果程序生成文件名在安裝時就要知道,那么需要在pkg文件中增加'null files'pkg中這些文件的格式(與語言無關(guān))如下:

            "" - "C\system\data\my_runtime_generated_file", FILENULL

            這里my_runtime_generated_file是個程序生成的文件,FN(FILENULL)參數(shù)表示這個文件尚未存在,所以沒有包含在sis文件中。是程序運行時才會生成的,而在程序卸載時將會被刪除。注意源文件并不重要,只要為空即可("")。同樣注意這個文件在升級為新版時不會被刪除,這樣就可以確保一些如ini等存儲程序參數(shù)的文件不會在升級時丟失。

            FILENULL選項在Symbian OS v9.x中并不支持,建議開發(fā)者在程序的data cage中生成文件,這樣可以在卸載時徹底刪除。

            如果程序生成文件的數(shù)目(或文件名)不可知,這樣的情況就比較復(fù)雜了。有一個解決方案,sis可以包含一個卸載程序,可以用來查找并刪除相關(guān)文件。這樣程序需要在卸載時自動運行它:

            "\epoc32\release\armi\urel\uninst.app" - "!:\system\apps\myapp\uninst.app", RR, RW

            RR (RUNREMOVE)參數(shù)設(shè)置該文件在卸載時自動運行. RW (RUNWAITEND)表明系統(tǒng)將會等待該程序完成后才繼續(xù)卸載過程。

             

            內(nèi)嵌SIS文件

            你可以包含另一個sis文件,按照如下代碼設(shè)置:

            @”sis file name”,(UID)

            例如@”prog1.sis”,(0x12341234)表示安裝prog1.sis,它的UID0x12341234。注意在卸載時,這里內(nèi)嵌的sis將要等系統(tǒng)判定沒有其他程序使用它才會被刪除(即沒有其他安裝組件包括這個內(nèi)嵌sis在他們的pkg文件中)

             

            在安裝或卸載時運行執(zhí)行文件

            你可以在指定可執(zhí)行文件那行的末尾添加FILERUN (FR)RUNINSTALL (RI)讓它在安裝時運行

            例如:

            "\Symbian\9.1\S60_3rd_MR\Epoc32\release\gcce\urel\myprogram.exe"-"!:\sys\bin\myprogram.exe",FR,RI

            將會安裝myprogram.exe,并在安裝過程執(zhí)行它。這里RUNINSTALL關(guān)鍵字也可以被下列選項取代:


            • RUNREMOVE (RR) 指定程序只在卸載時執(zhí)行它;

            • RUNBOTH (RB)在安裝和卸載時都要執(zhí)行這個程序

            上述三個選項最好配以RUNWAITEND (RW)關(guān)鍵字,它指明安裝程序要等候該程序執(zhí)行完畢再繼續(xù)。如果沒有指明這個關(guān)鍵字,那么程序啟動后,安裝就將繼續(xù)了。

            FILERUN (FR) RUNINSTALL (RI) 選項無法工作于自簽名軟件,它需要一個受信簽名(Open Signed Online or Open Signed Offline during R&D stage and Symbian Signed when

            released),否則程序所需能力將不能得以安裝。

             

            必備程序選項

            你可以指定一個必備程序選項,它表明系統(tǒng)必須先安裝有它,才能繼續(xù)下面的安裝,它的格式如下:

            {UID}, Major_Version_#,Minor_Version_#,Build_#,{“Product Name”}

            它表明這個組件的UID和名稱,以及所需最早版本號,否則將不能繼續(xù)下面的安裝。

            例如:

            {0x10000123},1,0,0,{"MyDll"}

            表明組件名為MyDllUID0x10000123,以及最小版本號1.0.0,表明系統(tǒng)至少要安裝有該版本。必備程序選項也可以如下,這里表明所需的目標(biāo)平臺:

            (0x101F6F88), 0, 0, 0, {"Series60ProductID"}

            這里所需的組件就是Series60ProductID, 而版本號至少為0.0.0或更高,都是安裝所必需的條件。

            從第三版開始,S60平臺標(biāo)識將顯示在方括號中,具體如下:

            [0x101F7961], 0, 0, 0, {"S60ProductID"}

            備注:必須是[0x1028315F]否則在安裝的過程中會提示版本不兼容的問題。 

            語言支持

            程序可以多個語言版本,而只要一個sis包即可。當(dāng)用戶安裝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, N93N95手機上。

            [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"}

            手機型號的標(biāo)識可以參考S60 Platform and device identification codes.

             

            安裝特定手機所需文件

            可能我們的部分安裝文件需要依賴用戶手機而定,例如一個游戲開發(fā)者可能需要生成一個指定的DLL,以便支持3D加速。那么對沒有3D加速的手機,

            就只能安裝標(biāo)準(zhǔn)的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

            手機標(biāo)識代碼可以在這里找到S60 Platform and device identification codes.

             

            安裝指定平臺的文件

            可能我們部分安裝文件依賴于手機的操作系統(tǒng),例如第三版FP2就去掉了一些藍牙連接庫,這樣的不同導(dǎo)致我們在安裝時也需要區(qū)別對待,手機平臺可以在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

             

            安裝條件

            下列函數(shù)也可以使用在pkg:

            package()用來測試一個安裝包是否存在;

            exists()用來測試給定文件是否存在

            appprop()獲得注冊表中的相關(guān)屬性

            DevProp()函數(shù)用來詢問手機能力值,注意不是直接提供的名字屬性
             

            package():如果指定UID已經(jīng)安裝將返回true,否則返回false,下列代碼表示如果UID0x11223344那么將安裝foo.txt文件

            IF package(0x11223344)
            "foo.txt"-"c:\foo.txt"
            ENDIF

            exists(): 如果test.txt存在則返回true,將安裝新的

            if exists("c:\test.txt")
            "text\exists.txt"-"!:\private\0x01234567\exists.txt"

            appprop(): 該函數(shù)的第一個參數(shù)是package UID.第二個參數(shù)是獲取的propid(property id). 下列代碼測試了其他包的能力

            ;Dependencies
            (0x10000003), 1, 2, 3, {"Depend-EN"}
             
            if (appprop(0x10000003,0) = 1)
            "text\appprop1.txt"-"!:\Documents\appprop1.txt"
            elseif (appprop(0x10000003,0) = 2)
            "text\appprop2.txt"-"!:\Documents\appprop2.txt"
            endif

            DevProp(): 手機支持能力函數(shù),它提供了直接訪問HAL API的能力,即HAL::Get()函數(shù)。這個函數(shù)可以有條件項使用,用來詢問手機的能力。注意這個能力不是名字屬性

            +(0=1,1=2,3=-1)
             
            if DevProp(1)
            "text\appprop1.txt"-"", FT, TC
            endif

            posted on 2010-02-25 09:43 漂漂 閱讀(633) 評論(0)  編輯 收藏 引用 所屬分類: symbian開發(fā)
            国内精品伊人久久久久AV影院| 办公室久久精品| 国产精品免费看久久久| 国产精品欧美亚洲韩国日本久久 | 国产成人无码精品久久久性色 | 国产精品久久网| 亚洲国产成人久久一区WWW| 人妻少妇久久中文字幕一区二区| 久久九九亚洲精品| 天天爽天天狠久久久综合麻豆| 9191精品国产免费久久| 久久精品国产乱子伦| 久久99久久99小草精品免视看| 久久久久久久97| 久久久久久亚洲精品不卡| 久久AV高清无码| 精品久久久久久中文字幕大豆网| 国产精品99久久不卡| 久久91精品久久91综合| 亚洲国产欧美国产综合久久| 久久精品免费大片国产大片| 狠狠久久亚洲欧美专区| 亚洲午夜久久久久久久久久| 亚洲另类欧美综合久久图片区| 久久久久亚洲av毛片大| 国产激情久久久久影院| 久久久青草久久久青草| 国内精品久久久久影院优| 久久久久亚洲AV无码网站| 久久无码专区国产精品发布| 亚洲国产日韩欧美综合久久| 久久人人超碰精品CAOPOREN| 久久狠狠一本精品综合网| 久久这里只精品国产99热 | 色天使久久综合网天天| 国产精品久久久久久久久久免费| 免费国产99久久久香蕉| 国产成人久久精品二区三区| 国产精品久久久99| 久久久久久亚洲精品无码| 日韩欧美亚洲综合久久影院Ds|