Service WIX:使用runner和multible DLL安装服务

Service WIX:使用runner和multible DLL安装服务,service,wix,sc.exe,Service,Wix,Sc.exe,我正在开发一个Wix安装程序,它应该基于同一个运行程序安装多个服务。这将创建一些DLL,这些DLL将由运行程序加载。使用sc.exe,这在我的测试系统上运行良好。现在我的问题是,我可以使用标准的Wix ServiceInstall进行安装吗?我只有一个runner.exe,我不知道如何在XML中编写它。或者自定义操作是正确的方法 谢谢 ServiceInstall和ServiceControl元素不在file元素之后,而是组件元素上的子元素。它们以组件的键路径为目标,该组件恰好是File元素。您

我正在开发一个Wix安装程序,它应该基于同一个运行程序安装多个服务。这将创建一些DLL,这些DLL将由运行程序加载。使用sc.exe,这在我的测试系统上运行良好。现在我的问题是,我可以使用标准的Wix ServiceInstall进行安装吗?我只有一个runner.exe,我不知道如何在XML中编写它。或者自定义操作是正确的方法


谢谢

ServiceInstall和ServiceControl元素不在file元素之后,而是组件元素上的子元素。它们以组件的键路径为目标,该组件恰好是File元素。您可以很容易地在指向同一可执行文件的单个组件中定义多个服务

<Component Id="c1" Guid="dbc1b8dd-14e1-380f-5793-4a746fa0c5c5">
      <File Id="f1" Source="$(var.SourceDir)\TestService.exe" KeyPath="yes" />
      <ServiceInstall Id="si1" Name="TestService1" DisplayName="TestService1 Service" Description="TestService1 Service" ErrorControl="normal" Start="auto" Type="ownProcess" />
      <ServiceControl Id="sc1" Name="TestService1" Start="install" Stop="both" Remove="both" Wait="yes" />
      <ServiceInstall Id="si2" Name="TestService2" DisplayName="TestService2 Service" Description="TestService Service" ErrorControl="normal" Start="auto" Type="ownProcess" />
      <ServiceControl Id="sc2" Name="TestService2" Start="install" Stop="both" Remove="both" Wait="yes" />
    </Component>


要使每个服务的行为有所不同,您必须在服务中编写代码以访问ServiceBase.ServiceName(OnStart方法中的this.ServiceName)。从这里,您可以从不同的程序集动态加载不同的类。

不需要自定义操作。WiX应该处理这个问题。如果不进一步了解您的情况,我无法给出详细的答案。我看到的问题是,我只能在文件之后使用ServiceInstall标记。因此,我只能使用一个Runner.exe安装一个服务。还是我错了?