我公司項目的產線系統要與WMS物流系統做借口對接,需要我創建一個windows服務的項目,里面含有7個服務
創建Windows服務:
1.如圖:點擊 windows->經典桌面->windows服務,填寫項目名稱點擊確定即可,此時已有一個Service1.cs
2.添加第二個服務,右擊選擇添加新建項-> 常規 -> windows服務 ,此時多了一個Service2.cs
3.分別雙擊service1.cs和service2.cs 打開設計器
4.在空白處右擊 選擇“添加安裝程序”
5.添加完之后會多出ProjectInstaller.cs文件,並在此文件中會多出serviceInstaller1和serviceProcessInstaller1
6.雙擊service2.cs文件,右擊選擇“添加程序文件”,此時會在ProjectInstaller.cs文件中添加serviceInstaller2
7.每一個服務的屬性設置:
其中ServiceName的內容Service1是默認的,它要和windows服務項目的啟動程序Program.cs中的名稱一樣
Program.cs中的個數不能少,不然會報:【.net服務 錯誤1083:配置成在該可執行程序中運行的這個服務不能執行該服務】
windows服務的安裝:
首先需要生成將要安裝的windows服務
注:windows服務調試特別麻煩,可以使用新建windowsform項目進行測試
從命令行運行 Installutil.exe 目錄 命令,以項目中的已編譯可執行文件所在的目錄作為參數,安裝服務:
1.因為Installutil.exe程序在 C:\Windows\Microsoft.NET\Framework64\v4.0.30319\ 目錄下,需要通過cmd命令 "cd" 切換目錄。
2.安裝服務:installutil.exe E:\MyProject\WLZJ_Update\04_JieKou\WindowsService_1709_180704\bin\Debug\WindowsService_1709_180704.exe
找到exe文件所在目錄:E:\MyProject\WLZJ_Update\04_JieKou\WindowsService_1709_180704\bin\Debug
再命令提示符中執行:installutil.exe E:\MyProject\WLZJ_Update\04_JieKou\WindowsService_1709_180704\bin\Debug\WindowsService_1709_180704.exe
windows服務的卸載:
1、以管理員身份運行命令行工具
2、進入InstallUtil.exe文件夾
cd C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727 或 cd C:\Windows\Microsoft.NET\Framework\v4.0.30319
C:\Windows\system32>cd C:\Windows\Microsoft.NET\Framework64\v4.0.30319\
3、卸載服務,如果路徑帶空格,用雙引號包起來
C:\Windows\Microsoft.NET\Framework64\v4.0.30319>InstallUtil.exe /u "E:\MyProject\WLZJ_Update\04_JieKou\WindowsService_1709_180704\bin\Debug\WindowsService_1709_180704.exe"
4、卸載結果
正在開始卸載。 查看日志文件的內容以獲得 E:\MyProject\WLZJ_Update\04_JieKou\WindowsService_1709_180704\bin\Debug\WindowsService_1709_180704.exe 程序集的進度。 該文件位於 E:\MyProject\WLZJ_Update\04_JieKou\WindowsService_1709_180704\bin\Debug\WindowsService_1709_180704.InstallLog。 正在卸載程序集“E:\MyProject\WLZJ_Update\04_JieKou\WindowsService_1709_180704\bin\Debug\WindowsService_1709_180704.exe”。 受影響的參數是: logtoconsole = assemblypath = E:\MyProject\WLZJ_Update\04_JieKou\WindowsService_1709_180704\bin\Debug\WindowsService_1709_180704.exe logfile = E:\MyProject\WLZJ_Update\04_JieKou\WindowsService_1709_180704\bin\Debug\WindowsService_1709_180704.InstallLog 正在移除 EventLog 源 Service6。 警告: 源 Service6 未在本地計算機上注冊。 正在從系統中移除服務 Service6... 在卸載 System.ServiceProcess.ServiceInstaller 安裝程序的過程中發生異常。 System.ComponentModel.Win32Exception: 指定的服務未安裝。 在卸載的過程中發生異常。將忽略該異常並繼續卸載。但是,在卸載完成之后應用程序可能未完全卸載。 正在移除 EventLog 源 Service5。 警告: 源 Service5 未在本地計算機上注冊。 正在從系統中移除服務 Service5... 在卸載 System.ServiceProcess.ServiceInstaller 安裝程序的過程中發生異常。 System.ComponentModel.Win32Exception: 指定的服務未安裝。 在卸載的過程中發生異常。將忽略該異常並繼續卸載。但是,在卸載完成之后應用程序可能未完全卸載。 正在移除 EventLog 源 Service4。 正在從系統中移除服務 Service4... 已成功地從系統中移除服務 Service4。 正在移除 EventLog 源 Service3。 正在從系統中移除服務 Service3... 已成功地從系統中移除服務 Service3。 正在移除 EventLog 源 Service2。 正在從系統中移除服務 Service2... 已成功地從系統中移除服務 Service2。 正在移除 EventLog 源 Service1。 正在從系統中移除服務 Service1... 已成功地從系統中移除服務 Service1。 卸載完成。 在卸載的過程中發生異常。將忽略該異常並繼續卸載。但是,在卸載完成之后應用程序可能未完全卸載。 C:\Windows\Microsoft.NET\Framework64\v4.0.30319>
注:Service1至Service4是我之前安裝過的,Service5和Service6是我后開發的,添加了安裝程序但並沒有安裝服務。