項目需要使用一些本地控件,所以這幾天又折騰把以前的vb拿出來,做一個空間的例子。vb制作控件很簡單,這里也不再多說,我開發的控件名稱叫做test.ocx發布好,會生成相應的test.cab和test.hmtl測試頁面。
我要把這個控件發布的web工程中
1,首先復制cab到web目錄下,然后再頁面中添加控件信息,如下圖,
- <!-- 如果這頁上的任何控件需要授權,您必須
- 創建一個授權包文件。 運行 LPK_TOOL.EXE 來創建
- 要求的 LPK 文件。 LPK_TOOL.EXE 將從 ActiveX SDK 中找到,
- http://www.microsoft.com/intdev/sdk/sdk.htm. 如果您有 Visual
- Basic 6.0 CD, 您可以在\Tools\LPK_TOOL 目錄下找到它。
-
- 下面是對象標記的例子:
-
- <OBJECT CLASSID="clsid:5220cb21-c88d-11cf-b347-00aa00a28331">
- <PARAM NAME="LPKPath" VALUE="LPKfilename.LPK">
- </OBJECT>
- -->
-
- <OBJECT ID="test"
- CLASSID="CLSID:7E0ED402-E1D4-4E40-95C2-FEA17B4FA60E"
- CODEBASE="test.CAB#version=1,0,0,1">
- </OBJECT>
<!-- 如果這頁上的任何控件需要授權,您必須
創建一個授權包文件。 運行 LPK_TOOL.EXE 來創建
要求的 LPK 文件。 LPK_TOOL.EXE 將從 ActiveX SDK 中找到,
http://www.microsoft.com/intdev/sdk/sdk.htm. 如果您有 Visual
Basic 6.0 CD, 您可以在\Tools\LPK_TOOL 目錄下找到它。
下面是對象標記的例子:
<OBJECT CLASSID="clsid:5220cb21-c88d-11cf-b347-00aa00a28331">
<PARAM NAME="LPKPath" VALUE="LPKfilename.LPK">
</OBJECT>
-->
<OBJECT ID="test"
CLASSID="CLSID:7E0ED402-E1D4-4E40-95C2-FEA17B4FA60E"
CODEBASE="test.CAB#version=1,0,0,1">
</OBJECT>
其中上面注釋掉的lpk這段根據他的描述生成了相應的lpk文件,將代碼放到jsp頁面中,部署。
2,部署后查看測試效果,但是效果不盡如人意,提示“非安全控件”而且也無法安裝,這是由于控件沒有認證,認證還是需要花錢的,自然不行。
3,只能通過本地注冊控件的方式,這樣就不需要ie的認證,但是控件提示的信息也是“無法識別的控件”。
4,使用installshield9來制作客戶端注冊包,具體的不說了只要注意一個個問題。注冊控件的腳步
- function OnEnd()
- string szDLL, szReg, szCmd;
- begin
- szReg = WINSYSDIR ^ "regsvr32.exe";
- szDLL = TARGETDIR ^ "test.ocx";
- szCmd = "/s \"" + szDLL + "\"";
-
- if (!REMOVEONLY) then
- LaunchAppAndWait(szReg, szCmd, WAIT);
- endif;
- end;
function OnEnd()
string szDLL, szReg, szCmd;
begin
szReg = WINSYSDIR ^ "regsvr32.exe";
szDLL = TARGETDIR ^ "test.ocx"; //如果是MSI工程,可以用INSTALLDIR代替TARGETDIR
szCmd = "/s \"" + szDLL + "\""; //增加靜默參數s, 增加 \” 防止目錄路徑含空格的情況。
if (!REMOVEONLY) then
LaunchAppAndWait(szReg, szCmd, WAIT);
endif;
end;
這樣注冊后,客戶端使用就不會有提示,我上面提到了,我自己生成了lpk文件,我也加到頁面中了。
- <OBJECT CLASSID="clsid:5220cb21-c88d-11cf-b347-00aa00a28331">
- <PARAM NAME="LPKPath" VALUE="LPKfilename.LPK">
- </OBJECT>
<OBJECT CLASSID="clsid:5220cb21-c88d-11cf-b347-00aa00a28331">
<PARAM NAME="LPKPath" VALUE="LPKfilename.LPK">
</OBJECT>
但是如果加這句雖然控件可以使用,但是總會有安全提示,很影響使用效果。所以暫時把它去掉了。