Как переключаться между двумя именами пользователей в установщике сервиса Wix?
Я использую Wix для установки службы Windows, но мне нужна опция для использования учетной записи LocalSystem или учетной записи, предоставленной пользователем. Как я должен переключаться между жестко закодированным значением и пользовательским значением? Для службы у меня есть:
<ServiceInstall Id="ServiceInstaller" Type="ownProcess" Vital="yes" Start="auto"
Account="[SERVICELOGONUSER]" Password="[SERVICELOGONPASSWORD]" ErrorControl="normal"
Interactive="no"/>
В интерфейсе у меня есть свойство:
<Property Id="SERVICELOGONUSER" Value="LocalSystem"/>
В диалоге у меня есть:
<Control Type="CheckBox" Width="200" Height="25" X="25" Y="75" Id="LocalCheckBox"
Property="UseLocalSystem" CheckBoxValue="1" Text="Use LocalSystem Account"/>
<Control Type="Edit" Width="200" Height="15" X="25" Y="115" Id="AccountTextbox"
Property="SERVICELOGONUSER">
<Condition Action="disable">UseLocalSystem = 1</Condition>
<Condition Action="enable"><![CDATA[UseLocalSystem <>1]]></Condition
</Control>
Но это будет просто отображать жестко закодированное значение, которое пользователь может редактировать.
1 ответ
Я бы посоветовал сделать два компонента с взаимоисключающими условиями, используя ваш UseLocalSystem
свойство, как это:
<Component Id="LocalSystem_Service" Guid="{A-GUID}">
<Condition> UseLocalSystem = 1 </Condition>
<File Id="SvcFile_Local" Name="Service.exe" Source="Service.exe"/>
<ServiceInstall Id="ServiceInstaller" Type="ownProcess" Vital="yes" Start="auto"
Account="LocalSystem" ErrorControl="normal" Interactive="no"/>
</Component>
<Component Id="User_Service" Guid="{ANOTHER-GUID}">
<Condition> <![CDATA[UseLocalSystem <>1]]> </Condition>
<File Id="SvcFile_User" Name="Service.exe" Source="Service.exe" />
<ServiceInstall Id="ServiceInstaller" Type="ownProcess" Vital="yes" Start="auto"
Account="[SERVICELOGONUSER]" Password="[SERVICELOGONPASSWORD]" ErrorControl="normal"
Interactive="no"/>
</Component>
WiX имеет ограничение: если вам нужен один и тот же файл в двух местах, вам нужно иметь File
элемент для него в каждом месте, поэтому у меня есть два File
элементы с разными Id
"S. Не беспокойтесь, благодаря умному каблированию, набор инструментов WiX будет сжимать дублированный контент по компонентам только один раз.
Таким образом, не будет иметь значения, если пользователь начнет изменять SERVICELOGONUSER
а также SERVICELOGONPASSWORD
и решили использовать LocalSystem
вместо.
Надеюсь это поможет!