2010-12-05 150 views
2

全部问候,用WiX在GAC中注册COM DLL

我正在为我的程序开发一个WiX安装脚本。我需要将一个C#dll安装到GAC,然后进行注册。因此,我用Assembly=".net"标记文件,以便WiX GAC为我提供该文件,然后我有一个延迟自定义操作,设置为在InstallFinalize之前运行,该操作调用Assembly.Load从GAC加载程序集,然后RegistrationServices.RegisterAssembly进行注册。

应该是完美的,除了一个问题:显然dll实际上没有写入到GAC,直到提交阶段,所以当我的自定义动作运行时,Assembly.Load因为找不到文件而抛出。它在哪里?它在提交阶段之前是否可以访问?还是有更好的方法来完成这一切?看起来像这样一件小事...

请不要建议使用heat.exe;我真的很想避免它。我的程序有一个ComRegisterFunction,如果可能的话,它想在用户的计算机上执行。

+0

你有没有找到解决方案?我遇到了完全相同的问题:( – zaitsman 2017-06-07 11:23:48

回答

0

自我注册一般在安装过程中都会被忽视,正是由于您所描述的问题。您应该将注册表项添加到WiX脚本中。

另外,您不是只将程序集安装在GAC中,是吗?将您的COM注册指向非GAC位置。

+0

我只是安装到GAC,这正是问题所在,我问它是否将它存储在某个临时位置,可以使用我的自定义操作访问的位置。自我注册被看不起,但我不喜欢失去在注册时运行条件检查的机会,另外,heat.exe显示我的注册表项非常大,我的程序中每个类都有一个条目,要知道他们是否有必要或什么,但这将会不断变化,我真的不想不断更新它... – 2010-12-05 07:56:25