• <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 庫或 ATL 庫等開發的 ActiveX 控件要正常的運行必須依賴這些庫。但是你不能保證你用戶的機器上裝有與你開發環境相同的庫,所以,當你發行一個 ActiveX 控件,你必須要包證這些依賴庫的存在。

            2.? 在網絡上運行的 ActiveX 控件,必須要保證你發行的控件小的足以讓用戶忍受下載的時間,當然是越小越好。控件本身你會發現微不足道,但你不得不還要考慮到他支持庫的空間,你會發現的加上它的支持庫,你的控件會變的臃腫不堪,所以你必須要找到一種方法為你的控件減減肥。

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

            哦,天哪,用戶只是想隨便的瀏覽一個網頁而已卻要他做這么麻煩的工作,誰愿意做,我們上帝們才不會關心你這些技術細節,他們希望在電腦前輕點下鼠標就一切正常,他們要的是自動化!而這一切, Cab 能幫你完全解決。

            原理:

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

            (注:關于 cab 壓縮技術,請參考 MSDN 或是網上相關搜索)

            創建 cab 文件:

            1.? 創建 INF 文件。

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

            舉例來說,下面的 INF 文件用于為 AxYourControl 控件創建 CAB 文件。 AxYourControl 是由某一庫支持開發的( MFC ATL 或其他),假設他所支持庫的主要由 Need1.dll Need2.dll Need3.dll 三個 DLL 庫(具體有哪些庫文件根據情況查閱 MSDN 相關內容)。

            ; 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 文件指定需要在系統上安裝給定版本的 Need1.DLL, Need2.DLLNeed3.DLL。如果這些DLL尚未存在于系統中,它將從用此 INF 創建的 CAB 文件中下載。“thiscab”是一個關鍵字,表示 CAB 包含此 INF。也可通過指定一條絕對或相對路徑,從一個 HTTP 位置下載所需的 DLL,例如:

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

            關鍵字“file-win32-x86”將平臺標識為 x86 特定的。

            可通過在 Windows 資源管理器中的文件上單擊鼠標右鍵來獲取文件的版本號。從顯示的列表中選擇屬性,然后在顯示的對話框中選擇版本選項卡。有時需要在文件版本中額外插入一個 0。例如,在對話框中 ATL.DLL 的版本號顯示為 2.00.7024。而在 INF 文件中,這變為 2, 00, 0, 7024

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

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

            2.? 運行 CABARC 實用工具。

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

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

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

            -s 選項在壓縮文件中保留 用于代碼簽名 的空間。 n 命令指定希望創建 CAB 文件。有關 CABARC 命令和選項的列表,請在命令行上僅鍵入 CABARC

            …\BIN\ CABARC

            其他的一些補充:

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

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

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

            3.? 關于在創建 INF DLL 的版本,你可以鼠標右擊點出他的屬性對話框,在版本一欄就可以看到了,注意,填寫時,版本號之間的“ . ”號變換為“,”。

            posted on 2007-01-08 17:34 我風 閱讀(473) 評論(0)  編輯 收藏 引用
            <2025年5月>
            27282930123
            45678910
            11121314151617
            18192021222324
            25262728293031
            1234567

            常用鏈接

            留言簿(12)

            隨筆分類

            隨筆檔案

            文章檔案

            相冊

            收藏夾

            C++

            MyFavorite

            搜索

            •  

            積分與排名

            • 積分 - 326057
            • 排名 - 75

            最新評論

            閱讀排行榜

            評論排行榜

            亚洲AV无码久久精品色欲 | 久久亚洲精品中文字幕| 久久婷婷五月综合成人D啪| 中文字幕日本人妻久久久免费 | 久久高潮一级毛片免费| 久久综合视频网站| 久久久久久九九99精品| 久久精品中文字幕第23页| 久久久久久久波多野结衣高潮| 久久午夜伦鲁片免费无码| 伊人久久大香线蕉精品| 精品国产乱码久久久久久呢 | 久久久久亚洲AV无码网站| 久久九九亚洲精品| 成人久久免费网站| 精品欧美一区二区三区久久久| 亚洲精品乱码久久久久久按摩| 久久精品人妻一区二区三区| 亚洲国产精品无码成人片久久| 久久久久一本毛久久久| 国产成人精品久久一区二区三区| 区亚洲欧美一级久久精品亚洲精品成人网久久久久 | 欧洲成人午夜精品无码区久久| 国产69精品久久久久9999| 亚洲精品无码久久久久sm| 精品久久久久久久国产潘金莲 | 国产99久久精品一区二区| 一本久道久久综合狠狠爱| 国产精品久久久久久久久软件| 久久久久国产成人精品亚洲午夜| 青青青国产精品国产精品久久久久| 久久夜色精品国产噜噜亚洲AV| 日韩欧美亚洲综合久久 | 久久精品无码一区二区app| 18岁日韩内射颜射午夜久久成人 | 久久国产精品无码网站| 国产精品久久久久久福利漫画| 久久精品中文无码资源站 | 久久精品亚洲欧美日韩久久| 大蕉久久伊人中文字幕| 久久亚洲高清观看|