• <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 能幫你完全解決。

            原理:

            通過(guò)高壓縮技術(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è)過(guò),如果沒有,會(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。也可通過(guò)指定一條絕對(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 特定的。

            可通過(guò)在 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:34 我風(fēng) 閱讀(479) 評(píng)論(0)  編輯 收藏 引用

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


            <2013年4月>
            31123456
            78910111213
            14151617181920
            21222324252627
            2829301234
            567891011

            常用鏈接

            留言簿(12)

            隨筆分類

            隨筆檔案

            文章檔案

            相冊(cè)

            收藏夾

            C++

            MyFavorite

            搜索

            •  

            積分與排名

            • 積分 - 327094
            • 排名 - 75

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

            亚洲人成精品久久久久| 久久精品人成免费| 欧美亚洲另类久久综合婷婷| 久久996热精品xxxx| 99久久国产综合精品女同图片| 久久久久久久97| 久久99中文字幕久久| 少妇熟女久久综合网色欲| 亚洲国产精品无码久久SM | 久久AAAA片一区二区| 热久久视久久精品18| 久久精品国产亚洲网站| 欧美日韩精品久久免费| 国产精品美女久久久网AV| 国产成人久久精品一区二区三区| 久久综合久久综合九色| 久久婷婷五月综合色高清| 亚洲欧美成人久久综合中文网 | 国产成人精品免费久久久久| 欧美精品丝袜久久久中文字幕| 国产一级做a爰片久久毛片| 亚洲AV日韩AV天堂久久| 伊人久久五月天| 久久乐国产精品亚洲综合| 国产69精品久久久久99尤物| 韩国免费A级毛片久久| 亚洲中文字幕无码久久精品1| 欧美久久一级内射wwwwww.| 国内精品久久久久久中文字幕| 99久久久国产精品免费无卡顿| 国产亚洲美女精品久久久2020| 少妇久久久久久被弄到高潮| 久久精品国产99久久丝袜| 久久国产精品免费| 久久亚洲国产成人影院网站| 久久涩综合| 思思久久99热只有频精品66| 久久午夜夜伦鲁鲁片免费无码影视 | 99久久国产热无码精品免费| 久久99国产亚洲高清观看首页| 国产精品久久久久aaaa|