有谁知道如何让我在ServiceInstall声明参数传递到服务在启动时? 他们似乎总是在我的OnStart(字串[] args)空。
<ServiceInstall
Id="ServiceInstaller"
Type="ownProcess"
Vital="yes"
Name="MyService"
DisplayName="MyService"
Description="MyService Desc"
Start="auto"
Account="LocalSystem"
ErrorControl="ignore"
Interactive="yes"
Arguments="MY ARGS HERE"
>
</ServiceInstall>
<ServiceControl Id="ServiceControl" Start="install" Stop="both" Remove="uninstall" Name="MyService" Wait="yes" />
老样,但这里是你可以做什么
<ServiceInstall
Id="SomeService"
Type="ownProcess"
Vital="yes"
Name="Some Service"
DisplayName="Some Service"
Description="Monitoring and management of some service"
Start="auto"
Account="LocalSystem"
ErrorControl="normal"
Interactive="no"/>
<ServiceControl Id="StartSomeService" Start="install" Stop="both" Remove="uninstall" Name="Some Service" Wait="yes">
<ServiceArgument>[P_USEREMAIL]</ServiceArgument>
<ServiceArgument>[P_USERPASSWORD]</ServiceArgument>
<ServiceArgument>[P_DEFAULTNAMINGCONTEXT]</ServiceArgument>
<ServiceArgument>[P_USEHTTPPROXY]</ServiceArgument>
<ServiceArgument>[P_PROXYADDRESS]</ServiceArgument>
<ServiceArgument>[P_PROXYDOMAIN]</ServiceArgument>
<ServiceArgument>[P_PROXYUSERNAME]</ServiceArgument>
<ServiceArgument>[P_PROXYPASSWORD]</ServiceArgument>
</ServiceControl>
更新:当涉及到的维克斯文档惨遭unaspiring 这个元素。
基本上,可以设置(公共)WIX变量,定义为[P_ *]按通常(例如MSIEXEC参数,静态的,或者在一个CA)。 这些值传递给服务在启动时以同样的方式,如果你在你开始从服务控制台服务时提供的启动参数字符串连接在一起,这些值(或净开始我想象)。 就我而言,这些都是以空格隔开的值,例如[P_USERMAIL]为“--useremail some@email.com”,这虽然是任意的,你会在您发布的服务启动代码处理这个问题。
正如你可能知道,这些值不会保留。 如果服务失败的值初始化为你提供,你要么需要重新安装/修复或将它们传递到服务的另一种方式(即服务控制台,NET START)。
任何人就这一进展? 我没有看到这个参数打在我的启动服务:
<ServiceInstall
Id="ServiceInstaller"
Type="ownProcess"
Vital="yes"
Name="Service"
DisplayName="Service"
Description="a service"
Arguments="-p stuff"
Start="auto"
Account="LocalSystem"
ErrorControl="normal"
Interactive="yes"/>
我的服务总是得到一个空数组ARG:
partial class PrintMonitorService : ServiceBase
{
private readonly PrintMonitorServiceManager _serviceManager;
public PrintMonitorService()
{
InitializeComponent();
_serviceManager = new PrintMonitorServiceManager();
}
protected override void OnStart(string[] args)
{
_serviceManager.StartHosting(args);
}
protected override void OnStop()
{
_serviceManager.StopHosting();
}