将COM dll安装到GAC时,WIX安装失败

时间:2012-07-23 14:11:50

标签: ms-access com wix

我正在创建一个安装程序,它将为我们的Access应用程序使用.NET COM组件。当我将COM dll安装到INSTALLDIR时,它工作正常。我把它留给WIX进行COM注册,通过运行加热来收集dll和tlb。但是现在我们要将dll安装到GAC,只有tlb文件将安装在INSTALLDIR中。我们的目标是不同版本的SW(可以在同一台机器上安装它们)可以使用相同的COM版本,卸载一个版本的SW后,其他版本仍可使用(当我们无法实现时)将dll安装到INSTALLDIR,我是对的吗?如果我的方法有问题,请纠正我。)

问题出现了:为了将其安装到GAC中,我想我应该将一个Assembly =“。net”添加到dll文件声明中。但是,在安装过程中,我收到此错误: “错误处理程序遇到问题:自动化错误系统找不到指定的文件。”当我在提交阶段调用一个COM方法(我们创建的访问引用)时,即在注册COM之后。显然我的COM没有成功注册。但我真的不知道为什么会这样。正如我所提到的,我所做的唯一改变就是添加这个Assembly =“。net”。在此之前,COM注册正常,我正在成功调用它。

任何帮助将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:1)

这不起作用,因为GAC是基于.net的dll,并且不接受COM dll。要自己查看尝试将dll放入文件夹C:\ Windows \ assembly中,您将收到错误消息,说明它没有程序集清单。

您应该做的是为该特定COM dll的所有安装程序版本保持组件GUID相同。这样,Windows安装程序将记录哪些应用程序正在使用它,并且只有在删除最后一个应用程序后才卸载它。我也会把它放到它自己的安装文件夹中,否则当第一个安装的版本卸载时你会得到一个应用程序安装文件夹。

另一个选择是将它分成它自己的安装程序并使用引导程序将它们安装在一起。