• <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ù)等開(kāi)發(fā)的 ActiveX 控件要正常的運(yùn)行必須依賴這些庫(kù)。但是你不能保證你用戶的機(jī)器上裝有與你開(kāi)發(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ò),如果沒(méi)有,會(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)同用戶硬盤(pán)上的現(xiàn)有文件相同的文件不下載。有關(guān) INF 文件及其選項(xiàng)的更多信息,包括如何創(chuàng)建與平臺(tái)無(wú)關(guān)的 INF 文件,請(qǐng)參見(jiàn) 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ù)支持開(kāi)發(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 視你開(kāi)發(fā)環(huán)境的 MFC 版本所定,例如本人是在 vc7 環(huán)境下開(kāi)發(fā)控件的,所以,應(yīng)該為 MFC71.DLL

            2.? ActiveX 空間創(chuàng)建 cab 文件還有一個(gè)重要的話題就是 將其打包為簽名壓縮 (CAB) 文件。簽名文件使用戶可以放心地下載代碼安全的控件。關(guān)于這個(gè)話題,需要申請(qǐng)發(fā)行證書(shū),詳細(xì)情況可參見(jiàn) 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ì)話框,在版本一欄就可以看到了,注意,填寫(xiě)時(shí),版本號(hào)之間的“ . ”號(hào)變換為“,”。

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

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


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

            常用鏈接

            留言簿(12)

            隨筆分類

            隨筆檔案

            文章檔案

            相冊(cè)

            收藏夾

            C++

            MyFavorite

            搜索

            •  

            積分與排名

            • 積分 - 326066
            • 排名 - 75

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

            a级毛片无码兔费真人久久| 99精品久久久久久久婷婷| 久久夜色精品国产www| 久久99国产精品久久久| 色妞色综合久久夜夜| 色诱久久av| 亚洲国产成人久久综合一区77| 99久久综合国产精品二区| 久久青青草原精品影院| 亚洲伊人久久大香线蕉苏妲己| 91久久国产视频| 99久久婷婷国产一区二区| 午夜不卡888久久| 久久精品成人免费观看97| 久久99精品久久久久久9蜜桃| 国产精品gz久久久| 久久婷婷五月综合色99啪ak| 亚洲а∨天堂久久精品| 久久久久久国产a免费观看黄色大片| 亚洲欧美日韩精品久久亚洲区 | 精品久久久噜噜噜久久久| 久久久无码精品亚洲日韩按摩| 久久久老熟女一区二区三区| 狠狠干狠狠久久| 久久精品无码免费不卡| 精品久久久久久久久免费影院| 丁香色欲久久久久久综合网| 99久久人妻无码精品系列蜜桃| 久久久精品午夜免费不卡| 久久九九久精品国产免费直播| 武侠古典久久婷婷狼人伊人| 亚洲中文久久精品无码| 免费国产99久久久香蕉| 久久婷婷色香五月综合激情| 国产情侣久久久久aⅴ免费| 91久久九九无码成人网站| 综合久久给合久久狠狠狠97色 | 97精品伊人久久大香线蕉app| 草草久久久无码国产专区| 国产精品久久新婚兰兰| 久久精品免费一区二区三区|