Подтвердить что ты не робот

Как создать пользовательский диалог в WiX для ввода пользователем?

Я использую WiX для создания установщика для службы Windows. Желательно, чтобы имя службы, которая устанавливается и отображается в Сервисах, настраивается во время установки.

Например, это то, о чем я думаю (wix xml snip):

<ServiceInstall 
    Id="MyServiceInstaller" 
    Name="NAME_PASSED_FROM_DIALOG" 
    Type="ownProcess" 
    Start="auto" 
    ErrorControl="normal" 
    Description="My Service" 
    Account="localsystem"/> 

<ServiceControl
    Id="StartMyServiceInstaller" 
    Name="NAME_PASSED_FROM_DIALOG" 
    Start="install"
    Wait="no" />

<ServiceControl
    Id="StopMyServiceInstaller" 
    Name="NAME_PASSED_FROM_DIALOG" 
    Remove="uninstall"
    Stop="both"
    Wait="yes" />

NAME_PASSED_FROM_DIALOG - это то, что я хотел бы подключить к настраиваемому диалоговому окну, который создается и отображается для лица, устанавливающего службу, чтобы они могли установить/изменить имя службы. Я думаю, что это очень похоже на свойство WIXUI_INSTALLDIR, которое устанавливается и передается в набор диалоговых окон WixUI_InstallDir.

Мой вопрос:

Как создать пользовательский интерфейс пользовательского интерфейса, который может принимать пользовательский ввод, который передается во время выполнения установщика?

4b9b3361

Ответ 1

Получайте удовольствие от пользовательского интерфейса!

Изменить: оригинальная ссылка для ответа больше не существует. Firegiant (поддерживающие Wix) некоторые примеры для части этого процесса, но он не полностью отвечает на этот вопрос. Там - это еще один учебник, который больше всего подходит для ответа на этот вопрос.

Краткий обзор того, что будет происходить:

  • Создать свойство
  • Если элемент управления пользовательского интерфейса задал это свойство
  • Атрибут name в службе ссылается на свойство, то есть [ServiceNameProperty].

Однако это сложно, и способ, которым предлагается создать новый диалог пользовательского интерфейса, заключается в том, чтобы взять существующий диалог, сделать его клон, а затем редактировать с помощью нового текста, элементов управления и использовать его для заполнения свойства.

Ответ 2

Проблема с использованием свойств для установки Service Name заключается в том, что при попытке удалить службу служба не может найти имя службы.

Ответ 3

Попробуйте использовать WixEdit это хороший инструмент для создания пользовательского интерфейса

Ответ 4

Как насчет использования saveState dict в методе установки ProjectInstaller.

Ответ 5

1. Вам нужно создать MyWixUI_InstallDir.wx, чтобы переопределить WixUI_InstallDir для этого см. это

http://skullpsgblog.blogspot.in/2015/11/adding-custom-dialog-ui-to-your-msi.html

2. Вам нужно добавить свое собственное диалоговое окно, которое содержит входные текстовые поля, чтобы получить информацию о пользователе, в Свойстве и обратитесь к этому диалоговому окну в MyWixUI_InstallDir.wxs
3. Наконец, вам необходимо указать MyWixUI_InstallDir.wxs в product.wxs. а

 <UIRef Id="MyWixUI_InstallDir" />   

4. вам нужно создать customaction, чтобы проверить, что пользователь доступен на рабочем компьютере.
5. Затем, если пользователь действителен, нам нужно назначить эти учетные данные (получить от Свойство) к нашей службе.

<DirectoryRef Id="INSTALLDIR">
  <Component Id="CMP_InstallMeTXT"   Guid="7AB5216B-2DB5-4A8A-9293-F6711FFAAA83">
    <ServiceInstall Id="ServiceInstaller" Type="ownProcess" Vital="yes" Name="WinServiceProject"  DisplayName="WinServiceProject" Description="WinServiceProject"  Start="auto" ErrorControl="ignore" Interactive="no" Account=".\[ACCOUNT]" Password="[MY_PASSWORD]" />
    <ServiceControl Id="StartService" Start="install" Stop="both" Remove="uninstall" Name="WinServiceProject"Wait="yes" />
    <util:User Id="UpdateUserLogonAsService" UpdateIfExists="yes" CreateUser="no" Name="[ACCOUNT]"  Password="[MY_PASSWORD]" LogonAsService="yes" />
  </Component>
</DirectoryRef>

Вы можете получить образец проекта здесь https://github.com/skullpsg/Wix_installer