• <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>
            posts - 126,  comments - 73,  trackbacks - 0

            目的:

            1.? 依賴 MFC 庫(kù)或 ATL 庫(kù)等開發(fā)的 ActiveX 控件要正常的運(yùn)行必須依賴這些庫(kù)。但是你不能保證你用戶的機(jī)器上裝有與你開發(fā)環(huán)境相同的庫(kù),所以,當(dāng)你發(fā)行一個(gè) ActiveX 控件,你必須要包證這些依賴庫(kù)的存在。

            2.? 在網(wǎng)絡(luò)上運(yùn)行的 ActiveX 控件,必須要保證你發(fā)行的控件小的足以讓用戶忍受下載的時(shí)間,當(dāng)然是越小越好。控件本身你會(huì)發(fā)現(xiàn)微不足道,但你不得不還要考慮到他支持庫(kù)的空間,你會(huì)發(fā)現(xiàn)的加上它的支持庫(kù),你的控件會(huì)變的臃腫不堪,所以你必須要找到一種方法為你的控件減減肥。

            3.? 得到控件后,使用前當(dāng)然還要給它注冊(cè),但是你別忘了,還有他那些個(gè)依賴庫(kù)的注冊(cè)工作等著你耐心的一個(gè)個(gè)的 regsvr32 掉。

            哦,天哪,用戶只是想隨便的瀏覽一個(gè)網(wǎng)頁(yè)而已卻要他做這么麻煩的工作,誰(shuí)愿意做,我們上帝們才不會(huì)關(guān)心你這些技術(shù)細(xì)節(jié),他們希望在電腦前輕點(diǎn)下鼠標(biāo)就一切正常,他們要的是自動(dòng)化!而這一切, Cab 能幫你完全解決。

            原理:

            通過高壓縮技術(shù)(比 ZIP 壓縮度還高 3 成)——打包成 Cab 壓縮文件。當(dāng)用戶第一次瀏覽你控件所在的網(wǎng)頁(yè)時(shí),它會(huì)自動(dòng)提示控件下載,下載后會(huì)根據(jù) cab 文件中的 *.inf 文本文件的來(lái)尋找你電腦的上相應(yīng)的 DLL (控件依賴庫(kù)及控件本身, ocx 本就是一種特殊的 DLL )是否注冊(cè)過,如果沒有,會(huì)自動(dòng)幫你注冊(cè),然后控件既可以正常使用。

            (注:關(guān)于 cab 壓縮技術(shù),請(qǐng)參考 MSDN 或是網(wǎng)上相關(guān)搜索)

            創(chuàng)建 cab 文件:

            1.? 創(chuàng)建 INF 文件。

            INF 文件是一個(gè)文本文件,用以指定為控件的運(yùn)行而需要顯示或下載的文件(如 DLL 文件或其他 OCX 文件)。 INF 文件使您得以將所有所需的文件捆綁在一個(gè)壓縮的 CAB 文件中。默認(rèn)情況下,版本號(hào)同用戶硬盤上的現(xiàn)有文件相同的文件不下載。有關(guān) INF 文件及其選項(xiàng)的更多信息,包括如何創(chuàng)建與平臺(tái)無(wú)關(guān)的 INF 文件,請(qǐng)參見 Platform SDK 文檔中的關(guān)于 INF 文件和使用 INF 文件(在 MSDN Library/Setup System Administration/Setup/Setup API/Overview/Setup Applications 目錄下)。

            舉例來(lái)說(shuō),下面的 INF 文件用于為 AxYourControl 控件創(chuàng)建 CAB 文件。 AxYourControl 是由某一庫(kù)支持開發(fā)的( MFC ATL 或其他),假設(shè)他所支持庫(kù)的主要由 Need1.dll Need2.dll Need3.dll 三個(gè) DLL 庫(kù)(具體有哪些庫(kù)文件根據(jù)情況查閱 MSDN 相關(guān)內(nèi)容)。

            ; Sample INF file for AxYourControl.OCX

            [version]

            signature="$CHINA$"

            AdvancedINF=2.0?

            ?

            [Add.Code]

            AxYourControl.ocx= AxYourControl.ocx

            Need1.dll= Need1.dll

            Need2.dll= Need2.dll

            Need3.dll= Need3.dll

            ?

            ; needed DLL

            [Need1.dll]

            file-win32-x86=thiscab

            FileVersion=2,00,0,7024

            DestDir=11

            RegisterServer=yes

            ?

            ; needed DLL

            [Need2.dll]

            file-win32-x86=thiscab

            FileVersion=2,00,0,7024

            DestDir=11

            RegisterServer=yes

            ?

            ; needed DLL

            [Need3.dll]

            file-win32-x86=thiscab

            FileVersion=2,00,0,7024

            DestDir=11

            RegisterServer=yes

            ?

            [AxYourControl.ocx]

            file-win32-x86=thiscab

            clsid={4CBBC676-507F-11D0-B98B-000000000000}

            FileVersion=1,0,0,1

            RegisterServer=yes?

            ; end of INF file

            INF 文件指定需要在系統(tǒng)上安裝給定版本的 Need1.DLL, Need2.DLLNeed3.DLL。如果這些DLL尚未存在于系統(tǒng)中,它將從用此 INF 創(chuàng)建的 CAB 文件中下載。“thiscab”是一個(gè)關(guān)鍵字,表示 CAB 包含此 INF。也可通過指定一條絕對(duì)或相對(duì)路徑,從一個(gè) HTTP 位置下載所需的 DLL,例如:

            				
            						
            								
            										??? file-win32-x86=http://example.microsoft.com/mydir/NEEDED.DLL 
            						
            				
            		

            關(guān)鍵字“file-win32-x86”將平臺(tái)標(biāo)識(shí)為 x86 特定的。

            可通過在 Windows 資源管理器中的文件上單擊鼠標(biāo)右鍵來(lái)獲取文件的版本號(hào)。從顯示的列表中選擇屬性,然后在顯示的對(duì)話框中選擇版本選項(xiàng)卡。有時(shí)需要在文件版本中額外插入一個(gè) 0。例如,在對(duì)話框中 ATL.DLL 的版本號(hào)顯示為 2.00.7024。而在 INF 文件中,這變?yōu)?span lang="EN-US"> 2, 00, 0, 7024

            “DestDir” 是將要加載文件的目錄所在的位置:11 指定系統(tǒng)目錄為 WINDOWS/SYSTEM WINNT/SYSTEM3210 指定 Windows 目錄、WINDOWS WINNT。如果未指定任何 DestDir(典型情況),則代碼安裝在固定的 OCCACHE 目錄中。

            “clsid” 是將要安裝的控件的 CLSID

            2.? 運(yùn)行 CABARC 實(shí)用工具。

            Cabarc.exe 是微軟的一個(gè) cab 文件制作工具。你可以到微軟的官方網(wǎng)站下載 CABIN SDK 工具包。下載后解壓安裝,在其目錄下有一個(gè) Bin 目錄下可以找到。

            ????? 應(yīng)在包含源文件的目錄下運(yùn)行 CABARC 。在命令行上,按源文件出現(xiàn)在 INF 中的順序排列它們,并將 INF 文件放在最后。例如,若要從上面的 INF 文件生成 AxYourControl 控件的 CAB 文件,請(qǐng)使用下面的命令:

            …\BIN\CABARC -s 6144 n AxYourControl .CAB Need1 .DLL Need2 .DLL Need3 .DLL AxYourControl .OCX AxYourControl .INF

            -s 選項(xiàng)在壓縮文件中保留 用于代碼簽名 的空間。 n 命令指定希望創(chuàng)建 CAB 文件。有關(guān) CABARC 命令和選項(xiàng)的列表,請(qǐng)?jiān)诿钚猩蟽H鍵入 CABARC

            …\BIN\ CABARC

            其他的一些補(bǔ)充:

            1.? 需要 MFC 控件中包含的 DLL 文件有 MSVCRT.DLL MFC42.DLL OLEPRO32.DLL ,其中 MFC42.DLL 視你開發(fā)環(huán)境的 MFC 版本所定,例如本人是在 vc7 環(huán)境下開發(fā)控件的,所以,應(yīng)該為 MFC71.DLL

            2.? ActiveX 空間創(chuàng)建 cab 文件還有一個(gè)重要的話題就是 將其打包為簽名壓縮 (CAB) 文件。簽名文件使用戶可以放心地下載代碼安全的控件。關(guān)于這個(gè)話題,需要申請(qǐng)發(fā)行證書,詳細(xì)情況可參見 MSDN

            ms-help://MS.MSDNQTR.2003FEB.2052/vccore/html/Creating_Signed_CAB_Files_for_MFC_and_ATL_Controls.htm

            3.? 關(guān)于在創(chuàng)建 INF 時(shí) DLL 的版本,你可以鼠標(biāo)右擊點(diǎn)出他的屬性對(duì)話框,在版本一欄就可以看到了,注意,填寫時(shí),版本號(hào)之間的“ . ”號(hào)變換為“,”。

            posted on 2007-01-08 17:12 我風(fēng) 閱讀(853) 評(píng)論(0)  編輯 收藏 引用

            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


            <2008年5月>
            27282930123
            45678910
            11121314151617
            18192021222324
            25262728293031
            1234567

            常用鏈接

            留言簿(12)

            隨筆分類

            隨筆檔案

            文章檔案

            相冊(cè)

            收藏夾

            C++

            MyFavorite

            搜索

            •  

            積分與排名

            • 積分 - 326155
            • 排名 - 75

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

            久久精品成人免费看| 亚洲欧洲日产国码无码久久99| 亚洲国产婷婷香蕉久久久久久| 久久99热国产这有精品| 国产精品久久久久久福利漫画| 精品久久久久久亚洲精品| 少妇人妻88久久中文字幕| 国产美女亚洲精品久久久综合| 7777精品久久久大香线蕉| 午夜精品久久久久久久| 伊人久久无码中文字幕| 一本色道久久99一综合| 久久亚洲精品中文字幕| AV无码久久久久不卡蜜桃| 亚洲国产精品婷婷久久| 久久国产视屏| 99久久精品免费看国产一区二区三区 | 久久精品卫校国产小美女| 久久久久精品国产亚洲AV无码| 亚洲国产精品久久电影欧美| 99国产欧美久久久精品蜜芽 | 伊人久久综合精品无码AV专区| 欧美精品久久久久久久自慰| 麻豆精品久久精品色综合| 久久综合视频网站| 久久偷看各类wc女厕嘘嘘 | 亚洲综合精品香蕉久久网97| 久久亚洲中文字幕精品一区四| 99久久精品免费看国产一区二区三区| 婷婷综合久久中文字幕蜜桃三电影| 久久青青草原国产精品免费| 色综合久久88色综合天天 | 性色欲网站人妻丰满中文久久不卡| 天天久久狠狠色综合| 综合久久一区二区三区 | 久久久久久九九99精品| 色综合久久综合网观看| 国产精品久久新婚兰兰| 国产精品九九久久精品女同亚洲欧美日韩综合区| 久久男人AV资源网站| 精品亚洲综合久久中文字幕|