Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows services Wix安装程序将替换INSTSRV和SRVANY进行用户定义的服务安装_Windows Services_Wix_Windows Installer_Instsrv_Srvany - Fatal编程技术网

Windows services Wix安装程序将替换INSTSRV和SRVANY进行用户定义的服务安装

Windows services Wix安装程序将替换INSTSRV和SRVANY进行用户定义的服务安装,windows-services,wix,windows-installer,instsrv,srvany,Windows Services,Wix,Windows Installer,Instsrv,Srvany,我使用Visual Studio C#Express创建了一个可执行文件MyService.exe。Express版本中没有创建服务的选项。在过去,已使用INSTSRV和SRVANY手动将其安装为用户定义的服务,如中所述 是否可以为此文件创建wix 3.5安装程序 不要求目标计算机上存在SRVANY.exe和INSTRV.exe文件 不将INSTSRV.exe用作自定义操作 WiX支持安装Windows服务,但仅支持本机服务。这意味着应用程序必须是 由于应用程序使用SRVANY.EXE作为服务运

我使用Visual Studio C#Express创建了一个可执行文件MyService.exe。Express版本中没有创建服务的选项。在过去,已使用INSTSRV和SRVANY手动将其安装为用户定义的服务,如中所述

是否可以为此文件创建wix 3.5安装程序

  • 不要求目标计算机上存在SRVANY.exe和INSTRV.exe文件
  • 不将INSTSRV.exe用作自定义操作

  • WiX支持安装Windows服务,但仅支持本机服务。这意味着应用程序必须是

    由于应用程序使用SRVANY.EXE作为服务运行,因此有两个选项

    • 将应用程序重写为本机Windows服务

    • 用于执行SRVANY.EXE和INSTSRV.EXE命令行

      • 真正的独家新闻是:服务就是服务就是服务。这是我的座右铭。我的意思是,我不在乎你是否使用C++ exe,一个VB exe,一个C exe exe,一些thungHub exe,比如SrvAn.exe…它们都实现了相同的API来与服务控制管理器交互

        因此,SrvAny将被SCM调用,并获得一个start命令。此时,它将读取注册表值,并知道如何运行其他EXE或脚本。当SrvAny接到停止呼叫时,它将终止您的进程并向SCM报告停止

        服务就是这样运行的。让我们谈谈如何安装它。有很多方法可以通过编程方式创建服务(SC、InstSrv.exe、安装程序类自定义操作等),但从MSI的角度来看,这些方法都不需要。Windows安装程序具有ServiceInstall和ServiceControl表以及处理启动、停止、创建和删除Windows服务的标准操作。有时,例如SrvAny.exe,您会得到一些无法用这些表表示的安装程序要求,在这种情况下,您将使用注册表表。对于SrvAny.exe,这是使用注册表数据创建参数键的要求,该注册表数据指示SrvAny.exe在启动时实际调用什么

        以下是WiX中使用SrvAny.exe将NodeJs脚本作为服务运行的示例:

        <Component Id="c1" Guid="redacted">
          <File Id="f1" Source="$(var.SourceDir)\srvany.exe" KeyPath="yes" />
          <ServiceInstall Id="si1" DisplayName="MyService" Description="MyService" Name="MyService" Start="auto" Type="ownProcess" Vital="no" ErrorControl="normal" Account="NT AUTHORITY\NetworkService"  />
          <ServiceControl Id="sc1" Name="MyService" Remove="both" Stop="both" Start="install" Wait="yes" />
          <RegistryValue Id="reg1" Root="HKLM" Key="SYSTEM\CurrentControlSet\Services\MyService\Parameters" Name="Application" Type="string" Value="node &quot;[#f2]&quot;" Action="write" />
        </Component>
        <Component Id="c2" Guid="redacted" KeyPath="yes">
          <File Id="f2" Source="$(var.SourceDir)\server.js" />
        </Component>
        
        
        
        这并不完全正确。您可以使用SRVANY.EXE将EXE包装为服务,使用Wix/MSI ServiceInstall功能替换INSTSRV.EXE.C#express可能没有服务的项目类型,但我无法想象您为什么不能创建EXE项目并自己实现ServiceBase类。那你就不需要斯瓦尼了。谢谢你的回答。这正是我一直在寻找的+1遗憾的是,几年前我没有看到它。