Wix Burn - Move folderselection from options to install page

1

I'm using Wix 3.8 to create multiple msi setups and Wix Burn to bundled them together. Combined with the WixStandardBootstrapperApplication.HyperlinkLicense Style and a custom ThemeFile it works pretty well.

The only problem is, that the folderselection is hidden in the options dialog. I would like to move it to the first page (install page). Simply copying the FolderEditbox won't work because (I assume) the values are only loaded/saved when opening/closing the options-dialog. Is there a way to move the folderselection or do I have to create a Custom Bootstrapper?

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>
wix
burn
wix3.8
asked on Stack Overflow Feb 26, 2016 by Dust258

1 Answer

3

Edit: As you said, it appears that the FolderEditbox is special in WiX v3 and is set in the OptionsOK handler instead of SavePageSettings. In order to get this working in WiX v3.x, someone would have to submit a feature request to http://wixtoolset.org/issues and then be approved by the WiX team.

As you can see from the code, WixStdBA saves the settings (SavePageSettings) when the Options, OptionsOK, or Install button is pressed. In v3.10, it was enhanced to also run when the Repair or Uninstall button is pressed. In v4.0, it saves on every page transition.

answered on Stack Overflow Feb 27, 2016 by Sean Hall • edited Mar 2, 2016 by Sean Hall

User contributions licensed under CC BY-SA 3.0