![]() |
1
80
您尝试过SC/Service Controller Util吗?类型
在命令行,它将提供帮助条目。我想我过去做这个是为了颠覆和利用 this article 作为参考: http://svn.apache.org/repos/asf/subversion/trunk/notes/windows-service.txt |
![]() |
2
19
可以通过执行以下操作来运行同一服务的多个版本: 1)将服务可执行文件和配置复制到其自己的文件夹中。 2)将install.exe复制到服务可执行文件文件夹(从.NET Framework文件夹) 3)在服务可执行文件文件夹中创建名为install.exe.config的配置文件 包含以下内容(唯一服务名称):
4)创建一个批处理文件来安装服务,内容如下:
5)在那里时,创建卸载批处理文件
编辑: 注意:如果我遗漏了什么,这里是ServiceInstaller类(根据需要调整):
|
![]() |
3
17
这个解决方案对我有效。 |
![]() |
4
11
我知道这是个老问题,但我很幸运在installutil.exe上使用了/servicename选项。不过,我在内置帮助中看不到它。
我不完全确定我第一次读到这篇文章的地方,但从那以后我就再也没有看过。YMMV。 |
![]() |
5
5
在使用我们的自动部署软件频繁地安装/卸载并行Windows服务时,我对上述方法没有太多运气,但我最终想出了以下方法,允许我传入一个参数,在命令行上为服务名指定后缀。它还允许设计器正常工作,并且可以很容易地进行调整,以便在必要时覆盖整个名称。
考虑到这一点,我可以做到以下几点: 如果我将该服务称为“棒极了的服务”,那么我可以安装该服务的UAT版本,如下所示:
这将创建名为“Awesome Service-UAT”的服务。我们使用它在一台机器上并行运行同一个服务的偏差、测试和验收版本。每个版本都有自己的一组文件/配置-我没有尝试安装指向同一组文件的多个服务。
注意:您必须使用相同的
|
![]() |
6
5
另一种快速指定自定义值的方法
请注意,如果您不指定
|
![]() |
7
4
我所做的工作就是将服务名和显示名存储在app.config中,以供我的服务使用。然后,在我的Installer类中,我将app.config加载为一个xml文档,并在调用InitializeComponent()之前,使用xpath获取这些值,并将它们应用于serviceInstaller.serviceName和serviceInstaller.displayName。这假设您还没有在initializecomponent()中设置这些属性,在这种情况下,配置文件中的设置将被忽略。以下代码是我在initializecomponent()之前从安装程序类构造函数调用的代码:
我不相信直接从configurationmanager.appsettings或类似的文件读取配置文件会像安装程序运行时一样工作,它是在installUtil.exe的上下文中运行的,而不是在服务的.exe中运行的。您可能可以使用configurationmanager.openexeconfiguration进行一些操作,但是在我的例子中,这并不能像我试图在未加载的自定义配置部分中那样工作。 |
![]() |
8
4
只是为了提高@chris.house.00的完美答案 this ,您可以考虑使用以下功能读取应用程序设置:
|
![]() |
9
2
|
![]() |
10
1
最简单的方法是基于dll名称的服务名称:
|
![]() |
manoj sawant · 窗口服务无法访问远程共享文件夹 7 年前 |
![]() |
Praveen M · 在WIX中强制终止windows服务 7 年前 |
![]() |
Brendan · SolrCore正在加载Windows服务 7 年前 |
![]() |
shahar eldad · 我应该使用哪个句柄初始化扫描仪应用程序 7 年前 |
![]() |
Dev · CoCreateInstance方法有问题 7 年前 |