我目前正在尝试整理一种分发我正在处理的新项目的方法,该项目要求在用户的系统上注册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执行一些如何。
我的问题是:
答案 0 :(得分:2)
看一下名为“Heat”的WiX程序。这可以“收获”您的DLL,包括与RegAsm / COMVisible部分相关的注册表信息。然后,您可以剪切此代码并将其用于您的wxs文件。
您也可以使用Regasm / regfile,然后手动将该信息转换为RegistryValue元素。
关于路径问题,请使用SystemFolder property。
[SystemFolder]mscoree.dll
如果您将安装标记为32位(x86),则在64位操作系统上运行时将自动解析为SysWow64文件夹,而在32位操作系统上运行时,将自动解析为System32文件夹。