2012-11-01 14 views
4

問題更新Windows服務:不能用的.msi

我做了一個Windows服務,我VS2010(C#),並且安裝並啓動它相應的.msi。版本,ProductCode,UpgradeCode等設置正確。 RemovePreviousVersions設置爲true。工作正常。

現在我想創建新版本的服務,並且我希望更新的.msi更新服務,而不要求用戶先手動卸載舊服務。

我做的是這樣的:

  1. 更新我的服務
  2. 的源代碼中的.msi項目中,我改變了版本號和產品代碼 (而留下的UpgradeCode不變)
  3. 我重建了整個事情。

但是,當我之後啓動更新的.msi時,它會失敗,並顯示以下消息:「錯誤1001. ....服務的實例已在運行」。

問題:

  • 爲什麼不服務自動安裝更新 版本之前uinstalled?

  • 我能做些什麼來使它工作?

+0

停止服務運行。 ('net stop servicename'應該測試是否是這個問題) –

+0

這沒什麼幫助。然後我得到「Error 1001.指定的服務已經存在」。注意:如果我手動卸載應用程序(從控制面板中的添加/刪除程序),服務將停止並卸載所有權利。 –

+0

在MSI v5.0中添加了對服務配置的一些更改。您可能想查看MSDN文檔中的[使用服務配置](http://msdn.microsoft.com/En-US/Library/Windows/Desktop/164280b2-1c75-49d2-ac04-c3654be84134)。我不記得這些是否會解決像您這樣的問題。 –

回答

1

這種情況對Windows Installer 5.0所做的更改不感興趣,它們涉及故障配置。

由於從控制面板手動卸載應用程序將刪除該服務,因此清除新版本的安裝並不會刪除前一個。檢查爲什麼需要創建詳細日誌並檢查RemoveExistentProducts標準操作。要創建日誌使用此命令

MSIEXEC/I {MSI路徑}/L * V file.log

你應該知道,你必須改變前三個版本號的一個,以確保操作系統認爲新的軟件包是升級的,第四個被忽略。另外,您應確保軟件包具有相同的安裝類型,即每個用戶或每臺機器。如果安裝類型不同,則跳過升級。