【原创】windows7+vs2012 如何安装windows服务

这次写的这个服务主要是用于定时备份SQLite数据库的。

所有的备份的参数(备份路径,备份时间间隔)都放在一个配置文件中。

服务已经用vs写好了,这里主要介绍一下这个服务的安装过程。

其实服务本身也是一个exe,安装的过程其实是将这个exe存放的位置告诉操所系统,这样你再告诉操作系统什么时候起这个服务(例如我要手动起,或者开机自启动,就相当于把这个程序托管给操作系统了)。

安装工具:

我用的是vs自带的安装工具,你可以在桌面左下角  “开始-》Microsoft Visual Studio 2012-》Visual Studio Tools-》Developer Command Prompt for VS2012”,

就会弹出一个类似DOS的终端,然后你就可以运行安装命令了。

安装命令是:installutil xxxxx.exe(这个是你的服务的程序,当然你的终端界面首先要进入这个exe所在的路径,如果中断不会的自己百度cd命令)

卸载命令是:installutil /u xxxxx.exe

注意:

如果出现

An exception occurred during the Install phase.

 

System.Security.SecurityException: The source was not found, but some or all event logs could not be searched.  Inaccessible logs: Security.

 

 

这是你的电脑有权限的设定,请确保自己是用管理员运行这个终端的(可以右击Developer Command Prompt for VS2012,然后选按管理员运行)。

 

补充:

由于我的服务要求读取的配置应该在exe文件同目录,所以我简单的在文件操作时用了相对路径,这样的后果是找不到配置文件,因为exe文件的路径并不是他的执行路径,他其实是被

操作系统调用启动的,因该是system32下面的某个exe。

 

2014-6-5

今天要打包服务了,上面的方法是用vs自带的DOS终端,这里面环境变量已经设置好了,所以可以直接调用installutil命令,但是可用户安装包不能这样操作,

我的方法是找到installutil.exe这个程序,然后和服务程序一起打包,再写一个bat文件来执行这个installutil.exe。

installutil.exe是.NET里面的工具程序,如果你安装了.NET可以在这个路径下找到C:\Windows\Microsoft.NET\Framework\v2.0.50727。

如果没有可以先安装.NET或者到网上去下一个。

 

2014-7-11

最终我放弃了使用vs自带的installutil.exe,原因是这个软件和.Net版本有着密切的联系,如果你打包的installutil.exe和你的安装软件不是同一.Net版本的话就无法安装。

改变的方法是使用采用系统的安装命令SC,简单的用法是 :

创建服务 sc create 【服务的名称】 start= auto binpath= 【服务程序所在路径】

删除服务 sc delete 【服务名称】

 

posted @ 2014-05-22 15:04  yaoxiaping666  Views(877)  Comments(0Edit  收藏  举报