2

我正在尝试创建一个 MSI,它将两个 OCX 文件放在 Program Files (x86) 文件夹中,并注册这两个 OCX 文件。

成功注册了两个 OCX 文件中的第一个(实际上在运行时使用了第二个 OCX)。第二个 OCX 未成功注册。我知道这一点,因为如果我在没有成功注册的 OCX 上运行 regsvr32,它就会在它所使用的应用程序中工作。

两个 OCX 文件的注册信息是使用获取工具 (heat.exe) 生成的。我在两个 OCX 上都使用了 heat 工具,所以我不明白为什么 OCX 注册只适用于其中一个,而不适用于两者。

我该如何调试呢?

4

1 回答 1

1

其实一点也不奇怪。COM 提取/收获是一项棘手的工作。给定足够多的 COM 组件,您会发现它经常不顺利。

你已经解决了一半的问题。regsvr32 解决了这个问题的事实告诉你,你已经很接近并且没有丢失其他依赖项,什么没有。

您想要做的是在您安装但只有一个注册的状态下获得一台干净的机器(VM 非常适合这些东西)。在运行 regsvr32 之前和之后使用可以扫描和捕获注册表的工具(InstallWatch 是一个不错的工具)。然后比较快照以查看发生了什么变化。

您必须从机器上的其他进程中过滤掉一些噪音,但如果有一点经验,应该很明显改变了什么。将其放入您的 wxs 源代码中,重新构建并重新测试(VM 再次很棒)。

于 2013-01-18T21:27:10.907 回答