WiX Burn:MsiPackage内部UI显示,但在自定义WPF UI之后

时间:2013-04-06 15:40:30

标签: user-interface wix burn

我正在创建一个自定义引导程序,其WPF UI

  • 首先:将显示WPF用户界面。
  • 第二:当我点击安装按钮,MsiPackage将执行,内部UI将显示,因为我将DisplayInternalUI设置为是

一切都很好,但是有问题。内部UI显示在自定义WPF UI后面。

如何设置内部UI显示在窗口顶部?

单击“安装”按钮时,我尝试最小化WPF UI。是的,WPF用户界面将最小化,几秒钟后内部用户界面也会显示......它也会显示最小化的窗口状态。

我的bundle.wxs

    <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.dll"/>
        <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>
..
..

1 个答案:

答案 0 :(得分:1)

当您致电Engine.Apply()时,请确保将句柄传递给正在显示的WPF Window。它应该是这样的:

var mainWindowHandle= new WindowInteropHelper(mainWindow).EnsureHandle();
Engine.Apply(mainWindowHandle);

其中mainWindow是继承自WPF Window类的类。