可能是太过于懒惰的原因,研究个windows 服务的安装程序都花了大半天时间。在网上看了一些示例,大部分都言过其实,把过程搞得太过复杂,老是需要去研究如何利用InstallUtil.exe及其参数。事实上,既然要安装.net下制作的windows服务,肯定首先得在目标机器上安装有.net框架。因此,InstallUtil.exe也一定已经存在目标机器上了,因而利用微软的傻瓜式操作就能很好地解决windows服务安装和卸载的问题。
过一段时间估计还要狠狠地利用windows服务来完成一些功能,为了加深印象,又回过头弄了一个名叫HelloWorldService的windows服务,用最简单的demo来完成所有的操作。这个服务的功能,仅仅是在它启动的时候创建一个HelloWorld.txt文件,里边写上Hello World!这几个简单的字母而已。 1、选择Visual C#->Windows->Windows 服务,创建一个HelloWorldService项目。 ![]() ![]() ![]() 4、在HelloWorldService.cs的设计界面点右键,在弹出菜单中选择”添加安装程序“。 ![]() ![]() ServiceProcessInstall安装一个可执行文件,该文件包含扩展 ServiceBase 的类。该类由安装实用工具(如 InstallUtil.exe)在安装服务应用程序时调用。在这里主要是修改其Account属性。ServiceAccount指定服务的安全上下文,安全上下文定义其登录类型。
![]() LocalSystem 服务控制管理员使用的帐户,它具有本地计算机上的许多权限并作为网络上的计算机。 NetworkService 提供广泛的本地特权的帐户,该帐户将计算机的凭据提供给所有远程服务器。 User 由网络上特定的用户定义的帐户。如果为 ServiceProcessInstaller.Account 成员指定 User,则会使系统在安装服务时提示输入有效的用户名和密码,除非您为 ServiceProcessInstaller 实例的 Username 和 Password 这两个属性设置值。 ServiceInstaller安装一个类,该类扩展 ServiceBase 来实现服务。在安装服务应用程序时由安装实用工具调用该类。在这里主要修改其StartType属性。此值指定了服务的启动模式。 ![]() Disabled 指示禁用该服务,以便它无法由用户或应用程序启动。 Manual 指示服务只由用户(使用“服务控制管理器”)或应用程序手动启动。 5、上面这些都是安装包最终要安装/卸载的对象。下面就来看看如何用.net制作安装包。 需要在解决方案里边添加一个安装项目,取其名称为HelloWorldSetup。 ![]() 6、添加工程后,在默认的视图界面右键点击”应用程序文件夹“,选择”添加“->”项目输出“。 ![]() ![]() 7、上面的步骤定义了最后在应用程序文件夹中包含的内容。下面来定义其他方面的内容。在项目上点右键,选择 视图->自定义操作。
![]() 8、出来如下的界面,然后在”自定义操作“上点右键,选择”添加自定义操作“。
![]() ![]() ![]() ![]() ![]() ![]() 安装成功后,就可以从服务管理面板中欣喜地看到我们梦寐以求的服务程序了。
![]() 不过在我点启动的时候,还出现了一段小插曲——系统报错了。错误如下图: ![]() ![]() 10、最后,一起来欣赏这个windows 服务的成果: ![]() |
最近写了几个Windows后台服务,总要用命令安装,然后又得跑到服务管理里面找出服务,Start,Stop…… 实在是受不了,就写了个脚本,放上来大家有用的话就拿去用吧!
安装服务的脚本: (.bat)
@echo off
echo 开始安装程序
echo ......
if exist %windir%\Microsoft.NET\Framework\v1.1.4322\InstallUtil.exe %windir%\Microsoft.NET\Framework\v1.1.4322\InstallUtil.exe -i %cd%\要安装的服务.exe
if not exist %windir%\Microsoft.NET\Framework\v1.1.4322\InstallUtil.exe
echo 请安装.Net Framework v1.1.4322
echo 安装 要安装的服务.exe 程序结束
echo ……
pause
卸载的脚本: 中国网管联盟www_bitscn_com
@echo off
echo 卸载程序开始
echo 开始卸载 要安装的服务.exe
echo ……
%windir%\Microsoft.NET\Framework\v1.1.4322\InstallUtil.exe -u %cd%\要安装的服务.exe
echo 卸载要安装的服务.exe 完成
echo ……
pause
启动服务:
54ne.com
net start "服务名称"
关闭服务: 54com.cn
net stop "服务名称"
feedom.net