一、 前言
接着上一篇《.Net魔法堂:史上最全的ActiveX開發教程——開發篇》,本篇講述如何發布我們的ActiveX。
二、廢話少講,馬上看步驟!
1. 打包
C#開發的Activex不像`OCX`那樣直接通過`regsvr32.exe`注冊,而采用兩種方式發布使其運行在瀏覽器上。
1. 離線安裝:將控件類庫打包成MSI安裝包,然后在客戶端安裝。
1.1. 添加安裝項目
1.2. 右鍵“添加”->“項目輸出”,選擇ActiveX控件為“主輸出”
1.3. 雙擊“解決方案資源管理器”的“檢測到的依賴項”下的 Microsoft.NET Framework 並修改“啟動條件”下 .NET Framework 的Version為.NET Framework2.0
1.4. 修改“主輸出來自XXX”的 Register 屬性為 vsdrpCOM
2. 在線安裝:將MSI再封裝成CAB包,並將CAB包隨應用一同發布,當瀏覽器訪問含該ActiveX控件時就會自動提示安裝。
2.1. 定義cab.ddf
.OPTION EXPLICIT .Set Cabinet=on .Set Compress=on .Set MaxDiskSize=CDROM .Set ReservePerCabinetSize=6144 .Set DiskDirectoryTemplate="." .Set CompressionType=MSZIP .Set CompressionLevel=7 .Set CompressionMemory=21 .Set CabinetNameTemplate="自定義CAB文件名.CAB" "installer.inf" "打包的msi文件名稱.msi"
2.2. 定義installer.inf
[Setup Hooks] hook1=hook1 [hook1] run=msiexec /i %EXTRACT_DIR%\打包的msi文件名稱.msi /qn [Version] Signature= "$CHICAGO$" AdvancedInf=2.0
2.3. 定義makecab.bat
makecab.exe /f "cab.ddf"
2.4. 執行makecab.bat就會生成CAB包
2. 簽名
1. 制作cer證書
使用makecert.exe工具生成cer證書(工具在`C:\Program Files\Microsoft SDKs\Windows\v7.0A\bin`)
cmd命令
makecert -r -n "CN=發行者名稱" -b 01/01/2012 -e 01/01/2018 -sv 證書文件名稱.pvk 證書文件名稱.cer
注意:執行命令后將彈出私鑰密碼對話框,可以設置或不設置私密。
2. (可選項)將cer證書轉換為spc證書
使用cert2spc.exe工具(工具在`C:\Program Files\Microsoft SDKs\Windows\v7.0A\bin`)
cmd命令
cert2spc cer證書文件名.cer spc證書文件名.spc
3. 將cer證書轉換為pfx證書
使用pvk2pfx.exe工具將cer證書轉換為pfx證書(PKCS#12證書及私鑰)(工具在`C:\Program Files\Microsoft SDKs\Windows\v7.0A\bin`)
cmd命令格式:
pvk2pfx /pvk pvk證書文件名.pvk [/pi pvk證書密碼] /spc cer或spc證書文件名.cer或spc [/pfx pfx證書名稱.pfx] [/po pfx證書的私密] [/f]
說明:
若第一步中,沒有設置私鑰,那么就`/pi pvk證書密碼`就不用填寫;
若`/po pfx證書的私密`沒有填寫,那么pfx證書就使用與pvk證書一樣的私鑰;
如果存在於-pfx指定的名稱相同名稱的文件,則需要使用`/f`來覆蓋已有的.pfx文件。
示例,cmd:
pvk2pfx /pvk fsgmcc.pvk /pi gmcc123 /spc fsgmcc.cer /pfx fsgmcc.pfx /f
4. 通過signtool導入證書到cab的ActiveX文件
signtool是vs2010的AuthentiCode簽名工具(使用 PKCS#7標准定義的數據結構生成待簽名文件的數字簽名,並加入到待簽名文件的PE結構中即可)。
cmd命令
signtool sign -f pfx證書文件名.pfx [-p pfx密碼] ActiveX控件文件.CAB
示例:
signtool sign -f fsgmcc.pfx DirBrowser.CAB
三、總結
這時ActiveX的發布工作已經完成,接下來請期待《.Net魔法堂:史上最全的ActiveX開發教程——部署篇》吧!
尊重原創,轉載時請注明來自:http://www.cnblogs.com/fsjohnhuang/p/3823402.html ^_^肥仔John