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
答案 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