MSI无法注册C ++ \ Cli COM程序集

时间:2011-10-18 10:12:54

标签: com c++-cli windows-installer

我的申请存在严重问题。我有一个本机应用程序,它使用一些托管类来工作。我创建了一个C ++ \ Cli包装器,它是非托管代码和托管代码之间的代理。

在这个代理项目中,我已经声明了一些公开的COM对象,它们的实现使用了在托管程序集中声明的C#对象。

在我的开发环境中一切正常,但是当我想在干净的系统上安装我的应用程序时会出现问题。

我有一个MSI项目,可以使用 vsdraCOM vsdraCOMRelativePath 注册此CLR代理。事实上,它们都不起作用。应用程序显示错误,即未注册特定对象(在此代理中定义)。

我可以使用regsvr32手动注册此dll,但我想避免这种情况,让我的MSI包为我做。

我在这个dll上尝试过使用Regasm,它说没有找到注册对象。所有公开的接口都在 IDL 文件中定义。

您能告诉我如何使这些IDL定义的接口暴露或对regasm可见吗?

1 个答案:

答案 0 :(得分:0)

  

我可以使用regsvr32手动注册此dll,但我想   避免这种情况,让我的MSI包为我做。

Visual Studio提供的注册选项仅供一般使用。如果它们不适合您,那么您需要确定文件的注册方式并使用自定义操作来执行此操作。

如果使用regsvr32.exe,请在注册文件的自定义操作中使用它。

  

我已尝试在此dll上使用Regasm,它说没有对象   找到注册。

Regasm.exeregsvr32.exe不同。 Regasm.exe注册程序集和regsv32.exe注册命令组件。

  

您能告诉我如何使这些IDL定义的接口公开   或者对regasm可见吗?

Regasm.exe只能注册强名称程序集。你可以在这里阅读更多相关信息: http://msdn.microsoft.com/en-us/library/xwb8f617.aspx