2013-02-01 26 views
2

我有一个.NET程序集,我需要在安装时注册。我注意到,当直接使用regasm而不是通过regasm的注册表脚本安装时,注册表存在细微差异。regasm/regfile为什么看起来不完整?

这里是我的测试:

我出口原HKCR蜂巢,然后运行:regasm my.dll

从那里,我出口的后续HKCR蜂巢和性能差异。

我当时比较的regasm my.dll /regfile

的输出DIFF有一对夫妇是那些获得通过,这将永远不会从regasm命令输出的注册表文件添加regasm my.dll加入非常重要的项目。 为什么?

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

+0

什么项丢失? –

+0

这是非常特殊应用(GUID是不是 “我们的” 一个,但可能是由依赖拉吗?):'[HKEY_CLASSES_ROOT \ CLSID \ {XXXX} \实现的类别\ {B56A7C42-83D4-11D2,A2E9-080009B6F22B} ]' – jglouie

+0

谷歌它似乎与ESRI Mx命令有关 - 你想知道什么问题的答案? –

回答

2

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

您可以使用/ REGFILE选项生成包含 的注册表项,而不是直接更改到 注册表.reg文件。您可以通过使用注册表编辑器工具(Regedit.exe)导入 .reg文件来更新计算机上的注册表。需要注意的是 .reg文件不包含可以通过 用户定义的寄存器的功能进行任何注册表更新。请注意,/ regfile选项只有 会为托管类别发出注册表项。此选项不会为TypeLibID或InterfaceID发出 条目。

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

2

其他注册表操作中装饰着ComRegisterFunction属性的方法是怎么回事幕后的。很显然,这些方法不会被/regfile开关调用。

相关问题