1

我正在创建一个具有WPF UI的自定义引导程序。

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

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

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

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

我的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>
..
..
4

1 回答 1

1

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

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

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

于 2013-04-06T17:02:57.097 回答