Activex打包於釋出完整版---ActiveX打包
我現在有一個ActiveX元件:fq.ocx,目的用於採集當前登入的QQ號碼,採用vc mfc編寫,當然您完全可以用其它技術編寫。本ActiveX需要嵌入在網頁中執行。
網上的關於打包這方面的東西太多了。這裡我整理一下:
一、編寫用於安裝cab包的inf檔案
格式如下:
我的配置如下:[version] signature="$CHICAGO$" AdvancedINF=2.0 [Add.Code] XXXA.dll=XXXA.dll atl90.dll=atl90.dll [atl90.dll] file-win32-x86=thiscab //告訴ie到哪裡去得到這個dll,file一共包括三個部分,第一部分是file,這個永遠都是這樣的(至少目前來說);第二部分告訴宣告支援的OS,win32表示windows,mac就是蘋果MAC OX了;第三部分是CPU型別,比如說x86、 ppc (Power PC)、 mips或者alpha了 //其中“thiscab”是一個關鍵字,表示 CAB 包含此 DLL,也可通過指定一條絕對或相對路徑,從一個 HTTP 位置下載所需的 DLL, 例如: file-win32-x86=http://www.mysite.com/mydir/NEEDED.DLL FileVersion=9,00,30729,01 //說明了atl90.dll的版本號 DestDir=11 //它的值是dll將要存到本地硬碟的位置,如果它的值是10,則將dll放到/Windows或者/WinNT下;如果是11,則放到/Windows/System或者/WinNT/System32下;如果未指定任何 DestDir(典型情況),則程式碼安裝在固定的 OCCACHE 目錄中。 RegisterServer=yes [Polygon.dll] file-win32-x86=thiscab clsid={2885EE05-A26B-11D1-B49B-00C04F98EFE0} //“clsid”是將要安裝的控制元件的 CLSID FileVersion=1,0,0,1 RegisterServer=yes
[version]
signature="$CHICAGO$"
AdvancedINF=2.0
[Add.Code]
fq.ocx=fq.ocx
[fq.ocx]
file-win32-x86=thiscab
clsid={7734961F-2127-4645-A17A-618D912AA868}
FileVersion=1,0,0,1
RegisterServer=yes
DestDir=11
二、建立CAB檔案
cabarc -s 6144 n fq.cab fq.inf fq.ocx
說明:
-s 6144:Reserve space in cabinet for signing (e.g. -s 6144 reserves 6K bytes) 在壓縮檔案中保留用於程式碼簽名的空間
n: Create new cabinet (e.g. cabarc n test.cab *.c app.mak *.h) 指定希望建立 CAB 檔案
三、簽名CAB檔案
1、雙擊signcode.exe檔案:
2、點選下一步選擇被簽名的CAB檔案:
3、點選下一步,選擇想要的簽名型別為”自定義“:
4、點選下一步,選擇”簽名證書“,選擇”從檔案中選擇“
5、點選下一步,選擇私鑰,選擇”磁碟上的私鑰檔案“:
6、下一步輸入私鑰密碼:
7、下一步選擇雜湊演算法,我選擇sha1:
8、下一步使用預設選擇即可,直接下一步:
9、接下來在彈出的"資料描述"視窗中輸入公司的名稱和網址並單擊"下一步(N)"按鈕(可以不輸入)
10、現大部份工作都已完成,在接下來的一步當中是可選的操作,其作用只是為CAB加入時間戳,此步驟完全可以不做
11、到此,CAB檔案的數字簽名工作已經完成
四、在html頁面中嵌入ActiveX:
<OBJECT ID="Fq1" WIDTH=800 HEIGHT=600
CLASSID="CLSID:7734961F-2127-4645-A17A-618D912AA868" CODEBASE="fq.cab" style="border:1px none white;">
<PARAM NAME="_Version" VALUE="65536">
<PARAM NAME="_ExtentX" VALUE="2646">
<PARAM NAME="_ExtentY" VALUE="1323">
<PARAM NAME="_StockProps" VALUE="0">
<PARAM NAME="Interval" VALUE="3000">
</OBJECT>
CODEBASE 也可以直接指向 OCX 或 DLL 檔案,如: CODEBASE="http://lhsoft.net/mydir/fq.ocx#version=1,0,0,1"
以上步驟,如果您不會你可以手工註冊ActiveX元件,然後採用”Microsoft ActiveX Control Pad“工具完成:
命令列註冊ActiveX元件:regsvr32 fq.ocx
命令列取消註冊ActiveX元件:regsvr32 /u fq.ocx
”Microsoft ActiveX
Control Pad“可以幫您生成自動生成頁面:
選擇”Edit->Insert ActiveX Control...“:
選擇您註冊的控制元件名稱:
隨後彈出的介面幫助您完成ActiveX元件屬性的設定:
關閉這些視窗,頁面指令碼出來了:
後面的我不說了,該修改的改改吧。
五、使您的產品的使用者(客戶)下載和安裝您製作的證書
您需要編寫一個exe檔案或者像我這樣準備三個檔案:
install_cer.bat是批處理檔案呼叫certmgr.exe完成證書的安裝,fq.cer就是要安裝的證書,install_cer.bat內容如下:
certmgr
/c /add fq.cer /s root
至此,全部完成。