2009-10-09 68 views
9

我開發了一個使用Visual Studio 2008的Windows服務。我想在未安裝Visual Studio的計算機上安裝該服務,但安裝了.NET 3.5。如何安裝在.NET 3.5中開發的Windows服務?

通常,InstallUtil.exe應用於安裝Windows服務,但InstallUtil.exe實用程序在.NET 3.5中不可用。當我嘗試使用.NET 2.0安裝該服務時,該服務將顯示在服務列表中,但啓動該服務時將出現Windows Service錯誤1053。我們如何避免這個問題併成功安裝服務?

回答

4

這裏有一個關於.Net 2.0和VS2005的微軟KB。 .Net 3.5和VS2008中的過程完全相同。

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

而這裏的一個圖片更好的文章,以使其更清晰。 (有時KB的是沒有教程,你可以找到其他地方的友好。)

http://aspalliance.com/1316_Working_with_Windows_Service_Using_Visual_Studio_2005.3

+0

當VS在機器上可用時,在安裝服務時沒有問題。如果VS不可用,我們如何安裝在.Net3.5中開發的服務? – srv 2009-10-09 05:08:35

+0

安裝項目在構建時會創建一個安裝程序(.msi文件)。將它複製(和setup.exe也將在該項目的文件夾中)到您要安裝它的機器上並像任何安裝程序一樣運行它。有一點需要注意的是,您可能需要右鍵單擊安裝項目並選擇「構建」。默認情況下,當您選擇「構建解決方案」時,安裝項目不會生成。這個惱人的默認值可以在配置管理器中重寫。 – David 2009-10-09 05:44:26

1

如果您已經使用InstallUtil.exe安裝您的Windows服務,那麼這意味着你已經加入了ProjectInstaller組件到您的服務。 InstallUtil.exe所做的一切就是使用反射來查找嵌入到服務中的安裝程序組件,並在其上執行一些方法。因此,您可以修改您的Windows服務以安裝和卸載本身,即,您不再需要依賴目標機器上的InstallUtil.exe提供的。我已經成功使用了幾個月了。只需按照我提供的步驟here。這個想法最初屬於Marc Gravell和post

8

這實際上很簡單,因爲我幾天前做了我做的東西。

因此,在您的服務項目要:

  1. 在Solution Explorer中雙擊您的服務cs文件。它應該顯示一個灰色的屏幕,並討論從工具箱中拖動東西。
  2. 然後右鍵單擊灰色區域並選擇添加安裝程序。這會將安裝程序項目文件添加到您的項目中。
  3. 然後,您將在ProjectInstaller.cs(serviceProcessInstaller1和serviceInstaller1)的設計視圖中擁有2個組件。您應該根據需要設置屬性。

現在你需要做一個安裝項目。最好的辦法是使用安裝嚮導。

  1. 右鍵單擊您的解決方案,並添加一個新的項目:添加>新建項目>安裝和部署項目>安裝嚮導
  2. 在第二步選擇「創建一個Windows應用程序安裝程序。」
  3. 在第3步中,選擇「主要輸出來自...」
  4. 點擊即可完成。

現在您需要編輯您的安裝程序以確保包含正確的輸出。

  1. 右鍵單擊Solution Explorer中的安裝項目。
  2. 選擇視圖>編輯器>自定義操作。
  3. 右鍵單擊自定義操作樹中的安裝操作並選擇'添加自定義操作...'
  4. 在「選擇項目中的項目」對話框中,選擇應用程序文件夾並單擊確定。
  5. 單擊確定以選擇「主輸出來自...」選項。應該創建一個新節點。
  6. 對提交,回滾和卸載操作重複步驟4 - 5。

現在只需構建您的安裝程序,它將生成一個MSI和一個setup.exe。選擇你想用來部署你的服務。

0

消息:

「錯誤1053:該服務沒有啓動或控制及時 請求作出響應」

通常是對啓動Windows服務的問題的通用響應。你應該做的是檢查事件日誌,很可能你會發現真正的錯誤,阻止服務啓動。