wpf*_*abe 13 c# internet-explorer activex cab
我正在拼命尝试将用于在C#中开发的IE的ActiveX部署为CAB存档.我已经阅读了很多资源(其中一些来自StackOverflow),看起来很多人都遇到了同样的问题.我尝试了3个解决方案:a)创建CAB VS项目,b)使用CABARC
INF中的COM注册手动创建CAB,c)手动创建带启动的CAB msiexec
.他们都没有工作.我甚至试过d)创建一个启动msiexec
无效的引导程序(因为有些人建议只msiexec
在Vista上启动无法工作).
我正在运行Windows Vista但我的项目甚至无法在XP上的IE6上运行.
当我使用MSI安装ActiveX时,所有Windows都可以.显然CAB的东西不起作用,我找不到调试整个过程的正确方法.
任何帮助表示赞赏.
RB.*_*RB. 29
更新:请注意,这个古老而优秀的答案仍然是如何解决这个问题的一个非常好的大纲,至少与Win7和IE11的演化规模一样.我只是使用Answerer的Firebreath.org工具集作为跳跃点成功完成所有工作.这不简单,但可以做到.我已将该项目的引用添加到下面的参考列表中,因为它可能为当前开发人员提供比此概述更合理的跳转点.
万岁 - 我刚刚完成了一个相同的项目,所以你会很高兴知道这实际上是可能的.我只在XP上测试了这个 - 我知道可能存在Vista/7不允许msiexec
被调用的问题.
鉴于您有一个正确暴露COM接口的程序集,我执行了以下操作:
我使用的*.inf文件看起来像:
[version]
signature="$CHICAGO$"
AdvancedINF=2.0
[Setup Hooks]
install=install
[install]
run=msiexec.exe /package """%EXTRACT_DIR%\SampInst.msi""" /qn
Run Code Online (Sandbox Code Playgroud)
你需要改变的唯一一点是SampInst.msi
.注意我会使用8.3文件名,因为长文件名可能会导致问题.在测试时,我也不会使用qn开关,因为这是静默安装.
安装程序只需执行一项操作,即通过调用RegAsm来注册程序集.大多数安装程序将提供一些方法来轻松执行此操作.例如,通过VS 2008创建的安装程序只需要将程序集的"Register"属性设置为"vsdrpCOM"即可.请注意,应选择vsdrpCOM,因为它在构建时生成相应的注册表项.vsdrpCOMSelfRegistration设置可能会失败,因为它在运行时调用RegAsm,因此不适用于非管理员.
这可以通过任何驾驶室归档器完成.Windows XP包含iexpress.exe,一个向导驱动的归档程序,而Microsoft的CAB SDK包含cabarc.exe.其他第三方工具也可用.请注意,如果要对CAB进行签名,则需要在CAB文件中保留用于代码签名的空间.
您将需要CAB INF文件和MSI文件.您不需要CAB Setup.Exe文件.
方便提示:VS2008 Setup Project项目类型允许您在属性中设置构建后步骤,因此您可以在一个步骤中构建和CAB.我的构建后步骤如下:
cd "$(ProjectDir)"
"%WINDIR%\System32\Makecab.exe" /f "VboCslib.ddf"
Run Code Online (Sandbox Code Playgroud)
DDF文件格式已记录在案.
object标签用于指向包含安装程序的cab文件.一个非常简单的HTML页面将部署一个ActiveXControl:
<html>
<head></head>
<body>
<!--
ID : The id of the ActiveX control to be used in JavaScript.
CLASSID : The GUID associated with the ActiveX control.
CODEBASE: The location containing the CAB installer for the ActiveX
control. This could be a URL, or a relative path.
-->
<OBJECT ID="MyActiveXControl"
CLASSID="CLSID:FC36FAE1-48E0-4f6b-B469-E1B5A8C6D1AC"
CODEBASE="cabfiles\SampleCabFile.CAB#version=1,0,0,0">
</OBJECT>
<script>
MyActiveXControl.SomeMethod();
</script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
Internet Explorer 6实际上提供了非常有用的诊断辅助工具.清除Internet临时文件,然后导航到网页.如果安装不起作用,请转到临时Internet文件,您将看到其中的几个文件.其中一个将是错误日志启动?CodeDownloadErrorLog.将其拖到桌面并在记事本中打开它,它将提供有关失败时尝试执行的操作的详细信息.
更新:Firebreath.org有一个工具集,用于为许多平台生成浏览器插件.用于解决此处提出的问题的IE/ActiveX代码只是一个子集.但截至2014年11月6日,我发现开始使用Firebreath及其说明比尝试构建我的开发环境并从头开始滚动所有自己的解决方案更容易.
归档时间: |
|
查看次数: |
20292 次 |
最近记录: |