最近一直在搞Windows服务,也有了很多经验,感受权限方面肯定比通常程序要受限不少,但方便性也不少。像后台运行不阻塞系统,不用用户登陆之类。哈哈,扯远了,今天讲一下那个怎么给Windows服务作个安装包。为何作安装包?固然是方便了,不用每次调用InstallUtil,还有,就是看上去正规些。
很少说了,先来看看怎么作吧。首先,固然是建立一个Windows服务的项目。这个你们应该都知道怎么作(这都不明白的留言问我),而后要给服务“添加安装程序”,如图1所示:(这一步和本身用InstallUtil注册是彻底同样的)
(图1)
添加后,会出来一个serviceProcessInstal1,还有serviceInstaller1,若是你一个项目里有两个服务的话,这里就会有两个serviceInstaller类,如图2:
(图2)
图3是serviceProcessInstal1的属性页,其中Account就是指用于运行服务的账户,若是只是用于本地,能够选LocalSystem(本地系统),这是本地的最高权限,并能够选择和桌面交互功能。若是安全性考虑的话,请选择适合本身的。
(图3)
图4是serviceInstaller2的属性页,其中DisplayName就是显示在Windows服务管理器中的服务名称,Desciption是服务的说明。下面ServiceName是服务内部名称。最关键的是下面的StartType,是指服务的启动方式,是自动,手动和禁用三种。
(图4)
下面,就是今天讲的重点了,点击“文件”->“添加”->“新建项目”(如图5)
(图5)
选择“其余项目类型”->“安装和部署”里的“安装项目”(如图6)
(图6)
建好项目后,右键刚才新建的安装项目,选择“视图”->“文件系统”(如图7)
(图7)
这时,打开了文件系统属性。能够看到,屏幕左边,出现了三项文件系统的内容,由于咱们是Windows服务程序,不须要在开始菜单和桌面上放置图标,因此咱们直接右键“应用程序文件夹”->“添加”->“项目输出”(如图8)
(图8)
在出来的对话框中,选择“主输出”和“Release XXX”,这个由你的项目属性决定,通常选择Release Any CPU。(如图9)
(图9)
系统会自动把项目输出文件,也就是Windows服务程序的EXE文件和全部引用的类库文件都列在中间的框中。这时,为了方便安装,咱们把InstallUtil.exe和两个我本身写的批处理文件一块儿添加进去。添加方法相似上面,只是把“项目输出”改为“文件”。
结果如图10所示:
(图10)
接下来,就该配置一下安装过程,让安装程序自动给咱们安装和卸载Windows服务。
仍是右键安装项目,选“视图”->“自定义操做”,如图11:
(图11)
左边的窗口换到了自定义操做的视图了,右键“安装”->“添加自定义操做”(图12),出现的对话框中,选中“应用程序文件夹”,再选中其中的InstallUtil.exe文件(图13),添加好后,会在安装操做下面多出一个InstallUtil.exe的分支。点一下它,在右边的属性页里,设置Arguments=“ 你的Windows服务文件名”,如图14(注意文件名前要留一个空格)
(图12)
(图13)
(图14)
一样,在提交和卸载处,也添加InstallUtil.exe,不过属性页中设置Arguments=“ -u 你的Windows服务文件名”,这样,安装程序就能实现自动安装注册和卸载Windows服务了。(如图15)
(图15)
接下来就该让Windows服务和安装项目同时被编译了。右键点击解决方案,选择“属性”(如图16),在出来的对话框中,勾上安装项目后面的生成。(如图17)
(图16)
(图17)
最后,右键解决方案,选择“生成解决方案”,这时vs会将两个项目都会编译出来。不过要注意一点:
项目的启动顺序必定要Windows服务项目在前,安装项目在后。