WIX: установка сервисов с использованием runner и multible dll - PullRequest
0 голосов
/ 17 марта 2020

Я работаю над установщиком Wix, который должен установить несколько служб на основе одного и того же бегуна. Это некоторые библиотеки, которые будут загружены бегуном. С s c .exe это нормально работает в моей тестовой системе. Теперь мой вопрос, могу ли я использовать стандартный Wix ServiceInstall для этого? У меня есть только один runner.exe, и я не уверен, как написать это в XML. Или пользовательское действие будет правильным способом?

Спасибо !!

1 Ответ

0 голосов
/ 19 марта 2020

Элементы ServiceInstall и ServiceControl не приходят после элемента файла, скажем, но они являются дочерними для элемента Component. Они предназначаются для ключевого пути компонента, который является элементом 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 (это. ServiceName в методе OnStart скорее всего). Отсюда вы можете динамически загружать разные классы из разных сборок.

...