我正在尝试为一个简单的hello world消息框运行activex控件.首先我创建了类库,我现在有了dll,然后我创建了HTML页面并调用了activeX控件:
<!DOCTYPE>
<html>
<head>
<title>DemoActiveX</title>
</head>
<body>
<OBJECT id="DemoActiveX" classid="clsid:400DCE17-4B26-4E59-9A88-AF39E2BE4A55">
</OBJECT>
<script type="text/javascript">
try {
var obj = document.DemoActiveX;
if (obj) {
alert(obj.SayHello());
} else {
alert("Object is not created!");
}
} catch (ex) {
alert("Some error happens, error message is: " + ex.Description);
}
</script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
当我在我的机器上尝试它时,我曾经使用regasm/codebase"dll path"注册dll,它运行正常.
我试图在另一台机器上运行的问题,我按照下面的步骤:1)我创建了安装项目并添加了dll文件.
[version]
signature="$CHICAGO$"
AdvancedINF=2.0
[Add.Code]
ActiveX.dll=ActiveX.dll
[ActiveX.dll]
file-win32-x86=thiscab
clsid=400DCE17-4B26-4E59-9A88-AF39E2BE4A55
FileVersion=1,0,0,0
Run Code Online (Sandbox Code Playgroud)
[version]
signature="$CHICAGO$"
AdvancedINF=2.0
[Setup Hooks]
install=install
[install]
run=msiexec.exe /package """%EXTRACT_DIR%\DemoActiveXSetup.msi""" /qn
Run Code Online (Sandbox Code Playgroud)
3)我创建了包含.inf和setup.exe文件的.CAB文件4)将HTML页面中的对象更改为:
<OBJECT id="DemoActiveX" classid="clsid:400DCE17-4B26-4E59-9A88-AF39E2BE4A55"
codebase="ActiveXCAB.CAB" ></OBJECT>
Run Code Online (Sandbox Code Playgroud)
当我试图打开另一台机器上的页面时,一个请求窗口打开了哪个请求打开CAB,当我按下是什么都没发生!!!!! 为什么它不打开setup.exe或msi文件?BTW当我手动安装activeX工作的安装文件时!
我解决了问题:) 问题是:
1)我曾经只将msi文件或setup.exe放在CAB文件中,但我必须将msi和setup.exe都放在inf文件中并引用setup.exe
2)inf文件格式错误,正确的是:
[version]
signature="$CHICAGO$"
AdvancedINF=2.0
[Add.Code]
setup.exe=setup.exe
[setup.exe]
file-win32-x86=thiscab
clsid={415D09B9-3C9F-43F4-BB5C-C056263EF270}
FileVersion=1,0,0,0
[Setup Hooks]
RunSetup=RunSetup
[RunSetup]
run="%EXTRACT_DIR%\setup.exe"
Run Code Online (Sandbox Code Playgroud)
祝你好运 :)
| 归档时间: |
|
| 查看次数: |
2213 次 |
| 最近记录: |