c# - Wix 服务安装参数

标签 c# wix

有谁知道如何让我在 ServiceInstall 中声明的参数在服务启动时传递给它?它们在我的 OnStart(string[] 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>

更新:当涉及到 this 时,WIX 文档可悲地令人失望。元素。

基本上,您可以设置(公共(public))WIX 变量,通常定义为 [P_*](例如 msiexec 参数、静态参数或在 CA 中)。这些值在启动时以相同的方式传递给服务,就好像您在从服务控制台启动服务(或我想象的网络启动)时将这些值连接在您作为启动参数提供的字符串中一样。在我的例子中,这些是空格分隔的值,例如[P_USERMAIL] 是“--useremail some@email.com”,尽管这是任意的,因为您将在发布的服务启动代码中处理它。

您可能知道,这些值不会持久化。如果服务无法使用您提供的值进行初始化,您将需要重新安装/修复或以其他方式将它们传递给服务(即服务控制台、网络启动)。

关于c# - Wix 服务安装参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10621082/

相关文章:

c# - WorkFlow Foundation 4 WorkflowApplication Completed 未触发

c# - 数组在内存中的大小是多少?

wix - 如何在每台机器安装中创建每用户启动文件夹快捷方式?

wix - 选择选项时显示 ComboBox 值而不是文本

postgresql - 如何在没有用户输入/密码的情况下从命令行执行 PostgreSQL 脚本文件

c# - 如何在 C# 中获取窗口的图标

c# - WinForms设计器错误(无法加载资源)

c# - 带连字符的友好 URL 路由

wix - 32 位和 64 位的单个 MSI 取决于目标机器

WiX:如果特定可执行文件不在 PATH 中,则中止安装