HelloWorld 專案是一般.net Core 的 MVC專案,
我們安裝系統完成後,總不能都要讓別人開啟小黑窗吧0.0….
所以我們來讓HelloWorld 的專案底層服務化吧 !
首先我們在HelloWorld專案上安裝 Microsoft.Extensions.Hosting.WindowsServices
然後在Program 內 加入UseWindowsService();
HelloWorld專案就已經可以做成WindwosService 了
那因為有增加Dll 的關係,我們HelloWorld 專案需要重新發佈 打包
用Day 3 的方式處理掉。
然後我們看到Product.wxs裡面
我們新增一個 新的 Fragment在我們 ProductComponents 上面
<Fragment>
<Component Id="cmp0664ED639015C443993CB8969BD6448D" Directory="INSTALLFOLDER" Guid="{6C85D1F5-3B46-4FBC-9C6D-007E476D0E7D}">
<File Id="filA5D6E0AECC10963EACFBDD58A3762306" KeyPath="yes" DiskId="1" Vital="yes" Source="DemoHelloWorld\HelloWorld.exe"/>
<ServiceInstall Id="HelloWorldInstaller" Name="HelloWorld"
DisplayName="Aslan demo use HelloWorld" Description="demo use"
Type="ownProcess" Vital="yes"
Start="auto"
ErrorControl="normal"
Account="LocalSystem"
Arguments="-start"
Interactive="no" />
<ServiceControl Id="StartHelloWorldService" Name="HelloWorld"
Stop="both" Remove="uninstall"
Wait="yes" />
</Component>
</Fragment>
這段是將 HelloWorld.exe 檔案額外拉出來做服務啟動的部分,
當然額外拉出來後,下面的HelloWorld.exe檔案要記得移除,不然會出錯。
然後在最上面註冊部分加入
<ComponentRef Id="cmp0664ED639015C443993CB8969BD6448D" />
重新安裝後,我們可以看到
HelloWorld 已經在背景等候著了,
我們按右鍵執行,開啟網頁測試!
那如果說沒有使用自訂動作的情況下,
背景服務會自動執行...
推測應該是執行順序有衝突
-後記
如果要測試系統服務化了話,
可以使用CMD,新增HelloWorld服務的指令,
路徑需要修正成你的exe位置
sc create HelloWorld binpath= "D:\WixToolset Demo\DemoUse.Installer\DemoHelloWorld\HelloWorld.exe"
刪除HelloWorld服務
sc delete HelloWorld
Day12程式碼
https://github.com/Aslan7826/defaultMVC/commits/Day12