Jak utworzyć niestandardowe okno dialogowe w WiX do wprowadzania danych przez użytkownika?

Używam WiX do tworzenia instalatora dla usługi windows. Pożądane jest, aby nazwa usługi, która zostanie zainstalowana i wyświetlona w usługach, była konfigurowalna podczas instalacji.

Na przykład tak myślę (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 jest czymś, co chciałbym podłączyć do niestandardowego okna dialogowego, które zostanie utworzone i wyświetlone osobie instalującej usługę, aby mogła ustawić/zmodyfikować nazwę usługi. Myślę, że jest to bardzo podobne do właściwości WIXUI_INSTALLDIR, która zostanie ustawiona i przekazana do zestawu dialogowego WixUI_InstallDir.

Moje pytanie brzmi:

Jak utworzyć niestandardowe okno dialogowe interfejsu użytkownika, które może przyjmować dane wejściowe użytkownika, które są przekazywane do środowiska uruchomieniowego instalatora?

Author: Scott Saad, 2009-04-25

5 answers

Baw się dobrze z UI!

Edit: oryginalny link do odpowiedzi już nie istnieje. FireGiant (opiekunowie Wix) kilka przykładów dla części tego procesu, ale to nie do końca odpowiada na to pytanie. Tam jest jeszcze jeden poradnik (Aktualizacja Aug.2018 : Link wskrzeszony z Wayback Machine), który w większości odpowiada na to pytanie.

Przegląd wysokiego poziomu tego, co będzie się działo, to:

  1. Create a własność
  2. niech kontrolka UI ustaw tę właściwość
  3. atrybut name w usłudze będzie odwoływał się do właściwości, czyli [ServiceNameProperty].

Jest to jednak skomplikowane i sposób, w jaki sugeruje się utworzenie nowego okna dialogowego interfejsu użytkownika, polega na pobraniu istniejącego okna dialogowego, sklonowaniu go, a następnie edycji z nowym tekstem, kontrolkami i użyciu go do wypełnienia właściwości.

 28
Author: Darren Kopp,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-09 08:55:54

Spróbuj użyć WixEdit to jest ładne narzędzie do tworzenia UI

 5
Author: Andrew Usikov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-07-15 11:57:29

Problem z używaniem właściwości do ustawiania nazwy usługi polega na tym, że gdy próbujesz odinstalować usługę, usługa nie może znaleźć nazwy usługi.

 3
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-10-16 12:58:57

Jak o użyciu savedState dict w metodzie instalacji ProjectInstaller.

 0
Author: Madhulika,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-08-16 10:03:38

1.musisz utworzyć MyWixUI_InstallDir.wx S do obejścia WixUI_InstallDir dla tego refer this

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

2.musisz dodać własne okno dialogowe, które zawiera pola tekstowe, aby uzyskać informacje o użytkowniku mieć to w właściwość i odnieść się do tego okna w MyWixUI_InstallDir.wxs
3.na koniec musisz odnieść się do tego MyWixUI_InstallDir.wxs in produkt.wxs. as

 <UIRef Id="MyWixUI_InstallDir" />   

4.musisz utworzyć customaction , aby sprawdzić, czy użytkownik jest dostępny w działającej maszynie.
5.Następnie, jeśli użytkownik jest ważny, musimy przypisać ten certyfikat (get from Property ) do naszego serwisu.

<DirectoryRef Id="INSTALLDIR">
  <Component Id="CMP_InstallMeTXT"   Guid="*">
    <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>

Możesz pobrać przykładowy projekt tutaj https://github.com/skullpsg/Wix_installer

 0
Author: Skull,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-18 16:44:14