2016-02-26 2 views
0

J'utilise Wix 3.8 pour créer plusieurs configurations msi et Wix Burn pour les regrouper. Combiné avec le style WixStandardBootstrapperApplication.HyperlinkLicense et un ThemeFile personnalisé, il fonctionne plutôt bien.Wix Burn - Déplacer la sélection des dossiers des options pour installer la page

Le seul problème est que la sélection de dossiers est masquée dans la boîte de dialogue d'options. Je voudrais le déplacer vers la première page (page d'installation). La simple copie de la FolderEditbox ne fonctionnera pas car (je suppose) les valeurs ne sont chargées/sauvegardées que lors de l'ouverture/fermeture de la boîte de dialogue des options. Est-il possible de déplacer la sélection de dossier ou dois-je créer un Bootstrapper personnalisé?

Bundle.wxs:

<?xml version="1.0" encoding="UTF-8"?> 
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" 
    xmlns:bal="http://schemas.microsoft.com/wix/BalExtension" 
    xmlns:util="http://schemas.microsoft.com/wix/UtilExtension"> 
    <Bundle Name="MyProject" Version="1.0.0.0" Manufacturer="CompanyName" UpgradeCode="xxx" IconSourceFile="icon.ico"> 
    <BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.HyperlinkLicense" xml:lang="de-de"> 
     <bal:WixStandardBootstrapperApplication 
     LicenseUrl="" 
     xmlns:bal="http://schemas.microsoft.com/wix/BalExtension" 
     SuppressOptionsUI="no" 
     LocalizationFile="German.wxl" 
     ThemeFile="Theme.xml" 
     ShowVersion="yes" 
     /> 
    </BootstrapperApplicationRef> 
    <WixVariable Id="WixStdbaLogo" Value="logo.jpg" /> 

    <Variable Name="InstallFolder" Type="string" Value="[WindowsVolume]test\mytestapp"/> 
    <util:RegistrySearch 
     Id="PreviousInstallFolderSearch" 
     Root='HKLM' 
     Key='Software\LANDWEHR\mytestapp' 
     Value='InstallDir' 
     Variable='PreviousInstallFolder'/> 
    <util:DirectorySearch 
    Path='[PreviousInstallFolder]' 
    Variable='InstallFolder' 
    After='PreviousInstallFolderSearch' 
    Condition='PreviousInstallFolder' /> 

     <Chain> 
     <PackageGroupRef Id="NetFx45Web"/> 

     <MsiPackage SourceFile="..\..\buildSetup\mytestapp\de-de\mytestapp.msi"> 
     <MsiProperty Name="INSTALLFOLDER" Value="[InstallFolder]" /> 
     </MsiPackage> 

    </Chain> 
    </Bundle> 
</Wix> 

theme.xml:

