• <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>

            S.l.e!ep.¢%

            像打了激速一樣,以四倍的速度運(yùn)轉(zhuǎn),開(kāi)心的工作
            簡(jiǎn)單、開(kāi)放、平等的公司文化;尊重個(gè)性、自由與個(gè)人價(jià)值;
            posts - 1098, comments - 335, trackbacks - 0, articles - 1
              C++博客 :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

            如何打包網(wǎng)頁(yè)中的 MFC 控件

            Posted on 2009-09-01 16:05 S.l.e!ep.¢% 閱讀(790) 評(píng)論(0)  編輯 收藏 引用 所屬分類(lèi): COM
            如何打包網(wǎng)頁(yè)中的 MFC 控件

            如何打包網(wǎng)頁(yè)中的 MFC 控件

            本文的發(fā)布號(hào)曾為 CHS167158

            本頁(yè)

            展開(kāi)全部 | 關(guān)閉全部

            概要
            在使用 OBJECT 標(biāo)記將 ActiveX 控件嵌入網(wǎng)頁(yè)中時(shí),用于指定下載位置的 CODEBASE 屬性可以指向 .cab 文件。建議使用這種方法打包 MFC...

            在使用 OBJECT 標(biāo)記將 ActiveX 控件嵌入網(wǎng)頁(yè)中時(shí),用于指定下載位置的 CODEBASE 屬性可以指向 .cab 文件。建議使用這種方法打包 MFC ActiveX 控件。在 CAB 文件中打包 MFC ActiveX 控件時(shí),允許控件中包含 .inf 文件以便對(duì) ActiveX 控件的安裝進(jìn)行控制;允許對(duì)相關(guān) DLL 進(jìn)行命名并提供位置;允許代碼簽名以及自動(dòng)壓縮代碼以便更快地進(jìn)行下載。

            更多信息
            ActiveX 控件是使用 OBJECT 標(biāo)記嵌入到網(wǎng)頁(yè)中的。OBJECT 標(biāo)記的 CODEBASE 屬性指定從中下載控件的位置。CODEBASE 可以成功地指...

            ActiveX 控件是使用 OBJECT 標(biāo)記嵌入到網(wǎng)頁(yè)中的。OBJECT 標(biāo)記的 CODEBASE 屬性指定從中下載控件的位置。CODEBASE 可以成功地指向一組不同的文件類(lèi)型。

            例如,CODEBASE 可以直接指向 .ocx 文件,如下所示:
            CODEBASE="http://example.microsoft.com/somecontrol.ocx#version=4,70,0,1086"
            				
            因?yàn)檫@將僅下載和安裝 .ocx 文件,所以這種解決方案依賴于客戶機(jī)上已有的任何必要的支持 DLL。在多數(shù)情況下,應(yīng)該假設(shè)這些 DLL 不會(huì)存在于客戶端上,而且不是正確的版本。

            另一種可供選擇的方法是將 CODEBASE 指向 .inf 文件,例如:
            CODEBASE="http://example.microsoft.com/doyoutrustme.inf"
            				
            .inf 文件控制 .ocx 文件及其支持文件的安裝。不推薦使用這種方法,因?yàn)檫@種方法不能對(duì) .inf 文件進(jìn)行簽名(請(qǐng)參見(jiàn)“參考資源”一節(jié)以獲得有關(guān)代碼簽名的參考資料)。

            最佳的解決方案是 CODEBASE 指向 CAB 文件。使用這種方法,可以引用支持 DLL 并對(duì) CAB 文件進(jìn)行簽名。

            注意:如果遵循以下引用 MFC DLL 的說(shuō)明,當(dāng)客戶端上已有 MFC DLL 時(shí),則不對(duì)它們進(jìn)行下載。CODEBASE 行類(lèi)似如下內(nèi)容:
            CODEBASE="http://example.microsoft.com/acontrol.cab#version=1,2,0,0"
            				
            注意,其中的 #Version 信息適用于 OBJECT 標(biāo)記的 CLASSID 參數(shù)所指定的控件版本。

            Cab 打包概述

            在 Cabinet 軟件開(kāi)發(fā)工具包(也稱為 Cabinet SDK 或 CAB 開(kāi)發(fā)工具包)中,可以找到構(gòu)造 CAB (.cab) 文件所需的工具。請(qǐng)參見(jiàn)以下 Microsoft 網(wǎng)站:
            Microsoft Cabinet SDK
            http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dncabsdk/html/cabdl.asp (http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dncabsdk/html/cabdl.asp)
            CODEBASE 指向的 CAB 文件應(yīng)當(dāng)包含 .ocx 文件和控制 ActiveX 控件安裝的 .inf 文件。在此 CAB 文件中,不應(yīng)包含系統(tǒng)中已有的相關(guān) DLL(如 MFC DLL)。相反,MFC DLL 和其他相關(guān) DLL 應(yīng)當(dāng)包裝在單獨(dú)的 CAB 文件中,并且可以由控件的 .inf 文件引用。以下示例說(shuō)明如何打包 MFC Spindial 示例控件。

            將 Spindial 控件包含到網(wǎng)頁(yè)中的 OBJECT 標(biāo)記類(lèi)似以下內(nèi)容:
               <OBJECT ID="Spindial1" WIDTH=200 HEIGHT=200
               CLASSID="CLSID:06889605-B8D0-101A-91F1-00608CEAD5B3"
               CODEBASE="http://example.microsoft.com/spindial.cab#Version=1,0,0,001">
            
                     <PARAM NAME="_Version" VALUE="65536">
                     <PARAM NAME="_ExtentX" VALUE="2646">
                     <PARAM NAME="_ExtentY" VALUE="1323">
                     <PARAM NAME="_StockProps" VALUE="0">
                     <PARAM NAME="NeedlePosition" VALUE="2">
               </OBJECT>
            				
            在此示例中,Spindial.cab 必須包含兩個(gè)文件:Spindial.ocx 和 Spindial.inf。創(chuàng)建此 CAB 文件的命令類(lèi)似以下內(nèi)容(具體取決于 Cabinet 開(kāi)發(fā)工具包的安裝路徑):
            C:\CabDevKit\cabarc.exe N spindial.cab spindial.ocx spindial.inf
            				
            以下是有關(guān) MFC Spindial 控件的示例文件 .inf。通過(guò)將 Spindial 信息更改為所需的 MFC ActiveX 控件信息,可以修改此 .inf 文件以下載任何 MFC ActiveX 控件。請(qǐng)參見(jiàn)以下注釋。
               ; ========================= spindial.inf ========================
            
               ; This .inf file will control the installation of the MFC Spindial
               ; control. This control has been compiled with Visual C++ version 4.2.
               ; The FileVersion tags in the dependent DLLs section on this file
               ; reflect this requirement.
            
               [version]
               ; version signature (same for both NT and Win95) do not remove
               signature="$CHICAGO$"
               AdvancedINF=2.0
            
               [Add.Code]
               spindial.ocx=spindial.ocx
               ; These are the necessary supporting DLLs for MFC 4.2 ActiveX Controls
               mfc42.dll=mfc42.dll
               msvcrt.dll=msvcrt.dll
               olepro32.dll=olepro32.dll
               ; thiscab is a keyword which, in this case, means that Spindial.ocx
               ; can be found in the same .cab file as this .inf file
               ; file-win32-x86 is an x86 platform specific identifier
               ; See the ActiveX SDK - ActiveX Controls - Internet Component Download -
               ; Packaging component code for automatic download
            
               [spindial.ocx]
               file-win32-x86=thiscab
               ; *** add your controls CLSID here ***
               clsid={06889605-B8D0-101A-91F1-00608CEAD5B3}
               ; Add your ocx's file version here.
               FileVersion=1,0,0,001
               RegisterServer=yes
            
               ; dependent DLLs
               [msvcrt.dll]
               ; This is an example of conditional hook. The hook only gets processed
               ; if msvcrt.dll of the specified version is absent on client machine.
               FileVersion=4,20,0,6164
               hook=mfc42installer
            
               [mfc42.dll]
               FileVersion=4,2,0,6256
               hook=mfc42installer
            
               [olepro32.dll]
               FileVersion=4,2,0,6068
               hook=mfc42installer
            
               [mfc42installer]
               file-win32-x86=VALUE=http://activex.microsoft.com/controls/vc/mfc42.cab
               ; If dependent DLLs are packaged directly into the above cabinet file
               ; along with an .inf file, specify that .inf file to run as follows:
               ;InfFile=mfc42.inf
               ; The mfc42.cab file actually contains a self extracting executable.
               ; In this case we specify a run= command.
               run=%EXTRACT_DIR%\mfc42.exe
            
               ; ====================== end of spindial.inf =====================
            				
            根據(jù)控件以及創(chuàng)建控件所使用的 MFC 版本,需要對(duì)此 .inf 文件的以下部分加以修改:
            • 對(duì) Spindial 的任何引用均應(yīng)更改為控件的名稱。這包括注釋和以下內(nèi)容:
                 spindial.ocx=spindial.ocx
                 [spindial.ocx]
              					
            • 應(yīng)該將以下內(nèi)容更改為控件的正確 CLSID 和文件版本:
                 clsid={06889605-B8D0-101A-91F1-00608CEAD5B3}
                 FileVersion=1,0,0,001
              						
              可以從上述控件的 ODL 文件中獲得控件的 CLSID。CLSID 與控件的 coclass 有關(guān)。例如,上述 CLSID 是從 Spindial.odl 的以下部分中獲得的:
                 [ uuid(06889605-B8D0-101A-91F1-00608CEAD5B3),
              
                   helpstring("Spindial Control"), control ]
                   coclass Spindial
              						
              可以從控件的版本資源中獲得控件的文件版本。當(dāng)版本資源對(duì)任何文件都適用時(shí),可以使用 Visual Studio 打開(kāi)文件(此例中為 Spindial.ocx)版本資源以獲得文件版本。從文件菜單中,選擇打開(kāi),然后單擊打開(kāi)為: 資源。打開(kāi) Version 資源;所需的文件版本就在 FILEVERSION 后面列出。
            • 所要進(jìn)行的最后一項(xiàng)更改是,為每個(gè) MFC DLL([mfc42.dll]、[olepro32.dll] 和 [mscvrt.dll])輸入正確的文件版本。注意,如果使用的是 Visual C++ 4.1 或更早版本,則需要將對(duì) Mfc42.dll 的任何引用更改為 Mfc40.dll,將對(duì) Msvcrt.dll 的任何引用更改為 Msvcrt40.dll。
            應(yīng)使用以下文件版本:

            VC 4.1 和更早版本,使用:

            http://activex.microsoft.com/controls/vc/mfc40.cab (http://activex.microsoft.com/controls/vc/mfc40.cab)
            Olepro32.dll   4,1,0,6038
            Mfc40.dll      4,1,0,6139
            Msvcrt40.dll  4,10,0,6038
            				

            VC 4.2b 和更早版本,使用:

            http://activex.microsoft.com/controls/vc/mfc42.cab (http://activex.microsoft.com/controls/vc/mfc42.cab)
            Olepro32.dll   4,2,0,6068
            Mfc42.dll      4,2,0,6256
            Msvcrt.dll    4,20,0,6164
            				

            VC 5.0,使用:

            http://activex.microsoft.com/controls/vc/mfc42.cab (http://activex.microsoft.com/controls/vc/mfc42.cab)
            Olepro32.dll   5,0,4055,1
            Mfc42.dll     4,21,0,7022
            Msvcrt.dll     5,0,0,7022
            				

            VC 5.0sp1,使用:

            http://activex.microsoft.com/controls/vc/mfc42.cab (http://activex.microsoft.com/controls/vc/mfc42.cab)
            Olepro32.dll   5,0,4055,1
            Mfc42.dll     4,21,0,7160
            Msvcrt.dll     5,0,0,7128
            				

            VC 5.0sp2,使用:

            http://activex.microsoft.com/controls/vc/mfc42.cab (http://activex.microsoft.com/controls/vc/mfc42.cab)
            Olepro32.dll   5,0,4055,1
            Mfc42.dll     4,21,0,7160
            Msvcrt.dll     5,0,0,7128
            				

            VC 5.0sp3,使用:

            http://activex.microsoft.com/controls/vc/mfc42.cab (http://activex.microsoft.com/controls/vc/mfc42.cab)
            Olepro32.dll   5,0,4230,1
            Mfc42.dll     4,21,0,7303
            Msvcrt.dll     5,0,0,7303
            				

            VC 6.0,使用:

            http://activex.microsoft.com/comtrols/vc/mfc42.cab (http://activex.microsoft.com/controls/vc/mfc42.cab)
            Olepro32.dll   5,0,4261,0
            Mfc42.dll      6,0,8168,0
            Msvcrt.dll     6,0,8168,0
            				


            注意,4.2 和 6.0 之間的所有 MFC 版本均使用 Mfc42.cab。此 .cab 文件總是包含最新版本的 DLL,因?yàn)樗鼈兪窍蚝蠹嫒莸摹H绻皇褂酶叩?MFC 版本進(jìn)行編譯,則您可能不想指定最新的文件版本。這樣做可能會(huì)導(dǎo)致下載不必要的 MFC DLL。

            參考
            有關(guān)更多信息,請(qǐng)?jiān)L問(wèn)下面的 Microsoft Developer Network (MSDN) 網(wǎng)站: 打包 ActiveX 控件http://msdn.mi...

            有關(guān)更多信息,請(qǐng)?jiān)L問(wèn)下面的 Microsoft Developer Network (MSDN) 網(wǎng)站:
            打包 ActiveX 控件
            http://msdn.microsoft.com/library/default.asp?url=/workshop/components/activex/packaging.asp?frame=true (http://msdn.microsoft.com/library/default.asp?url=/workshop/components/activex/packaging.asp?frame=true)
            ActiveX 控件的安全初始化和腳本編寫(xiě)
            http://msdn.microsoft.com/library/default.asp?url=/workshop/components/activex/safety.asp?frame=true#iobjsafe (http://msdn.microsoft.com/library/default.asp?url=/workshop/components/activex/safety.asp?frame=true#iobjsafe)
            使用 Microsoft Authenticode 技術(shù)進(jìn)行代碼簽名
            http://msdn2.microsoft.com/en-us/library/ms537358.aspx (http://msdn2.microsoft.com/en-us/library/ms537358.aspx)
            使用 ActiveX 控件自動(dòng)完成網(wǎng)頁(yè)
            http://msdn.microsoft.com/library/default.asp?url=/workshop/components/activex/tutorial.asp?frame=true (http://msdn.microsoft.com/library/default.asp?url=/workshop/components/activex/tutorial.asp?frame=true)
            有關(guān)更多信息,請(qǐng)單擊下面的文章編號(hào),以查看 Microsoft 知識(shí)庫(kù)中相應(yīng)的文章:
            264570? (http://support.microsoft.com/kb/264570/ ) INFO:網(wǎng)絡(luò)廣播:Internet 組件下載是如何實(shí)現(xiàn)的?

            這篇文章中的信息適用于:
            • Microsoft Visual C++ 4.1 Subscription
            • Microsoft Visual C++ 4.2 專(zhuān)業(yè)版
            • Microsoft Visual C++ 5.0 標(biāo)準(zhǔn)版
            • Microsoft Visual C++ 6.0 Service Pack 5
            • Microsoft Internet Explorer 5.5
            • Microsoft Internet Explorer 3.0
            • Microsoft Internet Explorer 4.0 128-Bit Edition
            • Microsoft Internet Explorer 5.0
            人妻少妇精品久久| 麻豆久久久9性大片| 国产精品99久久久精品无码 | 欧美一区二区三区久久综合| 久久久精品国产Sm最大网站| 久久国产成人午夜AV影院| 久久精品国产一区二区电影| 久久黄色视频| 国产成人综合久久精品红 | 久久人人爽人人爽人人爽| 久久这里都是精品| 亚洲精品午夜国产VA久久成人| 亚洲熟妇无码另类久久久| 97精品依人久久久大香线蕉97| 亚洲国产精品无码久久98| 国产情侣久久久久aⅴ免费| 99久久无码一区人妻| 久久国产影院| 亚洲精品乱码久久久久久中文字幕| 亚洲精品乱码久久久久久自慰| 久久综合给合久久狠狠狠97色69| 97热久久免费频精品99| 国产一区二区三精品久久久无广告| 久久av免费天堂小草播放| 久久亚洲中文字幕精品一区| 久久香蕉超碰97国产精品 | 狠狠色丁香久久婷婷综合蜜芽五月 | 亚洲а∨天堂久久精品| 国产成人精品三上悠亚久久 | 久久国产高清字幕中文| 久久午夜综合久久| 久久久噜噜噜久久熟女AA片| 国产成人精品久久亚洲| 精品久久久久久国产| 国产成人精品久久亚洲| 亚洲中文字幕久久精品无码喷水| 91精品国产综合久久香蕉| 97久久婷婷五月综合色d啪蜜芽| 狠狠色丁香婷婷综合久久来来去| 狠狠色丁香婷婷久久综合| 18岁日韩内射颜射午夜久久成人|