当NetFx35已经存在时,WiX Bundle不会安装Prereq NetFx35 SP1

时间:2013-08-23 15:47:02

标签: wix bundle managed bootstrapper burn

My WiX Burn(v3.8.611.0)Bundle错误地(?)当系统安装了.NET 3.5时,不安装它的PrereqPackage .NET Framework 3.5 SP1。相反,它启动Managed Bootstrapper Application(在我的情况下至少需要.NET 3.5 SP1)。

如果安装了以前版本或非NetFx版本(使用3.0 SP2,2.0 SP2且根本没有.NET Framework测试),则NetFx35 SP1 ExePackage会正确安装。但如果我在NetFx 3.5上安装,则不会。

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

<Fragment>
    <PackageGroup Id="Netfx35SP1PackageGroup">
        <ExePackage Id="Netfx35SP1"
                    DisplayName=".NET Framework 3.5 SP1"
                    Cache="no"
                    Compressed="no"
                    PerMachine="yes"
                    Permanent="yes"
                    Vital="yes"
                    InstallCommand="/q /norestart"
                    SourceFile="$(var.NetFx35SetupFileName)"
                    DownloadUrl="$(var.NetFx35Setup)"
                    DetectCondition="1 > 2"
                    InstallCondition="2 > 1" />
    </PackageGroup>
</Fragment>

请注意 DetectCondition =&#34; 1&gt; 2&#34;和 InstallCondition =&#34; 2&gt; 1&#34;

我在XP Pro x64(SP2),XP Pro x86(SP3)和Vista HP x86(SP2)上进行了测试,每次安装NetFx 3.0和NetFx 3.5至少一次。我对所有测试都有相同的行为。

我错过了什么吗?这是一个错误吗?

澄清:我没有收到任何错误消息。日志文件没有说出任何可疑之处。但是我的Managed Bootstrapper应用程序崩溃了,因为缺少.NET Framework 3.5 SP1。

日志文件说:

  

Burn v3.8.611.0,Windows v5.2(Build 3790:Service Pack 2),路径:Z:\ temp_install \ Setup.exe,cmdline:&#39;&#39;

     

设置字符串变量&#39; WixBundleLog&#39;估价&#39; C:\ DOCUME~1 \ ADMINI~1 \ LOCALS~1 \ Temp \ 20130823152241.log&#39;

     

设置字符串变量&#39; WixBundleOriginalSource&#39;重视&#39; Z:\ temp_install \ Setup.exe&#39;

     

条件&#39;((VersionNT&gt; = v5.1)AND(ServicePackLevel&gt; = 3))或((VersionNT&gt; = v5.2)AND(ServicePackLevel&gt; = 2))或(VersionNT &gt; = v6.0)&#39;评估为真。

     

设置字符串变量&#39; WixBundleName&#39;重视&#39; MyBundle&#39;

     

加载托管引导程序。

     

创建BA线程以异步方式运行。

     

检测开始,5个包

     

设置字符串变量&#39; Netfx35Version&#39;重视&#39; 3.5.21022.08&#39;

     

条件&#39; 1&gt; 2&#39;评估为假。

     

检测到的包:Netfx35SP1,状态:缺席,缓存:无

     

检测完成,结果:0x0

1 个答案:

答案 0 :(得分:1)

当使用托管的boostrapper应用程序时,Wix 3.8在先决条件中安装了.Net 4.0。这允许您的.Net 4.0 MBA运行。如果您的应用程序需要,可以在链中部署.Net 3.5 SP1。示例在这里(在我的包中有效): http://neilsleightholm.blogspot.com/2012/05/wix-burn-tipstricks.html