我用热力来生成带有注册表项的文件,并在Visual Studio中创建了一个wix项目。我尝试将片段直接包含在product.wxs中,并将其作为组件组引用。当我执行安装程序时,没有任何反应。要测试是否已正确添加ActiveX对象,请在Internet Explorer中使用new ActiveXObject('<prog ID>'),但不能使用。我猜注册表项还不够。如何添加ActiveX对象创建的.dll并确保Internet Explorer可以找到ActiveXObject?

从我的评论:这是我正在尝试做的示例回购。我创建了一个带有COM可见函数的类库。它具有一个带有“ActiveXExample”的ProgId,应该可以使用由WiX创建的ActiveXExampleInstaller .msi安装到计算机上。我运行安装程序,未看到添加注册表项或添加的文件。我很确定这是目录结构的问题,但是我还不太了解如何添加文件。 https://github.com/SvenWritesCode/ActiveXExample

最佳答案

摘要: 1) IE安全选项中可能存在一些限制,这些限制完全阻止您的ActiveX控件运行。 2) 此外,直接注册控件可能存在问题。


  • 以下是一些可帮助您调试的资源。
  • ActiveX控件是否经过数字签名?
  • 您可以实例化IE之外的控件吗?
  • 这是64位二进制文​​件吗?


  • 请在下面发表评论,并提供github.com示例?会回来检查。


    IE :最近,Internet Explorer中的Active X倾向于被关闭吗?
  • 安装用于浏览器访问的ActiveX控件,用于从Web服务器调用安装并从其中下载经过数字签名的安装程序。
  • 此处描述了从网站安装签名的ActiveX控件的过程: Packaging ActiveX Controls with Wix MSI (请务必阅读此链接的答案-重要的)。
  • 在Windows 10测试盒上查看Internet Explorer似乎有很多限制。这是一个示例(不是实际的Windows 10对话框):

    visual-studio - 为ActiveX对象创建WiX安装程序-LMLPHP

  • COM注册:与许多其他工具(商业)相比,使用WiX本身进行COM注册比较麻烦。这是一些问题的文章:Registering COM EXE with WIXNote that 64-bit COM files are not properly handled by WiX(除非最近已修复)。

    Heat.exe :听起来您已经使用过它,但是运行 heat.exe 来获取文件的COM注册信息可以这样完成:
    heat.exe file MyCOMDll.dll -out MyCOMDll.wxs
    

    然后必须以某种方式将 MyCOMDll.wxs 文件合并到您的主要WiX源中。我只是手动提取所需的内容并注入到主要来源中。这需要一些经验,但并不难。 If there are problems, maybe your sources can be put on github.com perhaps? So we can take a look? 总是很难找到没有源代码的东西。

    链接:
  • Register ActiveX exe server using WiX
  • 关于visual-studio - 为ActiveX对象创建WiX安装程序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58629133/

    10-12 17:39