WIX-Installer ServiceControl "充足的特权"错误

本文关键字:quot 特权 错误 WIX-Installer ServiceControl | 更新日期: 2023-09-27 17:53:05

Visual Studio 2015 RCWix v3.10.0.1726

我正在创建一个windows服务安装程序。我用InstallUtil测试了这个服务,它运行得很好。不幸的是,我在使用wix时遇到了一些麻烦,下面是确切的错误-

"服务'服务名称'启动失败。"确认您有足够的权限启动系统服务。"

现在我已经把问题缩小到通过WIX启动服务。如果我放弃ServiceControl标签,用services手动启动它。MSC工作正常

从其他问题来看,这个错误似乎是一个常见的catch错误,发生在各种情况下。最受欢迎的是,如果您的服务依赖于安装到GAC(全局程序集缓存)的程序集,我也不清楚。我从来没有隐式地将任何内容保存到GAC中,我的服务只是调用我编写的包含在项目中的.cs文件。

任何帮助都将非常感激!

<Component Id="ProductComponent7">
    <File Source="$(var.ServiceName.TargetPath)" KeyPath="yes" Vital="yes"/>
    <ServiceInstall Id="ServiceName.exe"
                      Account="LocalSystem"
                      Arguments="-start"
                      Type="ownProcess" 
                      Name="ServiceName.exe" 
                      DisplayName="ServiceName Service" 
                      Description="sdfg" 
                      Start="auto" 
                      Interactive="yes"
                      ErrorControl="critical" />
  <ServiceControl Id="ServiceControl" Name="ServiceName" Start="install"  />
        </Component>

我也在ServiceControl中尝试了各种不同的属性,最近我把它们都删除了,试图使它尽可能的简单。

如果有人有什么见解,那就太好了!

WIX-Installer ServiceControl "充足的特权"错误

这个问题似乎是你已经安装了一个名为ServiceName.exe的服务,你正试图启动一个名为ServiceName的服务。Name值需要匹配。

正确,这是一个通用错误。你必须配置你的服务来理解为什么它不能启动。

GAC只是一种情况。在这种情况下,这是因为MSI直到StartServices之后才将程序集发布到GAC。一个经典的竞态条件,会导致缺少依赖项和错误。

消息框仍然打开,从控制台中运行EXE。你得到一个错误吗?您的应用程序日志中有任何错误吗?找出服务无法修复的原因,解决后再试一次。

对我来说,错误是由于ServiceInstall标签中的Name属性具有与ServiceBase child class InitializeComponent()方法中指定的名称值不同的名称值。

代码更新:在Product.wxs

:

<ServiceInstall Id="ServiceInstaller"
          Type="ownProcess"
          Name="MyWindowsService"
          DisplayName="$(var.ServiceDisplayName)"
          Description="$(var.ServiceDiscription)"
          Start="auto"
          Account="LocalSystem"
          ErrorControl="normal" />

private void InitializeComponent()
{
    components = new System.ComponentModel.Container();
    this.ServiceName = "MyWindowsService";
}