<?xml version="1.0" encoding="utf-8"?> 
<Theme xmlns="http://wixtoolset.org/schemas/thmutil/2010"> 
    <Window Width="500" Height="330" HexStyle="100a0000" FontId="0">#(loc.Caption)</Window> 
    <Font Id="0" Height="-12" Weight="500" Foreground="000000" Background="FFFFFF">Segoe UI</Font> 
    <Font Id="1" Height="-24" Weight="500" Foreground="000000">Segoe UI</Font> 
    <Font Id="2" Height="-22" Weight="500" Foreground="666666">Segoe UI</Font> 
    <Font Id="3" Height="-12" Weight="500" Foreground="000000" Background="FFFFFF">Segoe UI</Font> 
    <Font Id="4" Height="-12" Weight="500" Foreground="ff0000" Background="FFFFFF" Underline="yes">Segoe UI</Font> 

    <Image X="11" Y="11" Width="64" Height="64" ImageFile="logo.png" Visible="yes"/> 
    <Text X="80" Y="11" Width="-11" Height="64" FontId="1" Visible="yes" DisablePrefix="yes">#(loc.Title)</Text> 

    <Page Name="Help"> 
     <Text X="11" Y="80" Width="-11" Height="30" FontId="2" DisablePrefix="yes">#(loc.HelpHeader)</Text> 
     <Text X="11" Y="112" Width="-11" Height="-35" FontId="3" DisablePrefix="yes">#(loc.HelpText)</Text> 
     <Button Name="HelpCancelButton" X="-11" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0">#(loc.HelpCloseButton)</Button> 
    </Page> 
    <Page Name="Install"> 
     <Text X="11" Y="80" Width="-11" Height="30" FontId="2" DisablePrefix="yes">#(loc.InstallHeader)</Text> 
     <Text X="11" Y="121" Width="-11" Height="-129" FontId="3" DisablePrefix="yes">#(loc.InstallMessage)</Text> 
     <Checkbox Name="ServerInstall" X="17" Y="180" Width="260" Height="17" TabStop="yes" FontId="3" HideWhenDisabled="yes">#(loc.ServerInstall)</Checkbox> 
     <Checkbox Name="ClientInstall" X="17" Y="200" Width="260" Height="17" TabStop="yes" FontId="3" HideWhenDisabled="yes">#(loc.ClientInstall)</Checkbox> 
     <Text Name="InstallVersion" X="11" Y="-11" Width="246" Height="17" FontId="3" DisablePrefix="yes" HideWhenDisabled="yes">#(loc.InstallVersion)</Text> 
     <Button Name="OptionsButton" X="-186" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0" HideWhenDisabled="yes">#(loc.InstallOptionsButton)</Button> 
     <Button Name="InstallButton" X="-91" Y="-11" Width="90" Height="23" TabStop="yes" FontId="0">#(loc.InstallInstallButton)</Button> 
     <Button Name="WelcomeCancelButton" X="-11" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0">#(loc.InstallCloseButton)</Button> 
    </Page> 
    <Page Name="Options"> 
     <Text X="11" Y="80" Width="-11" Height="30" FontId="2" DisablePrefix="yes">#(loc.OptionsHeader)</Text> 
     <Text X="11" Y="121" Width="-11" Height="17" FontId="3" DisablePrefix="yes">#(loc.OptionsLocationLabel)</Text> 
     <Editbox Name="FolderEditbox" X="11" Y="143" Width="-91" Height="21" TabStop="yes" FontId="3" FileSystemAutoComplete="yes" /> 
     <Button Name="BrowseButton" X="-11" Y="142" Width="75" Height="23" TabStop="yes" FontId="3">#(loc.OptionsBrowseButton)</Button> 
     <Button Name="OptionsOkButton" X="-91" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0">#(loc.OptionsOkButton)</Button> 
     <Button Name="OptionsCancelButton" X="-11" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0">#(loc.OptionsCancelButton)</Button> 
    </Page> 
    <Page Name="FilesInUse"> 
     <Text X="11" Y="80" Width="-11" Height="30" FontId="2" DisablePrefix="yes">#(loc.FilesInUseHeader)</Text> 
     <Text X="11" Y="121" Width="-11" Height="34" FontId="3" DisablePrefix="yes">#(loc.FilesInUseLabel)</Text> 
     <Text Name="FilesInUseText" X="11" Y="150" Width="-11" Height="-86" FontId="3" DisablePrefix="yes" HexStyle="0x0000000C"></Text> 

     <Button Name="FilesInUseCloseRadioButton" X="11" Y="-60" Width="-11" Height="23" TabStop="yes" FontId="0" HideWhenDisabled="yes" HexStyle="0x000009">#(loc.FilesInUseCloseRadioButton)</Button> 
     <Button Name="FilesInUseDontCloseRadioButton" X="11" Y="-40" Width="-11" Height="23" TabStop="yes" FontId="0" HideWhenDisabled="yes" HexStyle="0x000009">#(loc.FilesInUseDontCloseRadioButton)</Button> 

     <Button Name="FilesInUseOkButton" X="-91" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0" HideWhenDisabled="yes">#(loc.FilesInUseOkButton)</Button> 
     <Button Name="FilesInUseCancelButton" X="-11" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0">#(loc.FilesInUseCancelButton)</Button> 
    </Page> 
    <Page Name="Progress"> 
     <Text X="11" Y="80" Width="-11" Height="30" FontId="2" DisablePrefix="yes">#(loc.ProgressHeader)</Text> 
     <Text X="11" Y="121" Width="70" Height="17" FontId="3" DisablePrefix="yes">#(loc.ProgressLabel)</Text> 
     <Text Name="OverallProgressPackageText" X="85" Y="121" Width="-11" Height="17" FontId="3" DisablePrefix="yes">#(loc.OverallProgressPackageText)</Text> 
     <Progressbar Name="OverallCalculatedProgressbar" X="11" Y="143" Width="-11" Height="15" /> 
     <Button Name="ProgressCancelButton" X="-11" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0">#(loc.ProgressCancelButton)</Button> 
    </Page> 
    <Page Name="Modify"> 
     <Text X="11" Y="80" Width="-11" Height="30" FontId="2" DisablePrefix="yes">#(loc.ModifyHeader)</Text> 
     <Button Name="RepairButton" X="-171" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0" HideWhenDisabled="yes">#(loc.ModifyRepairButton)</Button> 
     <Button Name="UninstallButton" X="-91" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0">#(loc.ModifyUninstallButton)</Button> 
     <Button Name="ModifyCancelButton" X="-11" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0">#(loc.ModifyCloseButton)</Button> 
    </Page> 
    <Page Name="Success"> 
     <Text Name="SuccessHeader" X="11" Y="80" Width="-11" Height="30" FontId="2" HideWhenDisabled="yes" DisablePrefix="yes">#(loc.SuccessHeader)</Text> 

     <Button Name="LaunchButton" X="-91" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0" HideWhenDisabled="yes">#(loc.SuccessLaunchButton)</Button> 

     <Button Name="SuccessRestartButton" X="-91" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0" HideWhenDisabled="yes">#(loc.SuccessRestartButton)</Button> 
     <Button Name="SuccessCancelButton" X="-11" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0">#(loc.SuccessCloseButton)</Button> 
    </Page> 
    <Page Name="Failure"> 
     <Text Name="FailureHeader" X="11" Y="80" Width="-11" Height="30" FontId="2" HideWhenDisabled="yes" DisablePrefix="yes">#(loc.FailureHeader)</Text> 
     <Hypertext Name="FailureLogFileLink" X="11" Y="121" Width="-11" Height="42" FontId="3" TabStop="yes" HideWhenDisabled="yes">#(loc.FailureHyperlinkLogText)</Hypertext> 
     <Hypertext Name="FailureMessageText" X="22" Y="163" Width="-11" Height="51" FontId="3" TabStop="yes" HideWhenDisabled="yes" /> 
     <Button Name="FailureRestartButton" X="-91" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0" HideWhenDisabled="yes">#(loc.FailureRestartButton)</Button> 
     <Button Name="FailureCloseButton" X="-11" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0">#(loc.FailureCloseButton)</Button> 
    </Page> 
</Theme> 

Répondre

2

Edit: Comme vous l'avez dit, il semble que le FolderEditbox est spécial dans WiX v3 et est défini dans le gestionnaire OptionsOK place de SavePageSettings. Pour que cela fonctionne dans WiX v3.x, quelqu'un doit soumettre une demande de fonctionnalité à http://wixtoolset.org/issues et ensuite être approuvé par l'équipe WiX. Comme vous pouvez le voir sur le code, WixStdBA enregistre les paramètres (SavePageSettings) lorsque vous appuyez sur le bouton Options, OptionsOK ou Installer. Dans v3.10, il a été amélioré pour s'exécuter également lorsque le bouton Réparer ou Désinstaller est enfoncé. Dans v4.0, il enregistre sur chaque transition de page.

+0

Merci pour le lien vers le code source, maintenant je comprends mieux ce qui se passe. Lorsque je déplace le FolderEditbox vers la page d'installation, la valeur n'est plus chargée/enregistrée. Le SavePageSettings semble avoir un traitement specilized pour le foldereditbox. Voir: WIXSTDBA_CONTROL_FOLDER_EDITBOX! = PControl-> wId – Dust258

+0

@ Dust258 vous avez raison, j'ai édité ma réponse. –