我讀過關於MSI安裝的每一個計算器文章一個服務,但我無法找到解決我的問題:VS安裝項目 - 安裝組件到GAC並開始使用它們都在同一個安裝
我有一個有5個項目,VS2010解決方案的所有目標.NET 2.0:
- DLL A,沒有項目引用
- DLL B,引用DLL
- Windows窗體應用程序,引用的DLL乙
- Windows服務,引用的DLL乙
- 安裝項目
DLL A和DLL B被設置爲被安裝到GAC在安裝時。我想在安裝完成後啓動服務,但根據我讀過的內容,程序集只有在最後一步纔會註冊。我已經試圖開始在我的ServiceInstaller類的AfterInstall事件服務證明了這一點,我得到以下錯誤:
Error 1001. Could not load file or assembly 'DLL_B', version 1.0.0.1, Culture=neutral, PublicKeyToken=5e297270603814f4' or one of its dependencies. The system could not find the file specified.
但當然,一旦安裝完成後,我可以手動啓動該服務,它運行精細。另外,在Windows XP中,我通常可以在應用程序啓動時啓動服務(我有一個Launch Application複選框作爲安裝程序的最後一步)。但是在Windows 7中,當時不再提升權限,並且啓動服務會引發錯誤。
如何在不強制重啓的情況下實現服務的安裝和啓動?引用我的客戶:「現在2011年,這不應該是必要的。」,我非常同意。
提前致謝。
在InstallFinalize之後計劃的任何CA都不具有提升的權限。如果UAC關閉,這可能會起作用,但這不是一個好習慣,IMO。 – 2011-04-14 12:06:32
這是真的。但是可以通過提升安裝程序UI(例如使用引導程序)或使用請求提升的應用程序清單的EXE自定義操作輕鬆避免。 – 2011-04-14 12:12:14
我標記了Cosmin的答案是正確的,因爲它是最接近的,只是因爲他說的這部分「這不能用VS設置項目來完成,但有很多選擇。」我選擇使用InnoSetup。我發現它非常簡單,而且對我的需求來說是完美無缺的。安裝程序尖叫得很快,完全符合我需要的。 – 2011-04-14 14:44:48