2011-02-10 97 views
1

我安裝了一些自定義操作&設計者喜歡安裝Windows服務。MSI安裝程序在卸載時失敗時,serivce已被刪除

有時候,當我在自定義操作中(或在MSI配置中)出錯時,升級過程可能會失敗。解決方案是卸載應用程序並重新安裝。

但是有時候我會在這種情況下結束,在這種情況下,我無法卸載應用程序,因爲服務的「自定義操作」聲稱該服務未在系統中註冊。好的,也許沒問題。我正在卸載該應用程序。問題:我的應用程序不能卸載。它仍然存在。我必須再次手動將該服務添加到註冊表並重新啓動卸載過程。

問題:我有什麼配置/開發/編程/等。告訴服務(un)安裝程序在卸載時不會在服務已被刪除時失敗。

順便說一句:我的自定義操作在卸載過程中做沒有任何。只有在安裝/升級過程中,我要求用戶進行一些配置並執行一些自定義配置 - 僅與我的應用有關。與服務無關。

編輯:忘了提:VS 2008,默認的安裝項目,沒有花哨的東西,目標機器的Windows XP

回答

2

啊,這的很多原因,我說不要使用VDPROJ和InstallUtil自定義操作之一。您需要在卸載自定義操作中放置try catch塊並處理該場景。

希望你正在測試一個虛擬機,可以恢復,但萬一這是你的開發盒使用Windows SC命令重新創建服務,所以你可以得到卸載現在工作。

如果你真的想這樣做的權利,你想要做這樣的事情:

Augmenting InstallShield using Windows Installer XML - Windows Services

同樣的概念也適用於你只可以添加WiX的合併模塊到您VDPROJ安裝程序。

+0

是的 - 我願意切換到另一個安裝程序,但*插入所有已知的請求在這裏*。我的問題是,我沒有看到我可以試試看的地方。我使用this.Installers.AddRange(...)添加安裝程序組件。這段代碼是由設計/安裝程序項目的花哨設計者創建的。服務由註冊表腳本重新創建:-) – Arthur 2011-02-10 20:27:47

相關問題