@Day12 | C# WixToolset + WPF 帅到不行的安装包 [系统背景服务化]

鉴於

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


<<:  #12 JavaScript Introduction

>>:  Spring Framework X Kotlin Day 7 Docker & CI

EP 22: Create SQLite DB for TopStore App

Hello, 各位 iT邦帮忙 的粉丝们大家好~~~ 本篇是 Re: 从零开始用 Xamarin 技...

Day 26 Dcard热门文章爬取

今天要来爬取另一个知名论坛—Dcard 比起昨天的批踢踢,爬取Dcard论坛的过程会稍微复杂一些些 ...

【在厨房想30天的演算法】Day 14 演算法 : 排序 sort I 气泡、选择、插入

Aloha~!又是我少女人妻 Uerica!今天终於可以进入到演算法的章节啦 (欢呼) ~ 之前因为...

企划实现(22)

使用firebase简易资料库 在使用前要将专案连结至firebase 第一步:在firebase创...

【Day 8】Cloud x AWS x 李家同教授的最终归宿

tags: 铁人赛 AWS Cloud 概述 碎念时间 今天来玩玩 AWS (Amazon Web ...