我有几个VB6 ActiveX服务器exe文件需要在安装之前注册才能使用。
我尝试使用Heat来提取信息,但它只生成一个文件元素。
可以通过使用/ regserver开关调用这些文件来注册这些文件,并通过使用/ unregserver开关调用它们来取消注册。我知道这不是正确的方法。相反,我应该将注册表项和其他必需元素添加到我的wix源代码。
我的问题是如何找出注册这些ActiveX exe文件所需的注册表项和其他元素。看来热能似乎无法收获这些信息。
答案 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文件
通常,您可以发现这样的注册表更改:
使注册表处于干净状态,
例如使用myapp.exe /unregserver
创建注册表转储 像这样的内容
c:\WINDOWS\system32\reg.exe export dump1.reg
运行将更改注册表的命令,例如myapp.exe /regserver
创建另一个dump2.reg 注册表中。
找出两者之间的差异 dump1.reg和dump2.reg带有 差异化工具(例如TortoiseSVN 添加一个“diff”命令 你有资源管理器上下文菜单 选择了两个文件)
你应该忽略的差异中可能存在一些噪音。一个典型的例子是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。