如何为windows服务添加安装程序

如何为windows服务添加安装程序,第1张

windowsinstaller服务启动方法:

1.首先检查C:\WINDOWS\system32文件夹中是否缺少msi.dll这个文件,如果没有的话就去别的机器上拷贝一个过来,或者去下载一个windowsinstaller安装包,解压msi.dll出来复制到C:\WINDOWS\system32文件夹中;

2. 单击“开始”,单击“运行”,键入 MSIEXEC /UNREGISTER,然后单击“确定”。这时系统可能不会有任何反应,即使 *** 作完全正确;

3. 单击“开始”,单击“运行”,键入 MSIEXEC /REGSERVER,然后单击“确定”。这时系统可能不会有任何反应(即使您的 *** 作完全正确),也可能会暂时出现一个沙漏。运行此命令后,也就完成了 *** 作;

4. 再次尝试安装基于 Windows Installer 的应用程序 ,现在应该可以正常启动windows installer服务了。

安装Winfows服务首先要添加安装程序,添加安装程序步骤如下:

1、将Windows服务程序切换到设计视图, 右击设计视图选择“添加安装程序”

2、切换到刚被添加的ProjectInstaller的设计视图

一般设置如下:

设置serviceInstaller1组件的属性:

1) ServiceName = 服务名称

2) StartType = Automatic ,即自动

设置serviceProcessInstaller1组件的属性

1) Account = LocalSystem,账户一般设置为本地系统

3、生成解决方案

安装服务:

方法一、使用DOS命令安装window服务

1、在服务所在的文件夹下的bin\debug文件夹下找到.exe文件(例如WindowsService1.exe)

将此文件拷贝到你想安装的文件夹中。

2、进入DOS界面

(VS2008-->Visual Studio Tools-->Visual Studio 2008 命令提示)来进入DOS,直接用cmd可能有些命令找不到;

3、输入

方法二、使用安装项目安装windows服务

个人比较推荐这个方法,选择目录安装更灵活,而且不用在DOS环境下运行。

因为本人比较懒,直接给出别人总结的地址

注意,以后每次服务项目有更改的时候,需要编译服务后,在安装项目中刷新依赖项!!!

方法三、

在ProjectInstaller.cs的后台代码中添加安装服务和卸载服务的代码

/// <summary>

/// 安装服务

/// </summary>

/// <param name="stateSaver"></param>

public override void Install(System.Collections.IDictionary stateSaver)

{

Microsoft.Win32.RegistryKey system,

//HKEY_LOCAL_MACHINE\Services\CurrentControlSet

currentControlSet,

//...\Services

services,

//...\<Service Name>

service,

//...\Parameters - this is where you can put service-specific configuration

config

try

{

//Let the project installer do its job

base.Install(stateSaver)

//Open the HKEY_LOCAL_MACHINE\SYSTEM key

system = Microsoft.Win32.Registry.LocalMachine.OpenSubKey("System")

//Open CurrentControlSet

currentControlSet = system.OpenSubKey("CurrentControlSet")

//Go to the services key

services = currentControlSet.OpenSubKey("Services")

//Open the key for your service, and allow writing

service = services.OpenSubKey(conServiceName, true)

//Add your service's description as a REG_SZ value named "Description"

service.SetValue("Description", "描述语言")

//(Optional) Add some custom information your service will use...

config = service.CreateSubKey("Parameters")

}

catch (Exception e)

{

Console.WriteLine("An exception was thrown during service installation:\n" + e.ToString())

}

}

/// <summary>

/// 卸载服务

/// </summary>

/// <param name="savedState"></param>

public override void Uninstall(System.Collections.IDictionary savedState)

{

Microsoft.Win32.RegistryKey system,

currentControlSet,

services,

service

try

{

//Drill down to the service key and open it with write permission

system = Microsoft.Win32.Registry.LocalMachine.OpenSubKey("System")

currentControlSet = system.OpenSubKey("CurrentControlSet")

services = currentControlSet.OpenSubKey("Services")

service = services.OpenSubKey(conServiceName, true)

//Delete any keys you created during installation (or that your service created)

service.DeleteSubKeyTree("Parameters")

//...

}

catch (Exception e)

{

Console.WriteLine("Exception encountered while uninstalling service:\n" + e.ToString())

}

finally

{

//Let the project installer do its job

base.Uninstall(savedState)

}

}

代码添加完成后

添加window service安装的批处理命令

1)在项目添加一个文本文件,更名为install.bat,编辑文件的内容如下:

@echo off

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\InstallUtil.exe -i "WindowsService1.exe"

@pause

2)在项目添加一个文本文件,更名为uninstall.bat,编辑文件的内容如下

@echo off

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\InstallUtil.exe -u "WindowsService1.exe"

@pause

说明:上面绿色字体为服务名称

编译完成后将debug的文件拷贝到想安装的目录下,点击install.bat即完成安装。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12087671.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存