1

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

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

2 回答 2

2

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

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

于 2013-04-18T12:17:57.093 回答
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”

有关安装的 .NET 版本的更多信息,请参阅注册表 HKLM\Software\Microsoft.NET Framework\

于 2014-11-11T11:11:41.843 回答