2011-06-30 144 views
2

我編寫了一個使用Visual Studio 2010安裝項目進行安裝的應用程序。作爲安裝的一部分,我的應用程序將安裝並啓動Windows服務。那裏沒有問題。安裝前停止服務

當我發佈新版本的應用程序時,安裝程​​序會覆蓋應用程序文件夾的內容。不幸的是,它不能覆蓋已經運行的服務。

如何在MSI開始複製文件之前停止服務?我正在考慮不安裝的自定義引導程序(安裝程序先決條件),但會刪除該服務。或者我可以在安裝之前使用Orca添加一個動作?或者你知道另一種方式?

回答

3

通常這是通過service control operations完成的。基本上,您需要設置「停止」和「刪除」標誌進行卸載。

另一種方法是在自定義操作中使用ServiceInstaller.Uninstall來停止和刪除服務。

如果你想避免在使用對話框中的文件,你可以試試這個方法: Problem stopping Windows Service from Installer Class. Events fire too late

+1

謝謝!服務控制操作看起來像我所追求的。我認爲升級到WiX將在未來爲我節省很多麻煩。 Visual Studio的安裝項目太有限了,尤其是對於確定操作順序。 –