2013-02-01 25 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開關調用。

相關問題