使用WiX注册ActiveX exe服务器

时间:2009-10-29 03:29:02

标签: com vb6 wix windows-installer activex

我有几个VB6 ActiveX服务器exe文件需要在安装之前注册才能使用。

我尝试使用Heat来提取信息,但它只生成一个文件元素。

可以通过使用/ regserver开关调用这些文件来注册这些文件,并通过使用/ unregserver开关调用它们来取消注册。我知道这不是正确的方法。相反,我应该将注册表项和其他必需元素添加到我的wix源代码。

我的问题是如何找出注册这些ActiveX exe文件所需的注册表项和其他元素。看来热能似乎无法收获这些信息。

5 个答案:

答案 0 :(得分:3)

我遇到了来自WiX 2.0的牛脂问题,并且必须为进程外服务器实施注册表收集。这是patched tallow。将ProcessWithInjectedDll类合并到Heat并且可能在某些时候收敛到主干线会很好。

请注意,VB6运行时的大量内容会产生生成的注册表项。生成的输出无法使用而无需进行一些调整。这就是CleanupRegInclude.vbs可能有用的时候。

最后但并非最不重要的是,绝对文件名和路径是无用的。您必须使用#YourComponent和$ YourComponent(请查看MSI文档)。

答案 1 :(得分:2)

ActiveX控件只是COM对象。您需要做的最小注册量是这样的:

  <RegistryKey Root="HKCR" Action="createAndRemoveOnUninstall" Key="CLSID\{YOUR-GUID-HERE}">
    <RegistryKey Action="createAndRemoveOnUninstall" Key="InprocServer32">
      <RegistryValue Action="write" Value="[INSTALLDIR]YOUR-DLL-HERE.dll" Type="string"/>
      <RegistryValue Action="write" Name="ThreadingModel" Value="Apartment" Type="string"/>
    </RegistryKey>
  </RegistryKey>

您可能想要注册一个Prog ID:

    <RegistryKey Action="createAndRemoveOnUninstall" Key="ProgID">
      <RegistryValue Action="write" Value="YOUR.PROGIDHERE" Type="string"/>
    </RegistryKey>

答案 2 :(得分:2)

  

如何找出哪些注册表项   和我需要的其他元素   注册这些ActiveX exe文件

通常,您可以发现这样的注册表更改:

  1. 使注册表处于干净状态, 例如使用myapp.exe /unregserver

  2. 创建注册表转储 像这样的内容

    c:\WINDOWS\system32\reg.exe export dump1.reg
    
  3. 运行将更改注册表的命令,例如myapp.exe /regserver

  4. 创建另一个dump2.reg 注册表中。

  5. 找出两者之间的差异 dump1.reg和dump2.reg带有 差异化工具(例如TortoiseSVN 添加一个“diff”命令 你有资源管理器上下文菜单 选择了两个文件)

  6. 你应该忽略的差异中可能存在一些噪音。一个典型的例子是HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\RNG\Seed。 Windows CryptoAPI使用此注册表项来存储连续收集的熵。顺便提一下,这个密钥有时会出现在商业设置生成器生成的MSI包中。这似乎表明他们使用类似的注册表嗅探技术: - )

答案 3 :(得分:1)

我认为 heat.exe 已更新为能够收集COM EXE文件,但我想它可能还没有实现。

我通常使用名为 RegSpy / RegSpy 2 的工具从DCOM EXE文件中提取COM信息:http://www.installsite.org/pages/en/tt_analyze.htm#RegSpy

使用上面的工具会给你一个reg文件,但你仍然需要转换为WIX格式。要获取reg文件,请执行以下操作:

regspy2.exe myfile.exe&gt;&gt; myfile.reg

我认为没有办法自动将reg文件转换为wxs格式(我记得刚才写了一个基本的转换器,但是这里没有它)。为了简化这一过程,您可以使用Installshield或Wise For Windows Installer提取所需信息,构建MSI,然后使用dark.exe(wix反编译器)将msi反汇编为Wix格式。然后可以将生成的Wix标记添加到项目中。

答案 4 :(得分:0)

我尝试了热量和@Glytzhkof提到的regspy,但发现我的COM服务器的所有相关注册表信息都没有完整提取。然而,我确实找到了一个实用程序 - RegSpyUI - 与InstallShield一起发布了一个可爱的工作。更详细地描述here

相关问题