2011-06-23 83 views
0

我有一個C#中的Windows服務應用程序和安裝該服務的安裝項目。在安裝項目中,RemovePreviousVersion設置爲true,並且自定義操作都已設置。升級無人值守的Windows服務

我通過運行msi文件來升級應用程序,該文件將具有比安裝版本更高的版本號。在運行msi時,我收到提示說正在使用該文件,並要求我再試一次,繼續或退出。如果我選擇繼續,安裝將繼續愉快並要求在最後重新啓動。這是很好的和預期的。

但是,我需要通過使用/ quiet選項運行帶有msiexec的msi來執行無人值守的升級,而該選項將失敗,並且根據日誌,問題歸因於正在使用的文件。

如何在使用msiexec的情況下安裝msi無人值守,如果文件正在使用?我正在尋找讓msiexec無人值守的工作方式,而不是自己停止我的服務等所有工作。

+0

當您嘗試新安裝時,服務聲音仍在運行。我沒有使用msi安裝,所以有沒有一種方法可以添加代碼,在嘗試更新之前使用System.ServiceProcess.ServiceController停止服務?我個人使用的技術是通過命令行安裝/卸載自己的服務,但這是一個手動過程。詳細信息在這裏:http://stackoverflow.com/questions/1195478/how-to-make-a-net-windows-service-start-right-after-the-installation/1195621#1195621 –

+0

我遇到的問題是如果我不使用/ quiet標誌,即使該服務正在運行,更新也可以正常工作,但會彈出一個對話框,供某人需要手動處理。所以msiexec能夠處理正在使用的文件。我這樣做的主要要求是無人值守,聽起來應該可以使用msiexec而不添加任何代碼。 – Lap

回答

0

在停止上次運行的服務之後嘗試重新安裝。

control panel->Administrative tools->services 

從打開的服務列表窗口中選擇您的服務並停止服務。

希望這可以解決您的問題。