2010-08-25 38 views
2

我有一個C++的activex控件,我需要爲其安裝程序。它需要刪除該DLL並製作一些註冊表項。COM組件的Windows安裝程序

我有大約6個.RGS文件,我通過regsvr32進行了自我註冊,這是工作。

做一個安裝程序我手動將RGS腳本移植到visual studio 2008 windows安裝程序註冊表GUI中。我覺得不可能做一個確切的端口(例如像ForceRemove這樣的RGS關鍵字)。

是不是有辦法從IDL文件生成這些文件?我做錯了嗎?

回答

1

SelfReg不是MSI安裝中的最佳實踐,因爲它是過程中並且很脆弱。 Visual Studio 2008安裝程序是有限的,但您應該能夠將Register屬性設置爲vsdrfCOM而不是vsdrfCOMSelfReg。這將導致COM元數據從您的DLL中收集,並在MSI本地創作。

生成MSI後,您應該注意SelfReg表爲空,並且在註冊表中爲您的COM數據創建了一系列自動創作的行。

注意:VDPROJ在解壓這個COM的時候是一種愚蠢的行爲,所以它可能不起作用。您可能需要考慮更強大的工具,如InstallShield或Windows Installer XML。

+0

好吧,是的,vsdrfCOM是「無法提取註冊信息」或其他。我會檢查WIX。是否有任何理由手動輸入註冊碼? – 2010-08-26 14:16:13

+0

是的。 COM提取可能是一個令人毛骨悚然的過程,有時會失敗。在這些情況下,我會快照/配置文件/比較虛擬機以找出錯過的內容,然後手動將這些條目創建到安裝程序中以進行補償。 – 2010-08-26 14:17:16

1

你做錯了。 .rgs文件在那裏,以便組件可以自行安裝。任何安裝程序都支持讓組件自行安裝。例如,Visual Studio安裝項目設置「註冊」屬性。

+0

好吧,我看到了,但MSDN似乎建議反對它:http://msdn.microsoft.com/en-us/library/bb204770(VS.85).aspx#no_selfreg http://msdn.microsoft .com/en-us/library/aa371608(v = VS.85).aspx我誤解了這些? – 2010-08-25 17:11:15

+0

好的。在那種情況下,我的答案是「否」。 – 2010-08-25 17:19:32

+0

+1。看起來像.rgs文件只能被ATL函數解析,它們唯一的目的是被包含在庫資源中,以便以後從DllRegisterServer()中使用。 – sharptooth 2010-08-26 05:18:44