玩轉Windows服務系列——創建Windows服務一文中,介紹了如何快速使用VS構建一個Windows服務。Debug、Release版本的注冊和卸載,及其原理和服務運行、停止流程淺析分別介紹了Windows服務的注冊、卸載、運行、停止的簡單流程。那么今天就來介紹一下如何使用開源庫Boost.Application來快速構建一個Windows服務。
Boost.Application簡介
Boost.Application 是一個開源的C++庫,主要用於構建跨平台的服務,包括Windows、Unix、Linux、MaxOS等。沒錯,這個庫可以用來做跨平台的服務。Boost.Application 使用開源協議 Boost Software License, Version 1.0。
Boost.Application 目前還不是Boost官方的庫,想要使用它,需要到Github上下載最新代碼,當前版本為0.4.12。
用Boost.Application構建Windows服務
第一步,用VS創建一個控制台程序。
第二步,配置Boost.Application以及Boost的include路徑和lib路徑。
第三步,將Boost.Application目錄下的README.md文件中的示例代碼拷貝到 myservice.cpp 中並覆蓋原來所有的代碼。
第四部,將編譯選項設置為多字節
第五步,編譯並運行程序
由於這時候還沒有注冊服務,所以以控制台的方式運行起來就會報錯了。
第六步,將程序注冊為Windows服務,在命令行中執行如下命令:
sc create myservice binpath= "D:\Code\C++\CommonCode\Win32\Debug\myservice.exe" type= own start= demand displayname= "service test"
sc命令的詳細使用方法可以參考玩轉Windows服務系列——命令行管理Windows服務。
在Windows服務管理器中可以看到剛剛創建的服務:
第七步,啟動服務,然后停止服務,在服務所在目錄,可以看到產生了一個log.txt文件,
Start Log... ----------------------------- ---------- Arg List --------- ----------------------------- myservice ----------------------------- 0, running... 1, running... 2, running... Stoping my application...
這樣,一個完整的Windows服務就算完成了。
注冊服務程序
在Boost.Application 的 “Boost.Application\example\setup”目錄下,有一個用於注冊卸載服務的示例代碼。
將此示例代碼編譯為service_setup_ex.exe程序后,就可以使用此程序進行服務的注冊和卸載了。
安裝服務,支持設置程序路徑、服務名字、顯示名字、描述、啟動模式、依賴服務等,如下:
service_setup_ex.exe -i --name="My Service" --path="c:\myservice\service.exe" service_setup_ex.exe -i --name="My Service" --path="c:\myservice\service.exe" --display="My Service" service_setup_ex.exe -i --name="My Service" --path="c:\myservice\service.exe" --display="My Service" --description "Service Description" service_setup_ex.exe -i --name="My Service" --path="c:\myservice\service.exe" --user=".\Renato Tegon Forti" --pass="x1x1x1" service_setup_ex.exe -i --name="My Service" --path="c:\myservice\service.exe" --start="manaul" --depends="service1\service2\service3"
檢測服務:
service_setup_ex.exe -c --name="My Service"
卸載服務:
service_setup_ex.exe -u --name="My Service" --path="c:\myservice\service.exe"
參考資料
Build a Server Application using Application Library
系列鏈接
玩轉Windows服務系列——Debug、Release版本的注冊和卸載,及其原理
玩轉Windows服務系列——無COM接口Windows服務啟動失敗原因及解決方案
玩轉Windows服務系列——Windows服務啟動超時時間