2010-04-12 25 views
15

我有很多託管代碼Windows服務,我們使用Frameworks InstallUtil工具將其安裝到服務控制管理器中。此工具在安裝時創建一個新的文件,其擴展名爲.InstallState。我嘗試過刪除這個文件,然後卸載仍然正常。.Net Windows服務和InstallState文件 - 真的需要嗎?

所以我的問題是,這是什麼文件,是否有任何理由我不應該刪除它?

編輯5/3/10:真的嗎?沒有人知道這個文件的價值是什麼?

回答

2

該文件應該被卸載過程刪除。如果您正在使用自定義安裝操作,則還應將其添加到卸載過程中。缺少.installstate文件不會阻止該服務被卸載。

http://adamhouldsworth.blogspot.com/2009/11/c-setup-installstate.html

http://support.microsoft.com/kb/934388

+0

我很欣賞引用hipplar,但我真的在尋找這個文件的功能以及它是否真正需要的信息。互聯網似乎沒什麼信息。 – BrettRobi 2010-05-03 21:26:40

2

的InstallState文件被用於卸載服務/組件中使用由InstallUtil.exe。其中包含的數據僅是卸載數據。如果您還沒有閱讀MSDN上的簡短引用,可以參閱here

也許安裝程序包會正確卸載所有內容,但我不確定如果您自己手動/腳本調用InstallUtil,某個服務是否可以正確卸載。

這就是.InstallState文件的假定值。

+0

這就是我最初的想法,但事實是我可以使用InstallUtil卸載服務,即使我刪除了InstallState文件。這就是讓我困惑的原因,爲什麼它需要。 – BrettRobi 2010-11-03 18:03:59

+0

顯然它不是必需的:) – jlafay 2010-11-03 18:39:43

6

在VS.NET中,您可以爲您的msi項目定義一個自定義對話框,我使用這樣的對話框來詢問SQL Server地址和憑據,msi將文本框中的所有信息存儲到InstallState文件中。卸載服務時,它將讀取InstallState文件中的值,並刪除在安裝階段創建的數據庫。在我的情況下InstallState文件是必須的,因爲如果文件在安裝後被刪除,則卸載將失敗。

+1

「當服務被卸載時,它將讀取InstallState文件中的值,並將刪除安裝階段創建的數據庫」 Stefan的好回答。關鍵是......在卸載時,您很可能需要安裝時間自定義信息,例如服務器名稱,數據庫名稱等。如果刪除此文件,那麼您將從哪裏獲得信息?所以最好把那個文件放在那裏。 – 2013-08-04 20:43:36