Как передать значения из пользовательского диалога в компонент
Я создал пользовательский диалог, который позволяет пользователю настроить учетную запись, под которой будет запускаться устанавливаемая нами служба. Я делаю это, прикрепляя событие свойства к кнопке "Далее" в моем настраиваемом диалоговом окне, которое устанавливает свойство [Account]:
<Publish Property="Account" Value="[USERNAME]">USERACCOUNT = "1"</Publish>
<Publish Property="Account" Value="Local System"><![CDATA[USERACCOUNT <> "1"]]></Publish>
Затем я пытаюсь подобрать свойство учетной записи в компоненте, который устанавливает службу:
<Component Id="Service" Guid="*" >
<File Id="ServiceExe" KeyPath="yes" Source="$(var.ServiceFiles)\Service.exe" />
<ServiceInstall Vital="yes" ErrorControl="ignore" Type="ownProcess" Account="[Account]" Name="$(var.ServiceName)" Description="Service running as [Account]" Start="auto" />
<ServiceControl Id="ServiceControl" Remove="both" Name="$(var.ServiceName)" Start="install" Stop="both"/>
</Component>
Моя проблема заключается в том, что этот компонент не использует значение, опубликованное для [Account], даже если я вижу, что правильные значения публикуются событием свойства в журнале установщика. Поэтому мой вопрос заключается в том, как я могу убедиться, что компонент установщика службы принимает значение [Учетная запись], опубликованное в моем настраиваемом диалоговом окне?
1 ответ
Используйте публичную собственность, например, ACCOUNT. Частные свойства теряют свои измененные значения в InstallExecuteSequence.
Кроме того, при установке службы для определенной учетной записи убедитесь, что для этой учетной записи установлена политика Вход в систему как служба. В противном случае служба не запустится после установки.