2009-04-24 2 views
23

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

Например, это то, что я имею в виду (Wix XML надрез):

<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.

Мой вопрос:

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

ответ

27

Удачи с пользовательским интерфейсом!

Редактировать: Оригинальная ссылка для ответа больше не существует. FireGiant (разработчики Wix) some examples для части этого процесса, но он не полностью отвечает на этот вопрос. Там is one further tutorial, который действительно подходит для ответа на этот вопрос.

высокоуровневый обзор того, что будет происходить в:

  1. Создать свойство
  2. иметь контроль пользовательского интерфейса установить свойство
  3. Атрибут имя на сервисе будет ссылаться на собственность, то есть [ ServiceNameProperty].

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

+9

Да и я настоятельно рекомендую скопировать существующий диалог, который несколько напоминает то, что вы хотите, и настроить там. Намного легче, чем строить с нуля, ИМХО. –

+2

Ссылка для ответа мертва, после небольшого щелчка по сайту я нашел здесь учебник: http://wix.tramontana.co.hu/tutorial/user-interface-revisited – Andy

+2

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

3

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

+3

Помните, что установщик Windows не сохраняет свойства. Это означает, что вам нужно создать свой собственный механизм для запоминания свойств для удаления. Мне нравится использовать раздел реестра и RegistrySearch для этого. –

+0

Реестр - единственный вариант для «запоминания» свойств, или кто-нибудь нашел лучший механизм хранения? – BozoJoe

4

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

+0

Обязательно проверьте это. :) –

0

Как об использовании Dict savedState в ProjectInstaller метод установки.

0

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

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

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

<UIRef Id="MyWixUI_InstallDir" /> 

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

<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

Смежные вопросы