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中尝试了各种不同的属性,最近我把它们都删除了,试图使它尽可能的简单。
如果有人有什么见解,那就太好了!
这个问题似乎是你已经安装了一个名为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";
}