【问题标题】:Wix 3.11 - Installer Can't Start ServiceWix 3.11 - 安装程序无法启动服务
【发布时间】:2020-04-27 18:56:34
【问题描述】:

谁能帮我找出我的 Windows 服务无法启动的原因。

当我使用installutil 安装它时,它运行良好。我决定使用wix 为最终用户创建安装程序,但它不会启动。

这是我的代码

<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
    <Product Id="*" Name="IWErpnextPoll" Manufacturer="IWW" Language="1033" Version="1.0.0.0" UpgradeCode="ccc3c2fe-d20f-45ce-b978-4dc7c84ce6c8">
        <Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" />

        <MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." />
        <MediaTemplate />

        <Feature Id="ProductFeature" Title="IWERPNextPoll_Setup" Level="1">
            <ComponentGroupRef Id="ProductComponents" />
        </Feature>
    </Product>

    <Fragment>
        <Directory Id="TARGETDIR" Name="SourceDir">
            <Directory Id="ProgramFilesFolder">
                <Directory Id="INSTALLFOLDER" Name="IWErpnextPoll" />
            </Directory>
        </Directory>
    </Fragment>

    <Fragment>
        <ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER">
            <!-- TODO: Remove the comments around this Component element and the ComponentRef below in order to add resources to this installer. -->
            <Component Id="ProductComponent">
                <File Source="$(var.IWErpnextPoll.TargetPath)" />
                <ServiceInstall Id="ServiceInstaller" Name="IWErpnextPoll" Type="ownProcess" Vital="yes" DisplayName="ERPNext2Sage" Description="A background service." Start="auto" Account=".\LocalSystem" ErrorControl="normal" Interactive="no" />
                <ServiceControl Id="StartService" Name="IWErpnextPoll" Stop="both" Start="install" Remove="uninstall" Wait="yes" />
            </Component>
        </ComponentGroup>
    </Fragment>
</Wix>

安装程序抛出此错误:

Service 'IWErpnextPoll' (IWErpnextPoll) failed to start. Verify that you have sufficient privileges to start system services

我在命令行中运行了以下内容:

msiexec /i IWERPNextPoll_Setup /l*v log.txt

但是(我未经训练的眼睛)在非常非常的日志文件中没有发现任何看起来不对劲的东西。

我编写的服务是我第一次尝试 C#。我很乐意得到任何指点。

【问题讨论】:

标签: c# wix


【解决方案1】:

99.99% 的情况下,这是服务的问题。

几个专业提示。

1) 不要为最初的几个构建创建 ServiceControl 元素,直到您知道它是可靠的。安装后测试服务。

2) 如果您确实对其进行了创作,请将其置于启动失败对话框并开始分析。从命令提示符运行 EXE 并查看它是否缺少依赖项或引发错误。在服务中有大量的日志记录代码来了解问题所在。

ServiceInstaller 是一种自注册反模式。也许你有一些代码在那里做一些事情,比如创建一个 EventSource 或一个注册表项,如果没有它,你的服务就会抛出异常。

只有分析/调试才能确定。

【讨论】:

  • 感谢您的回答。查看一些 cmets 让我考虑了项目的 Nuget 依赖项。我安装了 RestSharp 和 Serilog。由于依赖关系,我需要添加其他任何内容吗?
  • 当然。 RestSharp.dll 和 Serilog.dll。
【解决方案2】:

@Christopher Painter 和 cmets 对我的问题的回答将我引向了这个问题。

问题是我没有在product.wsx 中包含我的项目依赖项。我不得不像这样添加......

...
<Component Id="Serilog.dll">
    <File Source="$(var.IWErpnextPoll.TargetDir)Serilog.dll" />
</Component>
<Component Id="Serilog.Settings.AppSettings.dll">
    <File Source="$(var.IWErpnextPoll.TargetDir)Serilog.Settings.AppSettings.dll" />
</Component>
<Component Id="Serilog.Sinks.File.dll">
    <File Source="$(var.IWErpnextPoll.TargetDir)Serilog.Sinks.File.dll" />
</Component>
<Component Id="RestSharp.dll">
    <File Source="$(var.IWErpnextPoll.TargetDir)RestSharp.dll" />
</Component>
...

在此之后,事情开始按预期进行

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多