• <label id="pxtpz"><meter id="pxtpz"></meter></label>
      1. <span id="pxtpz"><optgroup id="pxtpz"></optgroup></span>

        當前位置:雨林木風下載站 > 技術開發教程 > 詳細頁面

        為MFC與ATL控件創建簽署的CAB文件

        為MFC與ATL控件創建簽署的CAB文件

        更新時間:2022-05-04 文章作者:未知 信息來源:網絡 閱讀次數:

        如果您計劃通過Internet銷售 MFC控件和ATL 控件,您應該將其打包成簽署的小巧(Cabinet -CAB) 文件。簽署文件確保用戶下載您的控件時源代碼是安全的。一個CAB文件包含一個您的控件及其安裝信息(比如,都需要哪些動態鏈接庫DLL和OCX一起安裝)的壓縮版本。

          創建和簽署CAB文件的工具包含于Visual C++ 5.0 光盤中的 CAB&SIGN 目錄下面。 該目錄下的公用程序在您安裝Visual C++時并不會自動地一起安裝,因此您必須將CAB&SIGN 目錄下面的內容拷貝到您的硬盤驅動器中。

          在簽署文件之前,您需要有一個軟件出版商證明書(Software Publisher Certificate)。您必須向證書發放機構(Certification Authority)申請自己的證書。利用CAB&SIGN目錄下面的工具,您能夠創建一個用于測試的測試證明書,但是該證明書不能用于簽署發售的代碼。有關申請軟件出版商證明書的信息,請參考步驟 1 。

          下面是創建簽署CAB文件的步驟 :

           1 獲得一個軟件出版商證明書 (您只需要這一次申請就可以永久使用)

           2 創建 CAB 文件

           3 簽署您的文件

           4 將簽署過的 CAB文件嵌入一個Web頁(可選項)獲得一個軟件出版商證明書

          在簽署文件之前,您需要有一個軟件出版商證明書(SPC)。為此,您必須向證書發放機構(Certification Authority)提出申請。在申請過程中,您必須生成一個密匙對,并向證書發放機構提供證明信息,比如說您的名字、地址以及公共密匙。而且,您必須作出具有法律約束力的誓言:您不能也將不會發布您知道或者應該知道其中包含了病毒的軟件,或者是惡意破壞用戶的機器或代碼。

          有關如何得到軟件出版商證明書更詳盡的信息,請參考Signing Code with Microsoft's Authenticode。若要申請該證書,請參考 Digital Certificates for Authenticode ;若要創建一個測試證書來測試簽署文件,請參考Making A Test Software Publisher Certificate.

          證書發放機構生成一個符合工業標準X.509證書格式(包含版本3擴展)的軟件出版商證明書 。該證書確定并且包含您的公共密匙,并以證書發放機構存檔作為參考,把一個拷貝以電子郵件的方式返回給您。收到該證書之后,您應該在所有要發布的、用私人密匙簽署的軟件當中,包含一份該證書的拷貝。

        獲得一個軟件出版商證明書

          您可以使用Visual C++ 5.0 光盤中CAB&SIGN目錄下的 MAKECERT和 CERT2SPC 公用程序,做一個測試軟件出版商證明書。注意,該測試軟件出版商證明書對真正的軟件發布無效,但是能夠被用來測試您代碼的簽署。

          比如,要做一個私人密匙文件MYKEY.PVK 和一個公司證書CERT.CER,則運行公用程序MAKECERT,其命令如下:

        C:\CAB&SIGN\MAKECERT
        -u: MyKey
        -n: CN = MySoftwareCompany
        -k: MYKEY.PVK CERT.CER

          MyKey 是您的密匙名,MySoftwareCompany 是您的公司名。注意公用程序 MAKECERT 在命令行選項中區分大小寫,因此您必須使用小寫的-u、-n以及-k;-n選項的值必須是大寫的CN=。

          做一個名為CERT.SPC測試軟件出版商證明書,則運行公用程序CERT2SPC,命令如下:

        C:\CAB&SIGN\CERT2SPC C:\CAB&SIGN\ROOT.CER CERT.CER CERT.SPC

          注意CERT.SPC文件是利用您剛使用MAKECERT創建的CERT.CER文件以及CAB&SIGN目錄下面的ROOT.CER文件創建的 。

          創建一個 CAB文件

          這一部分描述如何創建能在互連網上分派ATL和MFC組件的CAB文件。如果您要了解有關CAB文件的更多信息,請參考Cabinet文件參考書目(File Reference),該文件位于平臺軟件開發工具包(Platform SDK,包含在Visual C++ 5.0聯機文檔中)的設置和系統管理服務(Setup and System Management Services)部分的\Setup API\Overview\Cabinet Files目錄下面。

          創建一個 CAB文件:

          創建一個INF文件。

          運行公共例程CABARC(在光盤上的CAB&SIGN目錄中)。例如:

        C:\CAB&SIGN\CABARC -s 6144
        n MYCTL.CAB NEEDED1.DLL NEEDED2.DLL MYCTL.OCX MYCTL.INF

          CABARC 創建了一個名為MYCTL.CAB的CAB文件。

          您必須在您的源文件(INF、OCX以及DLL文件)目錄下面運行CABARC。存檔在CAB 文件中的文件需要在命令行列出,次序同它們在INF文件中的完全一致。在上例中,INF文件的列出次序是NEEDED1.DLL,然后 是NEEDED2.DLL,最后是MYCTL.OCX。

          -s選項為代碼簽署保留空間。n 命令指定您想創建的是CAB文件。CABARC 命令和選項的說明可以查看,其方式是在命令行鍵入CABARC:

          C:\CAB&SIGN\CABARC

        創建一個INF文件

          INF文件是一個文本文件,指定運行控件所需要下載或者呈交的文件(比如DLL或者其它OCX)。一個INF文件就捆綁了CAB壓縮文件所有的必須文件。 缺省情況下,與現有硬盤中文件版本號相同的文件不被下載。要了解有關INF文件及其選項(包括如何創建獨立于平臺的INF文件)的詳細情況,請參考萬維網站Packaging Component Code for Automatic Download,或者參考平臺軟件開發工具包(Platform SDK,包含在Visual C++ 5.0聯機文檔中)的設置和系統管理服務(Setup and System Management Services)部分的\Setup API\Overview\INF Files目錄下的內容。

          作為示例,下面的INF是用來為ATL多邊形控件創建一個CAB文件的。 您可以通過從Visual C++ 5.0光盤下載ATL POLYGON示例程序來創建POLYGON.DLL,并創建一個最小版本。創建該最小版本另外需要一個DLL即 ATL.DLL。ATL.DLL要先于POLYGON.DLL注冊,因此首先把ATL.DLL 放置到INF當中。

        ; Sample INF file for POLYGON.DLL
        [version]
        ; version signature (same for both NT and Win95) do not remove
        signature="$CHICAGO$"
        AdvancedINF=2.0

        [Add.Code]
        polygon.dll=polygon.dll
        atl.dll=atl.dll

        ; needed DLL
        [atl.dll]
        file-win32-x86=thiscab
        FileVersion=2,00,0,7024
        DestDir=11
        RegisterServer=yes

        [polygon.dll]
        file-win32-x86=thiscab
        clsid={4CBBC676-507F-11D0-B98B-000000000000}
        FileVersion=1,0,0,1
        RegisterServer=yes
        ; end of INF file

          該INF指定了系統需要安裝特定版本的ATL.DLL。如果系統中還沒有該文件,則需要從和該INF一起創建的CAB文件下載。"thiscab" 是一個關鍵字,意指包含該INF的CAB文件。您也可以從網上下載所需要的DLL文件,只要指定一個HTTP 網址即可,絕對路徑或者相對路徑都可以,比如:

          file-win32-x86=http://www.mysite.com/mydir/NEEDED.DLL

          關鍵字"file-win32-x86" 指定平臺是 x86。

          得到一個文件的版本號的過程是:在Windows NT或者Windows 95 Explorer中右鍵點擊該文件;從彈出列表中選擇Properties,然后在接著彈出的對話框中選擇版本標簽。有時,您可能需要在文件版本中插入一個額外的0 。比如,對話框中顯示ATL.DLL的版本號是2.00.7024,在INF文件中則變為2,00,0,7024 。

          "DestDir"指的是裝載目錄或者文件的地址: 11 指定為系統目錄 WINDOWS/SYSTEM 或者 WINNT/SYSTEM32; 10 規定為窗口目錄、WINDOWS或者WINNT。如果沒有指定DestDir(典型情況),則代碼從固定的OCCACHE目錄裝載。

          "clsid" 指的是要安裝控件的CLSID。




          創建 INF文件后,再運行CABARC公用程序(在Visual C++ 5.0光盤上的CAB&SIGN目錄中)創建CAB文件。您必須在您的源文件目錄下面運行CABARC。存檔在CAB 文件中的文件需要在命令行列出,次序同它們在INF文件中完全一致。比如,從上面的INF文件為多邊形控件做一個CAB文件,需要使用下面的命令 :

          C:\CAB&SIGN\CABARC -s 6144 POLYGON.CAB ATL.DLL POLYGON.DLL POLYGON.INF

          該CAB文件包含ATL.DLL和POLYGON.DLL的壓縮版本,以及將它們展開到POLYGON.INF 文件所需要的信息。

          有關創建一個下載MFC控件的CAB文件的示例,請參考MFC 4.2b Component Download Information.您需要包含在MFC控件中的DLL文件有MSVCRT.DLL,MFC42.DLL以及 OLEPRO32.DLL。

        簽署一個CAB文件

          使用Code Signing Wizard簽署一個CAB文件:

          1. 運行公用程序 SIGNCODE (在Visual C++ 5.0光盤的CAB&SIGN 目錄下),啟動Code Signing Wizard。

            C:\CAB&SIGN\SIGNCODE

          2. 在Code Signing Wizard對話框當中,點擊Next前進到下一頁。

          3. 在您想簽署那一個程序? 編輯框中,鍵入您想簽署的CAB文件。

          4.在您想在證書中使用什么名字? 編輯框中,鍵入您想在證書中使用的名字。


          5. 點擊Next,前進到下一頁。

          6. 在 您想將該程序簽署在哪一個軟件開發商證書下面? 編輯框中,鍵入軟件開發商證書(SPC)文件名。

          7. 在您要在該證書的哪一個文件中查找密碼、密匙? 編輯框中,鍵入私人密匙(PVK)文件名。

          8. 連續兩次點擊 Next前進到最后一頁。

          9.點擊Sign,簽署CAB 文件。您的文件將被數字化簽署。

          您可以不使用CAB文件直接簽署您的DLL和OCX 。CAB文件的好處在于它是壓縮的,而且,如果和INF文件一起使用,可以將所有必要代碼捆綁在一起。

          將簽署過的 CAB文件嵌入一個Web頁

          ATL和MFC控件使用標簽嵌入網頁。在標簽,您需要為該控件指定三個屬性 :

           ID - 控件名稱

           CLASSID - 控件的CLSID

           CODEBASE - 下載控件的位置。CODEBASE 可以指向許多不同的文件類型。

           CODEBASE可以直接指向一個OCX 文件或者DLL文件:

        CODEBASE="http://www.mysite.com/mydir/polygon.dll#version=1,0,0,1"

          因為這僅僅完成了DLL或OCX文件的下載和安裝,任何必要的DLL支持必須已經裝載到了客戶機上。

          如果您在CAB文件中包含了選項版本號,它應該指向要下載的控件。例如,如果POLYGON.DLL有一個版本號1,0,0,1,則CAB文件的版本號也必須是1,0,0,1:

        CODEBASE="http://www.mysite.com/mydir/polygon.cab#version=1,0,0,1"

          如果您沒有包含選項版本號,則不能替換同一個組件(如果它們出現在客戶機上的話)的老版本號。

        溫馨提示:喜歡本站的話,請收藏一下本站!

        本類教程下載

        系統下載排行

        主站蜘蛛池模板: 成年午夜视频免费观看视频| 日本视频免费高清一本18| 黄瓜视频影院在线观看免费| 日本在线看片免费| 国产亚洲精aa成人网站| 中文永久免费观看网站| 免费看国产成年无码AV片| 精品亚洲AV无码一区二区| 成人免费一区二区无码视频| 国产成人亚洲综合网站不卡| 99久久免费国产精品热| 免费看国产成年无码AV片| 亚洲kkk4444在线观看| 免费看美女被靠到爽| 噜噜噜亚洲色成人网站| 亚洲国产综合人成综合网站| 国产精品久久亚洲不卡动漫| 免费看黄的成人APP| 亚洲人成网站影音先锋播放| 国产免费女女脚奴视频网| 国产成人精品亚洲2020| 波多野结衣免费视频观看| 亚洲精品国产手机| 国产婷婷成人久久Av免费高清| 亚洲国产精品一区二区三区久久| 亚洲一区在线观看视频| 成年女人永久免费观看片| 亚洲国产精品成人综合色在线婷婷| 免费国产作爱视频网站| 免费无码午夜福利片| 日本一区二区三区日本免费| 草久免费在线观看网站| 亚洲国产精品久久久久婷婷软件 | 国产日产成人免费视频在线观看| 亚洲成人黄色在线观看| 国产精品视频免费一区二区| 国产精品永久免费| 亚洲一区二区三区无码影院| 亚洲免费电影网站| 亚洲mv国产精品mv日本mv| 亚洲美日韩Av中文字幕无码久久久妻妇|