先糾正一個觀點,所謂自動安裝並非強制安裝,否則就變成流氓軟體了,就算是silverlight,flash這類知名ActiveX,使用者也有選擇安裝或是不安裝的權利。
較正統的解決辦法是提示使用者佈建IE許可權,然後在object裡加入codebase='ocx的下載路徑',然後製作數位憑證,個人覺得這樣比較複雜。
我的辦法:
1.先用js檢測activex是否可用
代碼
<object id='x' name='x' classid='clsid:82AB2103-26BC-4999-8DDE-DF1A647D96E5'></object>
<script type="text/javascript">
try{
var x = document.getElementById('x');
if (x.Caption==undefined){
if (confirm('您的機器上未安裝所需的ActiveX外掛程式!需要安裝嗎?')){
window.open('http://www.youname.com/setup.exe')
};
}
}
catch(e){
}
</script>
註:用delphi開發出來的activeX,預設肯定是有Caption屬性的,如果檢測到Caption屬性未定義,表明未安裝控制項,詢問使用者後,跳到下載安裝檔案。其它工具開發出來的ActiveX也可用類似思路檢測。
2.下載安裝檔案的處理
activex的安裝其實也就是調用regsvr32命令對ocx進行註冊而已,所以基本上安裝就是一個copy & run的過程,完全可以用winrar搞定。
winrar能將檔案打包成exe格式的自解壓檔案,並且還能在解壓前或解壓後執行一些命令,甚至還能在"開始-->程式"中產生捷徑,這些足夠我們做一個安裝程式了。
(1)先寫幾個批處理,用於自動註冊或反註冊,以及刪除功能
install.bat 參考內容如下:(這裡假定程式安裝/解壓到c:\capture目錄下)
regsvr32 c:\capture\QQCaptureActiveX.ocx -s
uninstall.bat 參考內容:
regsvr32 c:\capture\QQCaptureActiveX.ocx /u
delete.bat 參考內容:
regsvr32 c:\capture\QQCaptureActiveX.ocx /u -s
del c:\capture\CameraDll.dll
del c:\capture\QQCaptureActiveX.ocx
del c:\capture\install.bat
del c:\capture\uninstall.bat
del c:\capture\delete.bat
rd c:\capture
(2)開始用WinRar製作安裝程式