在WiX中使用.reg文件注册DLL

时间:2012-05-22 21:08:49

标签: com wix registry regasm

问题背景

我目前正在尝试整理一种分发我正在处理的新项目的方法,该项目要求在用户的系统上注册COM暴露的.NET DLL,因为我是WiX的新手并且正在制作为此,我试图让事情变得尽可能简单。

问题

我的DLL注册的一个大问题是regasm将InProcServer32密钥的默认值设置为“mscoree.dll”,但我的DLL似乎只能在使用它的完整路径时实例化,例如, “C:\的Windows \ SYSWOW64 \ MSCorEE.dll中”

目前我在我的安装项目中有一个自定义操作(我想放弃使用WiX),它会调用SearchPath API来查找mscoree.dll的完整路径并用完整路径覆盖默认值,这样可以在没有任何问题的情况下实例化DLL。

提议的解决方案/问题

由于我是WiX的新手,我已经想到了准备一个.reg文件,该文件将包含进入CLSID树的所有必要信息,然后让WiX执行一些如何。

我的问题是:

  1. 通过这种方式注册DLL是否有任何固有的缺陷?
  2. 我试图找到解决方法的主要原因是mscoree.dll问题,在WiX中有没有本地方法可以做到这一点?

1 个答案:

答案 0 :(得分:2)

看一下名为“Heat”的WiX程序。这可以“收获”您的DLL,包括与RegAsm / COMVisible部分相关的注册表信息。然后,您可以剪切此代码并将其用于您的wxs文件。

您也可以使用Regasm / regfile,然后手动将该信息转换为RegistryValue元素。

关于路径问题,请使用SystemFolder property

[SystemFolder]mscoree.dll

如果您将安装标记为32位(x86),则在64位操作系统上运行时将自动解析为SysWow64文件夹,而在32位操作系统上运行时,将自动解析为System32文件夹。