2012-08-14 177 views
1

我使用Inno Setup創建我的設置。所有的工作都很好,但是我遇到了這個問題:如何註冊.NET DLL以使其可以被COM +訪問。因爲我們都知道.NET爲此帶來RegSvcs.exe,所以我查看了Inno安裝文檔,只發現了用於Assembly註冊的gacinstall,但沒有用於COM +交互。 所以我在[Run]部分Com + Intero註冊Inno Setup

; register .Net components for com+ 
Filename: {win}\Microsoft.NET\Framework\v4.0.30319\RegSvcs.exe; Parameters: "{app}\bin\Common.dll"; Description: Component registration; WorkingDir: {app}\bin; StatusMsg: Component registration...; Flags: waituntilterminated 

但是通過測試此行只是跳過設置添加此。 DLL在[Files]部分之前被複制到目標並且可用。 設置後,我可以手動運行RegSvcs.exe從命令行以及沒有問題。

+1

只是一個提示(不是解決您的問題),您可以在文件路徑中使用'{dotnet40}'常量來獲取.NET 4.0路徑,具體取決於安裝程序運行的模式(32位或64位),或者使用'{dotnet4032}'獲得32位.NET 4.0路徑或'{dotnet4064}'用於64位。它消除了你的路徑硬編碼。 – TLama 2012-08-14 08:50:54

+0

但是你所描述的很奇怪,從第一次看它看不出什麼錯誤(也許我會刪除'WorkingDir',但它應該不是我想的問題)。無論如何,你使用的Windows版本是Vista嗎?如果是這樣,你運行你的設置提升爲管理員? – TLama 2012-08-14 09:19:18

+0

目標平臺通常是贏得2008 R2系統。安裝程序始終以管理員權限運行。 – YvesR 2012-08-14 09:24:19

回答

1

Inno安裝程序是否按預期工作!

問題在我的情況是: RegSvcs.exe安裝具有錯誤憑據的組件。 它安裝COM +安全interactive user但我從服務調用它沒有用戶,所以我需要SYSTEM作爲憑據。

解決方案: 編寫一小段代碼,用於在註冊後修改安全憑證。我沒有找到任何選項標誌直接告訴regsvcs.exe它。 在這裏找到一篇文章http://www.carlosag.net/articles/configure-com-plus如何做到這一點,現在將適應從那裏的想法寫一個小程序來完成這項工作。

+0

+1,也許你可能會提到檢查正確的註冊表項,以驗證通過'RegSvcs.exe'註冊成功。 – TLama 2012-08-27 08:18:55

+0

那麼,COM +修改需要通過CLSID找到正確的應用程序來初始化。所以如果失敗了,組件之前沒有正確註冊。但你給了我一個主意。然後我的一段代碼可以嘗試註冊(我知道文件的路徑已經看到了),然後再次重做...... – YvesR 2012-08-27 08:31:47

+0

啊,現在我完全明白了。由於您的應用程序的安全設置,註冊失敗。很高興知道! – TLama 2012-08-27 08:48:27