使用WiX Bundle MBA强制安装失败并显示消息

时间:2014-06-11 21:05:27

标签: wix

我正在接管这个项目,并且无法访问最初设置它的人。目前捆绑包含.net4。希望删除该文件并使最终用户手动下载.net。我正在尝试将软件包设置为检查已安装的.net版本(如果有),如果不符合要求则显示带有下载链接的详细消息,然后中止安装并关闭。

每次我尝试删除指向.net包的变量时,都会出现构建错误。这是我到目前为止所做的。

        <Chain>
      <PackageGroupRef Id='Netfx4Full' />
      <MsiPackage  SourceFile="$(var.TargetDir)Client.msi" Id="Client" Cache="no" Visible="no" ForcePerMachine="yes">
        <MsiProperty Name="INSTALLDIR" Value="[InstallFolder]"/>
      </MsiPackage>   
    </Chain>
  </Bundle>
  <Fragment>
    <PropertyRef Id="NETFRAMEWORK40FULL"/>
    <Variable Name="InstallationPath" bal:Overridable="yes" />
    <WixVariable Id="WixMbaPrereqPackageId" Value="Netfx4Full" />
    <WixVariable Id="WixMbaPrereqLicenseUrl" Value="NetfxLicense.rtf" />
    <Variable Name="DisplayVersion" Value="$(var.BundleVersion)" />
    <util:RegistrySearch Root="HKLM" Key="SOFTWARE\Microsoft\Net Framework Setup\NDP\v4\Full" Value="Version" Variable="Netfx4FullVersion" />
    <util:RegistrySearch Root="HKLM" Key="SOFTWARE\Microsoft\Net Framework Setup\NDP\v4\Full" Value="Version" Variable="Netfx4x64FullVersion" Win64="yes" />

    <Condition Message="This application requires .NET Framework 4.0. Please install the .NET Framework then run this installer again.">
      <![CDATA[Installed OR NETFRAMEWORK40]]>
    </Condition>

    <PackageGroup Id="Netfx4Full">
      <ExePackage Id="Netfx4Full" Cache="no" PerMachine="yes" Permanent="yes" Vital="yes" Compressed="no"
                  SourceFile="DotNetInstallers/dotnetfx40_full_x86_x64.exe"
                  DownloadUrl="http://go.microsoft.com/fwlink/?LinkId=164193"
                  DetectCondition="Netfx4FullVersion OR Netfx4x64FullVersion">  
    </ExePackage>
    </PackageGroup>
  </Fragment>

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:0)

基于这些行,看起来您正在使用ManagedBootstrapperApplicationHost。

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

ManagedBootstrapperApplicationHost是WiX中内置的方式,可以使用.NET内置的自定义BootstrapperApplication(托管BA或MBA)。 MBAHost要求您在捆绑包中打包.NET。如果您担心捆绑包的大小,那么您可以使用WixNetFxExtension中的NetFx4Web包。这将使捆绑包在运行时下载Web安装程序。您可以使用mbapreq.thm和mbapreq.wxl自定义在安装.NET时显示的用户界面。