【问题标题】:install windows service using WIX installer with custom argument使用带有自定义参数的 WIX 安装程序安装 Windows 服务
【发布时间】:2018-10-12 14:32:19
【问题描述】:

我想使用 WIX 安装第 3 方服务。它最初不是 Windows 服务,但第 3 方又提供了一个 exe,借助一些命令,我​​们可以将其安装为 Windows 服务。我使用 System.Diagnostics.Process 的自定义操作尝试了它,我提供的参数是:

startServiceProcess.StartInfo.FileName = installExePath;

startServiceProcess.StartInfo.Arguments = string.Format(CultureInfo.InvariantCulture, "{0} {1} {2} {3}", "-c " + FilesPath, @"-e " + ExePath, @"- l " + debugFilePath, "-n " + NewServiceName);

我想在 WIX 中使用 ServiceInstall 元素安装此服务(无需自定义操作)。

有什么方法可以为 ServiceInstall 提供自定义参数?这些参数也包含一些路径。

【问题讨论】:

  • 我想你想看看这个:stackoverflow.com/questions/8595338/…
  • 您是否知道他们使用什么工具(如果有)来交付您作为服务安装的 EXE 文件?看起来这不是 srvany.exe 转换的服务?最终的 service.exe 是 .NET 程序集还是 C++ 二进制文件或其他类型的二进制文件?你知道这些命令行参数写在哪里吗?如果它们进入注册表,您应该能够直接从您的 MSI 中自己编写它们吗?许多服务也从设置文件中读取设置。您的服务二进制文件是否有设置文件? (即使你被告知使用命令行参数,也可能有一个)

标签: wix windows-installer installation


【解决方案1】:

这里的“参数”一词有两种不同的用法。

您可以在命令行上为服务可执行文件提供一些参数,这些参数将使服务自行安装,之后它就是服务。如果你想使用 ServiceInstall 来安装服务,那么你不需要这个命令行。

当它作为已安装的服务启动时,您可以将其他参数传递给每次启动时都会使用的服务。您不希望每次服务启动时都使用“安装”命令行,通常这些是服务的运行时参数。

因此,理想情况下,可以使用 ServiceInstall 元素(而不是命令行)安装服务,因为 ServiceInstall 是 Windows Installer 中的标准方式。此外,第 3 方可能需要在每次启动时指定已安装的服务是否需要任何参数(参数)。这些可以在 ServiceInstall 元素中指定,并且参数是“格式化”字符串,因此您可以以通常的方式传递属性(例如文件夹位置),将它们放在方括号中,例如 [INSTALLFOLDER]

【讨论】:

    猜你喜欢
    • 2011-03-15
    • 2012-04-30
    • 1970-01-01
    • 1970-01-01
    • 2012-05-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多