为Windows服务项目制作安装程序
上篇我们开发的Windows服务程序(MyService)是通过命令行的形式来安装的,这种方式比较繁琐,不利于用户的使用。现在我们制作Windows安装程序,通过它来安装我们的服务。
1、添加安装项目
打开项目MyService,选择“File”——> “Add” ——> “NewProject”
![](https://img-my.csdn.net/uploads/201304/11/1365686911_6187.png)
在弹出的对话框中选择Other Project Types ——> Visual Studio Installer ——> Setup Project
![](https://img-my.csdn.net/uploads/201304/11/1365687009_9140.png)
填入项目名称,点击【OK】即可
2、项目文件系统
右键点击MyServiceSetup项目,选择View ——> File System,即打开了项目文件系统
我们看到在文件系统窗口中出现了 Application Folder(应用程序目录)、User’s Desktop(用户桌面)、User’s Programs Menu(用户程序菜单)等三个文件夹。
其中,ApplicationFolder 就是我们程序的安装目录,程序、配置文件、批处理文件都可以放在这里面。User’s Desktop是用户桌面,如果程序有界面的话可以在这里放置程序启动的快捷方式。User’s Programs Menu则是在windows“开始”菜单 ——> “所有程序”看到的东西。
(1)在Application Folder 中添加文件
右键点击Application Folder,选择 “Add”——> “Project Output”项目输出
在出来的对话框中,选择“Primary output”主输出
![](https://img-my.csdn.net/uploads/201304/11/1365687213_4407.png)
主输出指的就是MyService 编译出来的可执行文件
同时将我们写好的两个批处理脚本start.bat、stop.bat也加进来
start.bat用来手动启动服务程序,stop.bat用来手动停止服务程序
start.bat 内容:
Net Start WriteLog |
stop.bat内容:
Net Stop WriteLog |
很简单,都只有一行
当然,这两个脚本并不是必需的,在这里添加只是方便后面使用而已。
(2)在 User’s Programs Menu 中添加相关文件
右键点击User’sPrograms Menu,选择Add ——> Folder
先创建一个文件夹,命名为MyService(这个文件夹将出现在“开始”——>“所有程序”中)
![](https://img-my.csdn.net/uploads/201304/11/1365687373_8829.png)
将ApplicationFolder 中的start.bat和stop.bat的快捷方式拖到User’s Programs Menu下的MyService文件夹中,分别重命名为 Service Start、Service Stop
3、自定义动作
右键点击MyServiceSetup项目,选择View ——> Custom Actions,即可编辑安装程序的自定义动作,包括安装、提交、回滚、卸载等。
![](https://img-my.csdn.net/uploads/201304/11/1365687457_6243.png)
右键点击Install——> Add Custom Action
选择 Application Folder
![](https://img-my.csdn.net/uploads/201304/11/1365687531_7547.png)
选择主输出,点击【OK】
按同样的操作为Uninstall动作添加主输出,添好后如下所示
![](https://img-my.csdn.net/uploads/201304/11/1365687559_3245.png)
修改Uninstall主输出的属性页中的Arguments参数为 /u(“/”前面有一个空格)
![](https://img-my.csdn.net/uploads/201304/11/1365687607_2626.png)
这个跟InstallUtil.exe的卸载参数是一样的
4、编译安装项目
右键点击MyServiceSetup项目,选择Build
![](https://img-my.csdn.net/uploads/201304/11/1365687645_8328.png)
在 MyService\MyServiceSetup\Debug 目录下即生成了安装程序
![](https://img-my.csdn.net/uploads/201304/11/1365687679_7710.png)
双击setup.exe或 MyServiceSetup.msi 即可安装
![](https://img-my.csdn.net/uploads/201304/11/1365687706_5025.png)
安装完后,在服务管理器中可以看到我们的服务已经添进去了,但还未启动(要等下次开机时才自动启动)
![](https://img-my.csdn.net/uploads/201304/11/1365687734_8406.png)
同时,在“开始”——> “所有程序”中可以找到程序目录
![](https://img-my.csdn.net/uploads/201304/11/1365687762_6977.png)
点击Service Start,就可以手动启动服务了。
![](https://img-my.csdn.net/uploads/201304/11/1365687796_3651.png)
点击ServiceStop,可以手动停止服务