C#制作Windows service服务系列一:制作一个可安装、可启动、可停止、可卸载的Windows service
2014-08-16 17:59
1076 查看
http://www.cnblogs.com/downmoon/archive/2007/12/29/1019924.html
系列一: 制作一个可安装、可启动、可停止、可卸载的Windows
service(downmoon原创)
系列二:演示一个定期执行的windows服务及调试(windows
service)(downmoon)
系列三: windows
service系列三--制作可控制界面的windows service
因为windows service 工作中最近开始频繁使用,而手工部署的方式,最好的是用BAT文件,可是程序要部署到别的服务器上时,就会发现路径是一个问题:当然也可以用全局变量来控制,这里不赘述。
给出一个手工部署的例子
setupServer.bat
![](https://oscdn.geek-share.com/Uploads/Images/Content/2015/2015030196/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/2015/2015030196/6810355c2f78c12e91b7997a8e8c583a.gif)
echo off
![](https://oscdn.geek-share.com/Uploads/Images/Content/2015/2015030196/6810355c2f78c12e91b7997a8e8c583a.gif)
if exist "%SystemRoot%Microsoft.NETFramework
2.0.50727" goto netOld
![](https://oscdn.geek-share.com/Uploads/Images/Content/2015/2015030196/6810355c2f78c12e91b7997a8e8c583a.gif)
:DispError
![](https://oscdn.geek-share.com/Uploads/Images/Content/2015/2015030196/6810355c2f78c12e91b7997a8e8c583a.gif)
echo 您的机器上没有安装 .net FrameWork 2.0
![](https://oscdn.geek-share.com/Uploads/Images/Content/2015/2015030196/6810355c2f78c12e91b7997a8e8c583a.gif)
pause
![](https://oscdn.geek-share.com/Uploads/Images/Content/2015/2015030196/6810355c2f78c12e91b7997a8e8c583a.gif)
goto LastEnd
![](https://oscdn.geek-share.com/Uploads/Images/Content/2015/2015030196/6810355c2f78c12e91b7997a8e8c583a.gif)
:netOld
![](https://oscdn.geek-share.com/Uploads/Images/Content/2015/2015030196/6810355c2f78c12e91b7997a8e8c583a.gif)
cd %SystemRoot%Microsoft.NETFrameworkv2.0.50727
![](https://oscdn.geek-share.com/Uploads/Images/Content/2015/2015030196/6810355c2f78c12e91b7997a8e8c583a.gif)
echo 您的机器上安装了相应的.net FrameWork,可以安装本服务,按任意键继续…………
![](https://oscdn.geek-share.com/Uploads/Images/Content/2015/2015030196/6810355c2f78c12e91b7997a8e8c583a.gif)
echo off
![](https://oscdn.geek-share.com/Uploads/Images/Content/2015/2015030196/6810355c2f78c12e91b7997a8e8c583a.gif)
pause
![](https://oscdn.geek-share.com/Uploads/Images/Content/2015/2015030196/6810355c2f78c12e91b7997a8e8c583a.gif)
%SystemRoot%Microsoft.NETFrameworkv2.0.50727installutil C:TradeMatchService2007TradeMatchService2007binDebugTradeMatchService2007.exe
![](https://oscdn.geek-share.com/Uploads/Images/Content/2015/2015030196/6810355c2f78c12e91b7997a8e8c583a.gif)
net start "servTradeMatch2007"
![](https://oscdn.geek-share.com/Uploads/Images/Content/2015/2015030196/6810355c2f78c12e91b7997a8e8c583a.gif)
:LastEnd
![](https://oscdn.geek-share.com/Uploads/Images/Content/2015/2015030196/6810355c2f78c12e91b7997a8e8c583a.gif)
rem exit
卸载如下:
unInstallServer.bat
![](https://oscdn.geek-share.com/Uploads/Images/Content/2015/2015030196/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/2015/2015030196/6810355c2f78c12e91b7997a8e8c583a.gif)
echo off
![](https://oscdn.geek-share.com/Uploads/Images/Content/2015/2015030196/6810355c2f78c12e91b7997a8e8c583a.gif)
if exist "%SystemRoot%Microsoft.NETFramework
2.0.50727" goto netOld
![](https://oscdn.geek-share.com/Uploads/Images/Content/2015/2015030196/6810355c2f78c12e91b7997a8e8c583a.gif)
:DispError
![](https://oscdn.geek-share.com/Uploads/Images/Content/2015/2015030196/6810355c2f78c12e91b7997a8e8c583a.gif)
echo 您的机器上没有安装.net FrameWork 2.0,安装即将终止
![](https://oscdn.geek-share.com/Uploads/Images/Content/2015/2015030196/6810355c2f78c12e91b7997a8e8c583a.gif)
pause
![](https://oscdn.geek-share.com/Uploads/Images/Content/2015/2015030196/6810355c2f78c12e91b7997a8e8c583a.gif)
goto LastEnd
![](https://oscdn.geek-share.com/Uploads/Images/Content/2015/2015030196/6810355c2f78c12e91b7997a8e8c583a.gif)
:netOld
![](https://oscdn.geek-share.com/Uploads/Images/Content/2015/2015030196/6810355c2f78c12e91b7997a8e8c583a.gif)
echo 即将卸载本服务,按任意键继续…………
![](https://oscdn.geek-share.com/Uploads/Images/Content/2015/2015030196/6810355c2f78c12e91b7997a8e8c583a.gif)
echo off
![](https://oscdn.geek-share.com/Uploads/Images/Content/2015/2015030196/6810355c2f78c12e91b7997a8e8c583a.gif)
pause
![](https://oscdn.geek-share.com/Uploads/Images/Content/2015/2015030196/6810355c2f78c12e91b7997a8e8c583a.gif)
net stop "servTradeMatch2007"
![](https://oscdn.geek-share.com/Uploads/Images/Content/2015/2015030196/6810355c2f78c12e91b7997a8e8c583a.gif)
cd %SystemRoot%Microsoft.NETFrameworkv2.0.50727
![](https://oscdn.geek-share.com/Uploads/Images/Content/2015/2015030196/6810355c2f78c12e91b7997a8e8c583a.gif)
%SystemRoot%Microsoft.NETFrameworkv2.0.50727installutil /uninstall C:TradeMatchService2007TradeMatchService2007binDebugTradeMatchService2007.exe
![](https://oscdn.geek-share.com/Uploads/Images/Content/2015/2015030196/6810355c2f78c12e91b7997a8e8c583a.gif)
:LastEnd
![](https://oscdn.geek-share.com/Uploads/Images/Content/2015/2015030196/6810355c2f78c12e91b7997a8e8c583a.gif)
rem exit
![](https://oscdn.geek-share.com/Uploads/Images/Content/2015/2015030196/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/2015/2015030196/6810355c2f78c12e91b7997a8e8c583a.gif)
也可以同时判断两个以上的net FrameWork版本
这里要介绍的是一个完整的安装程序,所以服务本身就略去,如果有朋友需要学习,可以跟我联系3w@live.cn
好了,言归正传
假定 windows Service已写好,服务名为servTradeMatch2007,可执行文件名为TradeMatchService2007.exe
![](https://oscdn.geek-share.com/Uploads/Images/Content/201408/4e0a3f3e127298024c7b8273b63d5310.png)
一、首先在解决方案中创建一个安装部署的项目,右键点击项目名称,在菜单中选择[添加]-->[项目输出],
在弹出的"添加项目输出组"窗口中,第一个下拉框会列出该解决方案中其他的项目,
选择需要制作安装的windows service项目,再选择主输出,点[确定]。如图:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201408/164ba61e417c583b592831997e02d07f.png)
依次在”目标计算机上的文件系统“--”应用程序文件夹“下添加以下四个文件
1、msiexec.exe
2、start.bat
3、stop.bat
4、主输出文件
![](https://oscdn.geek-share.com/Uploads/Images/Content/201408/02e5b13b756126828ca569acab084701.png)
其中msiexec.exe位于Windows\System32下
stopbat文件内容如下:
![](https://oscdn.geek-share.com/Uploads/Images/Content/2015/2015030196/6810355c2f78c12e91b7997a8e8c583a.gif)
echo off
![](https://oscdn.geek-share.com/Uploads/Images/Content/2015/2015030196/6810355c2f78c12e91b7997a8e8c583a.gif)
net stop "servTradeMatch2007"
![](https://oscdn.geek-share.com/Uploads/Images/Content/2015/2015030196/6810355c2f78c12e91b7997a8e8c583a.gif)
exit
startbat文件内容如下:
![](https://oscdn.geek-share.com/Uploads/Images/Content/2015/2015030196/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/2015/2015030196/6810355c2f78c12e91b7997a8e8c583a.gif)
echo off
![](https://oscdn.geek-share.com/Uploads/Images/Content/2015/2015030196/6810355c2f78c12e91b7997a8e8c583a.gif)
net start "servTradeMatch2007"
![](https://oscdn.geek-share.com/Uploads/Images/Content/2015/2015030196/6810355c2f78c12e91b7997a8e8c583a.gif)
exit
在"用户的程序文件夹下",新建一文件夹”蔬菜网全文检索服务“,分别制作这前三个文件的快捷方式到这里
![](https://oscdn.geek-share.com/Uploads/Images/Content/201408/a68f48c62decd67e77a9c70108c127d2.png)
右键单击”卸载服务“(msexec.exe对应的快捷方式)
输入一串值
![](https://oscdn.geek-share.com/Uploads/Images/Content/201408/f9f9fda030c4d00f8fff21c6e7e6dd11.png)
其中"/x "后面对应和数值来自
Setup_TradeMatchService2007.vdproj文件
![](https://oscdn.geek-share.com/Uploads/Images/Content/200712/faa1db048b86d42a52e1bd182e93ebeb.png)
OK ! 生成安装包,
别急,安装完后,windows
service并没有安装成服务。
还必须在安装项目中添加自定义操作。右击安装项目->视图->自定义操作。如下图:分别添加自定义操作,在应用程序文件夹中选择刚才添加的主输出即可.
![](https://oscdn.geek-share.com/Uploads/Images/Content/200712/59d8b1f4739a57aa21fac8dccdec9170.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/200712/f28446aced77c1a9d6e499efd0e5563d.png)
安装过程如下:
![](https://oscdn.geek-share.com/Uploads/Images/Content/200712/f755cb7ee756f2b0bdad96a5a7bab887.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/200712/ecfd70a3298e0eb02e4d40825e8f2235.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/200712/086738211bfe09ccfbb906469a68c404.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/200712/1770c7091ebd4c78833cba31ad9fd78e.png)
卸载:
系列一: 制作一个可安装、可启动、可停止、可卸载的Windows
service(downmoon原创)
系列二:演示一个定期执行的windows服务及调试(windows
service)(downmoon)
系列三: windows
service系列三--制作可控制界面的windows service
因为windows service 工作中最近开始频繁使用,而手工部署的方式,最好的是用BAT文件,可是程序要部署到别的服务器上时,就会发现路径是一个问题:当然也可以用全局变量来控制,这里不赘述。
给出一个手工部署的例子
setupServer.bat
![](https://oscdn.geek-share.com/Uploads/Images/Content/2015/2015030196/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/2015/2015030196/6810355c2f78c12e91b7997a8e8c583a.gif)
echo off
![](https://oscdn.geek-share.com/Uploads/Images/Content/2015/2015030196/6810355c2f78c12e91b7997a8e8c583a.gif)
if exist "%SystemRoot%Microsoft.NETFramework
2.0.50727" goto netOld
![](https://oscdn.geek-share.com/Uploads/Images/Content/2015/2015030196/6810355c2f78c12e91b7997a8e8c583a.gif)
:DispError
![](https://oscdn.geek-share.com/Uploads/Images/Content/2015/2015030196/6810355c2f78c12e91b7997a8e8c583a.gif)
echo 您的机器上没有安装 .net FrameWork 2.0
![](https://oscdn.geek-share.com/Uploads/Images/Content/2015/2015030196/6810355c2f78c12e91b7997a8e8c583a.gif)
pause
![](https://oscdn.geek-share.com/Uploads/Images/Content/2015/2015030196/6810355c2f78c12e91b7997a8e8c583a.gif)
goto LastEnd
![](https://oscdn.geek-share.com/Uploads/Images/Content/2015/2015030196/6810355c2f78c12e91b7997a8e8c583a.gif)
:netOld
![](https://oscdn.geek-share.com/Uploads/Images/Content/2015/2015030196/6810355c2f78c12e91b7997a8e8c583a.gif)
cd %SystemRoot%Microsoft.NETFrameworkv2.0.50727
![](https://oscdn.geek-share.com/Uploads/Images/Content/2015/2015030196/6810355c2f78c12e91b7997a8e8c583a.gif)
echo 您的机器上安装了相应的.net FrameWork,可以安装本服务,按任意键继续…………
![](https://oscdn.geek-share.com/Uploads/Images/Content/2015/2015030196/6810355c2f78c12e91b7997a8e8c583a.gif)
echo off
![](https://oscdn.geek-share.com/Uploads/Images/Content/2015/2015030196/6810355c2f78c12e91b7997a8e8c583a.gif)
pause
![](https://oscdn.geek-share.com/Uploads/Images/Content/2015/2015030196/6810355c2f78c12e91b7997a8e8c583a.gif)
%SystemRoot%Microsoft.NETFrameworkv2.0.50727installutil C:TradeMatchService2007TradeMatchService2007binDebugTradeMatchService2007.exe
![](https://oscdn.geek-share.com/Uploads/Images/Content/2015/2015030196/6810355c2f78c12e91b7997a8e8c583a.gif)
net start "servTradeMatch2007"
![](https://oscdn.geek-share.com/Uploads/Images/Content/2015/2015030196/6810355c2f78c12e91b7997a8e8c583a.gif)
:LastEnd
![](https://oscdn.geek-share.com/Uploads/Images/Content/2015/2015030196/6810355c2f78c12e91b7997a8e8c583a.gif)
rem exit
卸载如下:
unInstallServer.bat
![](https://oscdn.geek-share.com/Uploads/Images/Content/2015/2015030196/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/2015/2015030196/6810355c2f78c12e91b7997a8e8c583a.gif)
echo off
![](https://oscdn.geek-share.com/Uploads/Images/Content/2015/2015030196/6810355c2f78c12e91b7997a8e8c583a.gif)
if exist "%SystemRoot%Microsoft.NETFramework
2.0.50727" goto netOld
![](https://oscdn.geek-share.com/Uploads/Images/Content/2015/2015030196/6810355c2f78c12e91b7997a8e8c583a.gif)
:DispError
![](https://oscdn.geek-share.com/Uploads/Images/Content/2015/2015030196/6810355c2f78c12e91b7997a8e8c583a.gif)
echo 您的机器上没有安装.net FrameWork 2.0,安装即将终止
![](https://oscdn.geek-share.com/Uploads/Images/Content/2015/2015030196/6810355c2f78c12e91b7997a8e8c583a.gif)
pause
![](https://oscdn.geek-share.com/Uploads/Images/Content/2015/2015030196/6810355c2f78c12e91b7997a8e8c583a.gif)
goto LastEnd
![](https://oscdn.geek-share.com/Uploads/Images/Content/2015/2015030196/6810355c2f78c12e91b7997a8e8c583a.gif)
:netOld
![](https://oscdn.geek-share.com/Uploads/Images/Content/2015/2015030196/6810355c2f78c12e91b7997a8e8c583a.gif)
echo 即将卸载本服务,按任意键继续…………
![](https://oscdn.geek-share.com/Uploads/Images/Content/2015/2015030196/6810355c2f78c12e91b7997a8e8c583a.gif)
echo off
![](https://oscdn.geek-share.com/Uploads/Images/Content/2015/2015030196/6810355c2f78c12e91b7997a8e8c583a.gif)
pause
![](https://oscdn.geek-share.com/Uploads/Images/Content/2015/2015030196/6810355c2f78c12e91b7997a8e8c583a.gif)
net stop "servTradeMatch2007"
![](https://oscdn.geek-share.com/Uploads/Images/Content/2015/2015030196/6810355c2f78c12e91b7997a8e8c583a.gif)
cd %SystemRoot%Microsoft.NETFrameworkv2.0.50727
![](https://oscdn.geek-share.com/Uploads/Images/Content/2015/2015030196/6810355c2f78c12e91b7997a8e8c583a.gif)
%SystemRoot%Microsoft.NETFrameworkv2.0.50727installutil /uninstall C:TradeMatchService2007TradeMatchService2007binDebugTradeMatchService2007.exe
![](https://oscdn.geek-share.com/Uploads/Images/Content/2015/2015030196/6810355c2f78c12e91b7997a8e8c583a.gif)
:LastEnd
![](https://oscdn.geek-share.com/Uploads/Images/Content/2015/2015030196/6810355c2f78c12e91b7997a8e8c583a.gif)
rem exit
![](https://oscdn.geek-share.com/Uploads/Images/Content/2015/2015030196/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/2015/2015030196/6810355c2f78c12e91b7997a8e8c583a.gif)
也可以同时判断两个以上的net FrameWork版本
这里要介绍的是一个完整的安装程序,所以服务本身就略去,如果有朋友需要学习,可以跟我联系3w@live.cn
好了,言归正传
假定 windows Service已写好,服务名为servTradeMatch2007,可执行文件名为TradeMatchService2007.exe
![](https://oscdn.geek-share.com/Uploads/Images/Content/201408/4e0a3f3e127298024c7b8273b63d5310.png)
一、首先在解决方案中创建一个安装部署的项目,右键点击项目名称,在菜单中选择[添加]-->[项目输出],
在弹出的"添加项目输出组"窗口中,第一个下拉框会列出该解决方案中其他的项目,
选择需要制作安装的windows service项目,再选择主输出,点[确定]。如图:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201408/164ba61e417c583b592831997e02d07f.png)
依次在”目标计算机上的文件系统“--”应用程序文件夹“下添加以下四个文件
1、msiexec.exe
2、start.bat
3、stop.bat
4、主输出文件
![](https://oscdn.geek-share.com/Uploads/Images/Content/201408/02e5b13b756126828ca569acab084701.png)
其中msiexec.exe位于Windows\System32下
stopbat文件内容如下:
![](https://oscdn.geek-share.com/Uploads/Images/Content/2015/2015030196/6810355c2f78c12e91b7997a8e8c583a.gif)
echo off
![](https://oscdn.geek-share.com/Uploads/Images/Content/2015/2015030196/6810355c2f78c12e91b7997a8e8c583a.gif)
net stop "servTradeMatch2007"
![](https://oscdn.geek-share.com/Uploads/Images/Content/2015/2015030196/6810355c2f78c12e91b7997a8e8c583a.gif)
exit
startbat文件内容如下:
![](https://oscdn.geek-share.com/Uploads/Images/Content/2015/2015030196/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://oscdn.geek-share.com/Uploads/Images/Content/2015/2015030196/6810355c2f78c12e91b7997a8e8c583a.gif)
echo off
![](https://oscdn.geek-share.com/Uploads/Images/Content/2015/2015030196/6810355c2f78c12e91b7997a8e8c583a.gif)
net start "servTradeMatch2007"
![](https://oscdn.geek-share.com/Uploads/Images/Content/2015/2015030196/6810355c2f78c12e91b7997a8e8c583a.gif)
exit
在"用户的程序文件夹下",新建一文件夹”蔬菜网全文检索服务“,分别制作这前三个文件的快捷方式到这里
![](https://oscdn.geek-share.com/Uploads/Images/Content/201408/a68f48c62decd67e77a9c70108c127d2.png)
右键单击”卸载服务“(msexec.exe对应的快捷方式)
输入一串值
![](https://oscdn.geek-share.com/Uploads/Images/Content/201408/f9f9fda030c4d00f8fff21c6e7e6dd11.png)
其中"/x "后面对应和数值来自
Setup_TradeMatchService2007.vdproj文件
![](https://oscdn.geek-share.com/Uploads/Images/Content/200712/faa1db048b86d42a52e1bd182e93ebeb.png)
OK ! 生成安装包,
别急,安装完后,windows
service并没有安装成服务。
还必须在安装项目中添加自定义操作。右击安装项目->视图->自定义操作。如下图:分别添加自定义操作,在应用程序文件夹中选择刚才添加的主输出即可.
![](https://oscdn.geek-share.com/Uploads/Images/Content/200712/59d8b1f4739a57aa21fac8dccdec9170.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/200712/f28446aced77c1a9d6e499efd0e5563d.png)
安装过程如下:
![](https://oscdn.geek-share.com/Uploads/Images/Content/200712/f755cb7ee756f2b0bdad96a5a7bab887.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/200712/ecfd70a3298e0eb02e4d40825e8f2235.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/200712/086738211bfe09ccfbb906469a68c404.png)
![](https://oscdn.geek-share.com/Uploads/Images/Content/200712/1770c7091ebd4c78833cba31ad9fd78e.png)
卸载:
![](https://oscdn.geek-share.com/Uploads/Images/Content/201408/66b57a60d29c06c378e9be580ba73be6.png)
相关文章推荐
- C#制作Windows service服务系列一:制作一个可安装、可启动、可停止、可卸载的Windows service
- C#制作Windows service服务系列一:制作一个可安装、可启动、可停止、可卸载的Windows service
- C#制作Windows service服务系列一:制作一个可安装、可启动、可停止、可卸载的Windows service
- C#制作Windows service服务系列一:制作一个可安装、可启动、可停止、可卸载的Windows service
- C#制作Windows service服务系列一:制作一个可安装、可启动、可停止、可卸载的Windows service
- C#制作Windows service服务系列一:制作一个可安装、可启动、可停止、可卸载的Windows service(downmoon原创)
- C#制作Windows service服务系列一:制作一个可安装、可启动、可停止、可卸载的Windows service
- C#制作Windows service服务系列一:制作一个可安装、可启动、可停止、可卸载的Windows
- C# windows服务:通过cmd命令安装、卸载、启动和停止Windows Service(InstallUtil.exe)
- C# windows服务:通过cmd命令安装、卸载、启动和停止Windows Service(InstallUtil.exe)
- C# windows服务:通过cmd命令安装、卸载、启动和停止Windows Service(InstallUtil.exe)
- C#Windows Service服务程序的安装/卸载、启动/停止 桌面客户端管理程序设计
- 制作一个可安装、可启动、可停止、可卸载的Windows service(downmoon原创)
- C#制作Windows service服务系列二--演示一个定期执行的windows服务及调试
- 制作一个可安装、可启动、可停止、可卸载的Windows service
- C# windows服务:通过cmd命令安装、卸载、启动和停止Windows Service(InstallUtil.exe)
- C#制作Windows service服务系列二--演示一个定期执行的windows服务及调试
- C# windows服务:通过cmd命令安装、卸载、启动和停止Windows Service(InstallUtil.exe)
- 安装 启动 停止 卸载 Windows服务 c#
- 安装 启动 停止 卸载 Windows服务 c#