我正在使用 VS 2008 安装和部署项目来部署混合的托管/非托管应用程序。我在使用内置注册属性(“Register”属性的“vsdraCOM”枚举值)注册混合模式 DLL 时遇到问题。作为一种解决方法,我添加了一个 .NET 自定义安装程序集(带有一个派生自 System.Configuration.Install.Installer。)我确定该类正在运行,并且许多操作通过该程序集中的代码成功安装和卸载,包括执行多个程序集的 Dll(Un)RegisterServer 入口点.
但是,一个 DLL 没有成功注册。它是唯一依赖于某些要安装到 GAC 的第 3 方可再发行程序集的 DLL。由于 VS 2008 的设置和部署项目中对这些程序集的内置支持,我已将这些程序集安装到 GAC,并且我知道这是有效的。我已经确认发生的事情是在安装程序执行 GAC 安装之前执行自定义操作。
唷。所以我的问题是,有没有办法强制安装程序在执行自定义操作之前执行 GAC 安装?有没有办法使用自定义操作的“条件”属性来做到这一点?如果没有,我最好的选择是什么?从 DLL 中捕获注册表项并将它们添加到安装程序的注册表设置中(不喜欢这样,因为将来有人可能会在类中添加新的 COM 服务器)?使用 .NET 代码手动将程序集安装到 GAC 中(还不知道该怎么做)?
谢谢,
戴夫