【问题标题】:Wix Burn: Basic UI handling if No Net Framework is thereWix Burn:如果没有网络框架,则基本 UI 处理
【发布时间】:2014-01-24 12:43:20
【问题描述】:

我使用 Win-Forms 在 C# 中为 Net Framework 2.0 编写了一个 Boostrapper UI。它开始正常工作,并且设计的表单按预期响应。

这是我的 Wix 捆绑代码:

<?define TargetFile=$(var.MyBA.TargetDir)$(var.MyBA.TargetFileName)?>
<?define BootstrapConfigFile=$(var.MyBA.ProjectDir)BootstrapperCore.config?>

    <Bundle Name="Bootstrapper1" Version="1.0.0.0" Manufacturer="Farrukh" UpgradeCode="54c4a4a4-dca8-4ae4-b2f4-5e3f3fd8cb92">

    <BootstrapperApplicationRef Id="ManagedBootstrapperApplicationHost">
      <Payload SourceFile="$(var.BootstrapConfigFile)"/>
      <Payload SourceFile="$(var.TargetFile)"/>
      <Payload SourceFile="$(env.WIX)\SDK\Microsoft.Deployment.WindowsInstaller.dll"/>
    </BootstrapperApplicationRef>

    <WixVariable Id="WixMbaPrereqPackageId" Value="Netfx4Full" />
    <WixVariable Id="WixMbaPrereqLicenseUrl" Value="NetfxLicense.rtf" />

    <Chain>
      <!--<PackageGroupRef Id='Netfx4Full' />-->
      <MsiPackage Id="MyInstaller"
                  Cache="no"
                  Visible="yes"
                  DisplayInternalUI="yes"
                  SourceFile="MyProduct.msi"
      />
    </Chain>
  </Bundle>

如您所见,它不包含 NetFX 包,并且需要 Net-Framework 2.0,因此我尝试重命名 Net Framework 注册表项:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup-Renamed

和 32 位

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\NET Framework Setup-Renamed

这样它就无法检测到它。这导致显示一个非常基本的 UI:即

我相信,这是由于我的 Bundle 中的以下标记而显示的,但我不确定

<WixVariable Id="WixMbaPrereqPackageId" Value="Netfx4Full" />
<WixVariable Id="WixMbaPrereqLicenseUrl" Value="NetfxLicense.rtf" />

但是,当我点击“接受并安装”时,什么也没发生,按钮就消失了。这可能是因为我没有添加 NetFx 包,也没有添加任何对 WixNetFxExtension 的引用。 (我肯定会添加这些,稍后会看到结果)。

问题:我想编辑这个基本 UI,所以如果我的用户尝试在 Windows XP(没有 Net Framework)上安装它,他/她会得到我设计的 UI,而不是这个基本的。那么如何编辑这个基本 UI?

我觉得,我在这里遗漏了一些基本的东西,但需要一些指导.. 非常感谢任何帮助/指导。

问候

【问题讨论】:

    标签: user-interface wix bootstrapper wix3.7 .net-framework-version


    【解决方案1】:

    在 Wix 用户的邮件列表中找到一个线程后,我能够解决这个问题。这里是:
    customizing burn prerequisite boostrapper image in theme

    所以这个屏幕被称为 Burn Prerequisite,它有一个特殊的 WixVariable ID。下面是来自我的 Bootstrapper 的代码,描述了在 Burn 的 pre-req 屏幕中使用我自己的自定义主题:

    <WixVariable Id="PreqbaThemeXml" Value="..\resources\MbaPrereqTheme.xml" />
    <WixVariable Id="PreqbaThemeWxl" Value="..\resources\MbaPrereqTheme.wxl" />
    

    您在 MbaPrereqTheme.xml 中引用的任何资源(如 Logo.png、Banner.bmp 和 NetfxLicense.rtf 等)都必须作为有效负载作为 Bootstrapper 的一部分:

    <BootstrapperApplicationRef Id="ManagedBootstrapperApplicationHost" >
          <Payload SourceFile="$(var.BootstrapConfigFile)"/>
          <Payload SourceFile="$(var.MyBootstrapDll)"/>
          <Payload SourceFile="$(env.WIX)\SDK\Microsoft.Deployment.WindowsInstaller.dll"/>
    
    <!-- Following are required as payload and to be used by Pre-Req screen.-->      
    
          <Payload SourceFile="..\resources\logo.png"/>
          <Payload SourceFile="..\resources\Banner.bmp"/>
          <Payload SourceFile="..\resources\NetfxLicense.rtf"/>
    
        </BootstrapperApplicationRef>
    

    这就像我希望的那样开始工作:)。

    问候

    【讨论】:

    • 令人遗憾的是,整个 wix/burn 系统的功能如此强大,但却缺乏如此多的文档。感谢您的洞察力!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多