利用WIX制作安装包(3)
利用WIX安装服务非常简单。只需要短短几句话就可以。当我们创建好一个Windows服务之后。我们在项目中创建一个Service.wxs
文件来安装服务,并且编辑代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Fragment>
<Component Id="ProductC" Guid="DE8DD064-C440-4E82-80D7-D05C98753DAF" Directory="PRODUCTC">
<File Id="ProductCService" Source="$(var.ProductC.TargetDir)ProductC.exe"/>
<ServiceInstall Id="ProductCServiceInstaller"
Type="ownProcess"
Name="ProductC"
DisplayName="ProductC"
Description="ProductC"
Start="auto"
Account="LocalSystem"
ErrorControl="ignore">
<ServiceConfig DelayedAutoStart="no" OnInstall="yes" />
</ServiceInstall>
<ServiceControl Id="ProductCServiceControl"
Start="install"
Stop="both"
Remove="uninstall"
Name="ProductC"
Wait="yes" />
</Component>
</Fragment>
</Wix>
在上述的例子中我们安装了一个名为ProductC
的服务到系统。并且添加了一个ServiceControl
去控制他的行为。然后我们把这个组件关联到产品的某个Feature之后,当产品安装的时候服务就会自定安装。
然而在某些情况用TopShelf实现的服务,我们无法用WIX安装。这个时候我们需要在服务的项目中添加一个ServiceInstall.cs 文件,并添加如下代码。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Configuration.Install;
using System.Linq;
using System.ServiceProcess;
using System.Text;
using System.Threading.Tasks;
namespace DitronicsHISvr
{
[RunInstaller(true)]
public class HardwareServiceInstaller : Installer
{
public ServiceInstaller ServiceInstaller;
public ServiceProcessInstaller ServiceProcessInstaller;
public HardwareServiceInstaller()
{
this.InitializeComponent();
}
private void InitializeComponent()
{
ServiceInstaller = new ServiceInstaller();
ServiceProcessInstaller = new ServiceProcessInstaller();
this.ServiceProcessInstaller.Account = ServiceAccount.LocalService;
ServiceInstaller.Description = "Service used to interface with Bill Validators.";
ServiceInstaller.DisplayName = "Ditronics HI Server";
ServiceInstaller.ServiceName = "DitronicsHISvr";
this.Installers.AddRange(new Installer[] { this.ServiceProcessInstaller, this.ServiceInstaller });
}
}
}
添加上述代码之后,我们就可以正常的使用WIX进行安装服务了。服务上述代码中的ServiceName和Description一定要和WIX中的ServiceName和description一致。不然会出现服务安装好了,无法启动的bug。
利用WIX制作安装包(3)的更多相关文章
- 利用WIX制作安装包(2)
原文 利用WIX制作安装包(2) 这一篇文章将为大家介绍如何使用WIX自定义UI.上一篇文章我们讲过WIX为我们提供了五种安装界面.每种安装界面都是由不同的Dialog组成.在这里我们挑选一种比较常用 ...
- 利用WIX制作安装包(1)
原文 利用WIX制作安装包(1) #installation 下载最新版本的WIX toolset 并安装DOWNLOAD Wix toolset V3.5之后的版本已经可以集成到visual stu ...
- Wix制作安装包
Wix制作安装包,找起资料来很费劲,记录一下: Product.wxs,该文件只能制作出msi形式的安装包,不能做到自动检测framework. <?xml version="1.0& ...
- 【原创】VB6.0应用程序安装包的生成(Setup Factory 9.0制作安装包的方法)
VB6.0应用程序安装包的生成,利用其自带的打包工具生成的安装程序很简陋,一点不美观:如果想让自己的应用程序安装的时候显得高大上一点,本教程提供使用Setup Factory 9.0制作安装包的方法. ...
- 循序渐进做项目系列(5):制作安装包,谁人都可以!——VS制作安装包简明教程
一开始让我做安装包的时候,其实我是拒绝的.因为我根本就不会做安装包.查了资料之后,我很懵,很晕,很乱,因为不清晰,不简明,不直白.然而经过一番彷徨的挣扎,我终于发现:制作安装包,谁人都可以!故挥狼毫, ...
- 使用Qt installer framework制作安装包
一.介绍 使用Qt库开发的应用程序,一般有两种发布方式:(1)静态编译发布.这种方式使得程序在编译的时候会将Qt核心库全部编译到一个可执行文件中.其优势是简单单一,所有的依赖库都集中在一起,其缺点也很 ...
- VS 制作安装包小窥
难得忙里偷闲,看到有关VS制作安装包,按下文小试一把,还行,比不上Installshield. 首先在打开 VS2010 > 文件 >新建项目 创建一个安装项目 XXX 在“目 ...
- vs2015 制作安装包额外需要安装的软件VSI_bundle
vs2015 制作安装包额外需要安装的软件VSI_bundle 下载地址:http://files.cnblogs.com/files/sdner/VSI_bundle.rar
- [转载]如何用Visual Studio制作安装包
原文地址:如何用Visual Studio制作安装包作者:蓝羽幽游 环境:Microsoft Visual Studio 2010 语言:C# 构架:.NET Framework 2.0 解决方案名称 ...
随机推荐
- .NET-架构优化实战-前端优化
原文:.NET-架构优化实战-前端优化 前言 上一篇<.NET-架构优化实战-梳理篇>整理了基本的业务知识,同时也罗列了存在的问题,本篇主要是针对任务列表的页面进行性能优化. 该篇主要涉及 ...
- [React] Use Jest's Snapshot Testing Feature
Often when testing, you use the actual result to create your assertion and have to manually update i ...
- 5.7-GTID复制搭建
基本环境 Master Slave MySQL版本 MySQL-5.7.16-X86_64 MySQL-5.7.16-X86_64 IP 192.168.56.156 192.168.56.157 ...
- 二维高斯滤波器(gauss filter)的实现
我们以一个二维矩阵表示二元高斯滤波器,显然此二维矩阵的具体形式仅于其形状(shape)有关: def gauss_filter(kernel_shape): 为实现二维高斯滤波器,需要首先定义二元高斯 ...
- easyui样式及js导入顺序及刷新回车的问题
在使用easyui时,需要导入样式表及其js文件,在导入时.不光要遵守jquery包在easyui包的前面,还需要把样式表放在js的前边 <link type="text/css&qu ...
- [Clojure] A Room-Escape game, playing with telnet and pure-text commands - Part 3
Code Path: https://github.com/bluesilence/Lisp/blob/master/clojure/projects/room-escape/src/room_esc ...
- 小强的HTML5移动开发之路(15)——HTML5中的音频
浏览器虽然发展很快,但是浏览器中的标准还是不完善,在HTML4+CSS2+JS的前段开发中让很多程序员头疼的就是浏览器的兼容性问题,音频播放也一样,直到现在,仍然不存在一项网页上播放视频和音频的标准. ...
- 【codeforces 785C】Anton and Fairy Tale
[题目链接]:http://codeforces.com/contest/785/problem/C [题意] 容量为n的谷仓,每一天都会有m个谷子入仓(满了就视为m);第i天 会有i只鸟叼走i个谷子 ...
- 第三方微信支付,WAP、H5、APP、公众号支付的区别
你说一个微信支付被腾讯搞了N个版本出来,是技术问题还收费原因不得而知.公众号支付,H5(wap)支付,APP支付.看得小编一头雾水. 带点N个疑问? 1.公众号支付是在公众号里支付,支众号里引入的三方 ...
- 如何在spring quartz类中拿到ServletContext
ContextLoader.getCurrentWebApplicationContext().getServletContext() web.xml里加个: <listener> < ...