为什么regasm / regfile看起来不完整?

时间:2013-02-01 18:11:40

标签: .net registry installshield

我有一个.NET程序集,我需要在安装时注册。我注意到注册表在直接使用regasm与通过regasm的注册表脚本安装时存在细微差别。

这是我的测试:

我导出原来的HKCR配置单元,然后运行:regasm my.dll

从那里,我导出后来的HKCR蜂巢和表现差异。

然后我将该差异与regasm my.dll /regfile

的输出进行比较

有一些非常重要的条目通过regasm my.dll添加,永远不会添加regasm命令的注册表文件输出。的为什么吗

从安装的角度来看,我非常讨厌在安装过程中调用regasm。我宁愿只运行这个.reg脚本。我现在正在使用InstallShield,它还缺少额外的注册表项(似乎它嵌入了使用/regfile标志输出的注册表更改)。

2 个答案:

答案 0 :(得分:2)

在使用ComRegisterFunction属性修饰的方法的幕后进行额外的注册表操作。显然,/regfile开关不会调用这些方法。

答案 1 :(得分:2)

Regasm.exe (Assembly Registration Tool)(备注部分)

  

您可以使用/ regfile选项生成包含的.reg文件   注册表项而不是直接更改   注册表中。您可以通过导入更新计算机上的注册表   .reg文件与注册表编辑器工具(Regedit.exe)。请注意   .reg文件不包含任何可以由其创建的注册表更新   用户定义的寄存器功能。请注意,只有/ regfile选项   发出托管类的注册表项。此选项不会发出   TypeLibIDs或InterfaceIDs的条目。

InstallShield有一个名为“.NET COM Interop”的设置,它基本上告诉构建引擎执行regasm / regfile并在构建MSI之前将结果转换为注册表。如果你愿意,你可以继续这样做,但你必须静态添加额外的东西。