Thanks for your kindness, rob Your mean this:
/* mycode */ /// <summary> /// Method that gets invoked when the Bootstrapper PlanComplete event is fired. /// If the planning was successful, it instructs the Bootstrapper Engine to /// install the packages. /// </summary> private void OnPlanComplete(object sender, PlanCompleteEventArgs e) { if (e.Status >= 0) Bootstrapper.Engine.Apply(System.IntPtr.Zero); } Sorry my poor english. Repeat my problem again, 1. I click CustomBootstrapperSetup.exe 2. The custom WPF UI show because .net has been installed. The custom WPF UI has two buttons, the name of one is install , the other is cancel 3. I click Install button, the internal UI of StandardSetup.msi will show Log: [0664:0F90][2013-04-07T00:09:03]i301: Applying execute package: CRMInstall, action: Install, path: C:\ProgramData\Package Cache\{E7F8B898-E7D5-43FE-ABAF-9BE02516879A}v1.0.0.0\Packages\StandardSetup. msi, arguments: ' ARPSYSTEMCOMPONENT="1" MSIFASTINSTALL="7"' 4. So far I have two UI on the screen My Problem is the internal ui below the wpf ui. The internal ui will be hided by the wpf ui. How to set the internal ui to display at the top of window My complete code as follows: CustomBootstrapperApplication.cs public class CustomBootstrapperApplication : BootstrapperApplication { // global dispatcher static public Dispatcher BootstrapperDispatcher { get; private set; } protected override void Run() { this.Engine.Log(LogLevel.Verbose, "Launching custom UX"); BootstrapperDispatcher = Dispatcher.CurrentDispatcher; MainViewModel viewModel = new MainViewModel(this); viewModel.Bootstrapper.Engine.Detect(); MainView view = new MainView(); view.DataContext = viewModel; view.Closed += (sender, e) => BootstrapperDispatcher.InvokeShutdown(); view.Show(); Dispatcher.Run(); this.Engine.Quit(0); } } MainViewModel.cs public MainViewModel() { InitialComponentStatus(); } public BootstrapperApplication Bootstrapper { get; private set; } public MainViewModel(BootstrapperApplication bootstrapper) : this() { this.Bootstrapper = bootstrapper; this.Bootstrapper.DetectPackageComplete += this.OnDetectPackageComplete; this.Bootstrapper.PlanComplete += this.OnPlanComplete; this.Bootstrapper.ApplyComplete += this.OnApplyComplete; } private void OnDetectPackageComplete(object sender, DetectPackageCompleteEventArgs e) { if (e.PackageId == "NetFx40Full") { Net40Present = e.State == PackageState.Present; //else if (e.State == PackageState.Present) // UninstallEnabled = true; } } /// <summary> /// Method that gets invoked when the Bootstrapper PlanComplete event is fired. /// If the planning was successful, it instructs the Bootstrapper Engine to /// install the packages. /// </summary> private void OnPlanComplete(object sender, PlanCompleteEventArgs e) { if (e.Status >= 0) Bootstrapper.Engine.Apply(System.IntPtr.Zero); } /// <summary> /// Method that gets invoked when the Bootstrapper ApplyComplete event is fired. /// This is called after a bundle installation has completed. Make sure we updated the view. /// </summary> private void OnApplyComplete(object sender, ApplyCompleteEventArgs e) { InstallEnabled = false; //UninstallEnabled = false; } private void InitialComponentStatus() { IIS6Present = InternetInformationServicesDetection.IsInstalled(ConstantEnum.InternetInform ationServicesVersion.IIS6); IIS7Present = InternetInformationServicesDetection.IsInstalled(ConstantEnum.InternetInform ationServicesVersion.IIS7); Sql2008Present = SqlServerDetection.IsInstalled(ConstantEnum.SqlServerVersion.Sql2008); Sql2012Present = SqlServerDetection.IsInstalled(ConstantEnum.SqlServerVersion.Sql2012); } private void InstallExecute() { Bootstrapper.Engine.Log(LogLevel.Verbose, "Lauch InstallExecute()"); Bootstrapper.Engine.Plan(LaunchAction.Install); } -----邮件原件----- 发件人: Rob Mensching [mailto:r...@robmensching.com] 发送时间: 2013年4月6日 23:08 收件人: General discussion for Windows Installer XML toolset. 主题: Re: [WiX-users] Burn DisplayInternalUI z-order has problem Make sure you pass a handle to your Bootstrapper Application window to Apply(). On Sat, Apr 6, 2013 at 7:27 AM, feng huang <fy24h.hu...@gmail.com> wrote: > Dear all, > > > I have write a custom bootstrapper use wpf, it will show some > prerequisites. everything is ok. but when click install , the > msipackage internal ui showed behind of wpf ui. > > how to set the internal ui to topmost , thank you! > > *my bundles.wxs as follows:* > <BootstrapperApplicationRef Id="ManagedBootstrapperApplicationHost"> > <PayloadGroupRef Id="InstallerPayload"/> > </BootstrapperApplicationRef> > > <Chain> > <PackageGroupRef Id="NetFx40Full"/> > <PackageGroupRef Id="InstallerPackages"></PackageGroupRef> > </Chain> > </Bundle> > > <Fragment> > <PayloadGroup Id="InstallerPayload"> > <Payload > SourceFile="..\CustomBootstrapper\bin\release\MahApps.Metro.dll"/> > <Payload > > SourceFile="..\CustomBootstrapper\bin\release\System.Windows.Interactivity.d ll"/> > <Payload SourceFile > ="..\CustomBootstrapper\bin\release\CustomBootstrapper.dll"/> > <Payload > SourceFile="..\CustomBootstrapper\BootstrapperCore.config" /> > <Payload SourceFile="C:\Program Files (x86)\WiX Toolset > v3.7\SDK\Microsoft.Deployment.WindowsInstaller.dll"/> > </PayloadGroup> > </Fragment> > > <Fragment> > <PackageGroup Id="InstallerPackages"> > <!--<MsiPackage Id="CRMInstall" Vital="yes" > Name="Packages\SetupProject1.msi" SourceFile="Packages\SetupProject1.msi" > DisplayInternalUI="yes">--> > <MsiPackage Id="CRMInstall" Vital="yes" > Name="Packages\StandardSetup.msi" > SourceFile="..\StandardSetup\bin\Release\StandardSetup.msi" > DisplayInternalUI="yes"> > > </MsiPackage> > </PackageGroup> > </Fragment> > > Sincerely > Phoenix > > ---------------------------------------------------------------------- > -------- Minimize network downtime and maximize team effectiveness. > Reduce network management and security costs.Learn how to hire the > most talented Cisco Certified professionals. Visit the Employer > Resources Portal > http://www.cisco.com/web/learning/employer_resources/index.html > _______________________________________________ > WiX-users mailing list > WiX-users@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/wix-users > > ---------------------------------------------------------------------------- -- Minimize network downtime and maximize team effectiveness. Reduce network management and security costs.Learn how to hire the most talented Cisco Certified professionals. Visit the Employer Resources Portal http://www.cisco.com/web/learning/employer_resources/index.html _______________________________________________ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users ------------------------------------------------------------------------------ Minimize network downtime and maximize team effectiveness. Reduce network management and security costs.Learn how to hire the most talented Cisco Certified professionals. Visit the Employer Resources Portal http://www.cisco.com/web/learning/employer_resources/index.html _______________________________________________ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users