在.net中注册com interop dll

时间:2013-04-17 04:29:04

标签: .net visual-studio-2010 com-interop installshield

我正在开发一个具有4个.net com interop dll的Installshield项目。

  • 我使用命令C:\Windows\Microsoft.NET\Framework\v4.0.30319\Regasm.exe /tlb myassembly.dll /codebase来注册程序集。
  • 现在我的问题是,当VS2010安装在机器上时, 安装程序正常工作。但如果没有安装VS2010 机器,只安装了dot net Framework,安装程序不起作用 正确并抛出错误“确保在对象中输入对象 系统注册表“。
  • 任何人都可以告诉我问题的原因。

2 个答案:

答案 0 :(得分:2)

Build中的COM Extract用于非托管DLL。 .NET COM Interop属性适用于COM Visible。这将导致InstallShield在构建过程中执行regasm / regfile并将结果收集到Registry表中。在安装过程中,将编写注册表,而无需将进程调用到Regasm。

在MSDN上的Regasm中有一条关于/ regfile没有执行/捕获用户注册码的说明。如果此过程仍然不够好,请使用诸如InstallWatch之类的工具来捕获/区分注册表之前和之后的内容,以观察“缺少”的内容,然后在注册表视图中的InstallShield中创建它。重建,重置VM并冲洗并重复直至其工作。

答案 1 :(得分:0)

这" C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Regasm.exe / tlb myassembly.dll / codebase"只有在目标计算机上安装了.NET 4.0及更高版本时才有效。 对于以前的.NET版本,从2.0.5077文件夹运行Regasm.exe: " C:\ Windows \ Microsoft.NET \ Framework \ v2.0.5077 \ Regasm.exe / tlb myassembly.dll / codebase"

请参阅注册表HKLM \ Software \ Microsoft.NET Framework \以获取更多信息以及安装的.NET版本