2016-02-26 68 views
0

我使用Wix 3.8創建多個msi設置和Wix Burn將它們捆綁在一起。結合WixStandardBootstrapperApplication.HyperlinkLicense風格和自定義的ThemeFile,它工作得很好。Wix Burn - 將選項從選項移動到安裝頁面

唯一的問題是,folderselection隱藏在選項對話框中。我想將其移至第一頁(安裝頁面)。簡單地複製FolderEditbox將不起作用,因爲(我假設)只有在打開/關閉選項對話框時纔會加載/保存這些值。有沒有辦法來移動folderselection或我必須創建一個自定義引導程序?

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> 

回答

2

編輯:正如你所說,它看來FolderEditbox是維克斯V3特殊的OptionsOK處理程序設置,而不是SavePageSettings。爲了在WiX v3.x中正常工作,有人需要向http://wixtoolset.org/issues提交功能請求,然後由WiX團隊批准。

你可以從code看到,WixStdBA保存設置當按下選項,OptionsOK,或安裝按鈕(SavePageSettings)。在v3.10中,當按下修復或卸載按鈕時,增強功能也可以運行。在4.0版中,它可以節省每一次頁面轉換。

+0

感謝您鏈接到源代碼,現在我可以更好地理解發生了什麼。當我將FolderEditbox移動到安裝頁面時,該值不會被加載/保存。 SavePageSettings似乎對foldereditbox有特殊的處理。見:WIXSTDBA_CONTROL_FOLDER_EDITBOX!= pControl-> wId – Dust258

+0

@ Dust258你是對的,我編輯了我的答案。 –