簡體   English   中英

如何使用Visual Studio 2017社區部署Windows服務

[英]How to Deploy a Windows Service using Visual Studio 2017 Community

使用VS2017社區我已經編寫了一個可在本地計算機上運行的服務。 我按照這里的說明操作: https//docs.microsoft.com/en-us/dotnet/framework/windows-services/walkthrough-creating-a-windows-service-application-in-the-component-designer

並使用Installutil.exe成功安裝(按照上面鏈接中的說明)。 都好。

我現在想要在我們組織的六台服務器上部署它。 在Microsoft關於安裝服務的文檔中( https://docs.microsoft.com/en-us/dotnet/framework/windows-services/how-to-install-and-uninstall-services ),它說:

如果您是想要發布用戶可以安裝和卸載的Windows服務的開發人員,則應使用InstallShield

和指向適用於VS2012的頁面的鏈接(不能發布任何更多鏈接,因為我的聲譽<10)

我已經下載並安裝了“Microsoft Visual Studio 2017安裝程序項目”軟件包,它允許我創建一個安裝項目。 當我運行它時,它正確安裝項目輸出(即將exe和DLL文件復制到Program Files中的正確文件夾)但不創建服務。

有關於在此站點上部署服務的詳細帖子(問題9021075),但是當我按照這些說明操作時,我在安裝時遇到1001錯誤。

我能找到的所有文檔都是指VS的早期版本或之前的Installer軟件包,所以我甚至不確定我是否可以使用我正在使用的軟件。

因此,使用VS2017社區使用Microsoft Visual Studio 2017安裝程序項目,如何創建獨立安裝程序以部署使用InstallUtil在本地安裝時正常工作的服務?

或者我可以在目標計算機上使用InstallUtil嗎? 我想我需要為它安裝Visual Studio,我不想這樣做。 有更快的方法嗎?

我只有6個服務器來安裝它,所以即使是一些手動解決方案也可能。

感謝您的回復。 我現在有一個解決方案。 我在目標服務器上找到了InstallUtil(在我的例子中,它位於C:\\ Windows \\ Microsoft.NET \\ Framework64 \\ v4.0.30319中,但搜索會找到它)。 我復制並將其作為內容添加到我的項目中,所以當我現在部署它時,我將InstallUtil放在與我的EXE相同的文件夾中。

要安裝,我以管理員身份運行CMD,cd到項目文件夾並發出命令:

installutil.exe myService.exe

這是一次性任務。 一旦服務正在運行,要更新它,我只需要停止它,上傳新的myService.exe(和任何DLL)來覆蓋舊的並再次重新啟動它。

有關您正在使用serviceProcessInstaller1serviceInstaller1文件的設置的更多信息將需要調試此問題,因為安裝程序引發的1001錯誤是一般錯誤。

另一種方法是使用Topshelf ,它是托管使用.NET框架編寫的服務的框架。 它簡化了服務的創建,允許開發人員創建一個簡單的控制台應用程序,可以使用Topshelf作為服務安裝。 原因很簡單:調試控制台應用程序比使用服務要容易得多。 一旦應用程序經過測試並可以投入生產, Topshelf便可以輕松地將應用程序作為服務進行安裝。

或者,您可以使用InstallUtil.exe 它是.NET Framework的一部分,因此無需安裝Visual Studio。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM