如何在没有InstallUtil.exe的情况下安装.NET windows服务vb.net
我在vb.net中创建了一个windows服务。无论如何,我可以为它创建一个不需要installutil的安装吗?如何在没有InstallUtil.exe的情况下安装.NET windows服务vb.net
Installutil是必要的,但为了使事情更容易,您可以创建一个安装项目,以便您只需运行一个.msi来安装该服务。 (这使用installutil引擎盖下,但它极大地简化了安装。)
一个初排是在这里:http://support.microsoft.com/kb/816169
而另一个是在这里:http://msdn.microsoft.com/en-us/library/zt39148a(VS.80).aspx
两者之间的主要区别在于代码量在样品中。他们都走过了同样的过程。
链接的文章很旧,但仍适用于VS2010。上周我用第二篇文章介绍了VS2010服务的流程。
为什么你想避免installutils?
你可以尝试使用sc
命令,如sc create ...
编辑:下面是一个MSDN页面吧:http://support.microsoft.com/?kbid=251192
DESCRIPTION:
Creates a service entry in the registry and Service Database.
USAGE:
sc <server> create [service name] [binPath= ] <option1> <option2>...
OPTIONS:
NOTE: The option name includes the equal sign.
A space is required between the equal sign and the value.
type= <own|share|interact|kernel|filesys|rec>
(default = own)
start= <boot|system|auto|demand|disabled|delayed-auto>
(default = demand)
error= <normal|severe|critical|ignore>
(default = normal)
binPath= <BinaryPathName>
group= <LoadOrderGroup>
tag= <yes|no>
depend= <Dependencies(separated by/(forward slash))>
obj= <AccountName|ObjectName>
(default = LocalSystem)
DisplayName= <display name>
password= <password>
您可以随时与注册表项做到这一点。
钥匙位于HKLM\SYSTEM\CurrentControlSet\services
您创建的密钥名称是您的服务处理程序中服务的嵌入名称。下面的值是相关的:
DisplayName
=这被显示在服务管理器
ImagePath
=服务可执行
Start
(DWORD)=启动类型(3 =自动启动)
DelayedAutoStart
(DWORD)=(1 =延迟)
WOW64
(DWORD)=(0 = 64位应用程序,1 = 32位应用程序)
ErrorControl
(DWORD)= 0
ObjectName
= {用户名}下(本地系统为系统帐户)
运行有很多其他的价值,但应该让你开始。
感谢您的演练。我还用第二篇文章取得了巨大成功。然而,在我的服务中,我有一个名为filepath的变量,它决定了我的服务创建的文件的输出位置。无论如何,我可以让用户能够输入他们想要的位置吗? – Simon 2012-01-31 21:10:17
或者我应该通过.bat fle找sintall? – Simon 2012-01-31 21:11:50
如果这些值位于.config文件中,您可以这样做。这里有一个教程,演示如何修改安装项目安装场景中的app.config值。我没有使用它,但它看起来很刺激。 http://raquila.com/software/configure-app-config-application-settings-during-msi-install/ – David 2012-01-31 21:24:15