我正在使用Visual Studio 2010與.NET 4.0。 我有一個從Visual Studio安裝項目安裝的Windows服務。在安裝項目中,我將RemovePreviousVersion屬性設置爲True。從安裝程序類停止Windows服務時出現問題。事件發生得太晚
在包含該服務的項目中,我有一個安裝程序類,用於從以前的版本升級時停止服務。
因此,升級軟件時服務已經存在並且可能正在運行。如果它正在運行,那麼在安裝過程中,安裝程序會提示該文件已被使用,並提供「重試,繼續或退出安裝」選項。在這個階段,我可以手動停止服務,然後單擊重試,這將起作用。但我不希望最終用戶必須這樣做。
我已經把messagebox的整個安裝程序類BeforeInstall,BeforeUninstall(安裝程序事件),安裝,卸載,提交,回滾(重寫的方法),所以我可以看到這些在安裝過程中被調用。
安裝程序運行時,任何安裝程序類代碼之前都會顯示該文件正在使用的提示。一旦我停止服務,然後再次單擊嘗試將會繼續,並顯示安裝類中的消息框。所以安裝程序類肯定會被稱爲在實際上做任何事情的過程中爲時已晚。
我不認爲這是早期版本的.NET中的行爲?
有沒有人遇到過這個問題或者有什麼建議?
我可以嘗試Visual Studio 2010附帶的InstallShiled LE Project,如果需要的話(不知道是否會給出相同的結果),但希望看看是否有人知道如果可能的Visual Studio安裝項目的解決方案。
謝謝,這指出我在正確的方向。 – 2011-03-15 22:43:37