2

大家好,

我正在为我的程序编写一个 WiX 安装脚本。我需要将 C# dll 安装到 GAC,然后注册它。Assembly=".net"所以,我用WiX GAC 为我标记文件,然后我有一个延迟的自定义操作,设置为 run before InstallFinalize,它调用Assembly.Load从 GAC 加载程序集,然后RegistrationServices.RegisterAssembly注册它。

应该是完美的,除了一个问题:显然 dll 直到提交阶段才真正写入 GAC,所以当我的自定义操作运行时,Assembly.Load因为找不到文件而抛出。它在哪里?在提交阶段之前是否可以访问?还是有更好的方法来完全做到这一点?好像是一件很琐碎的事情...

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

4

1 回答 1

0

在安装过程中,通常不赞成自行注册,这正是由于您所描述的问题。您应该将注册表项添加到 WiX 脚本。

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

于 2010-12-05T07:31:15.703 回答