【问题标题】:WiX Bundle does not install Prereq NetFx35 SP1 when NetFx35 is already present当 NetFx35 已经存在时,WiX Bundle 不会安装 Prereq NetFx35 SP1
【发布时间】:2013-08-23 15:47:02
【问题描述】:

当系统安装了 .NET 3.5 时,我的 WiX Burn (v3.8.611.0) Bundle 错误地 (?) 不安装它的 PrereqPackage .NET Framework 3.5 SP1。相反,它会启动托管引导程序应用程序(在我的情况下,它至少需要 .NET 3.5 SP1)。

如果安装了以前的 NetFx 版本或没有安装 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="1 > 2" 和 InstallCondition="2 > 1"。

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

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

澄清一下:我没有收到任何错误消息。日志文件没有说任何可疑的东西。但是我的托管引导程序应用程序崩溃了,因为缺少 .NET Framework 3.5 SP1。

日志文件说:

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

将字符串变量“WixBundleLog”设置为值“C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\20130823152241.log”

将字符串变量“WixBundleOriginalSource”设置为值“Z:\temp_install\Setup.exe”

条件'((VersionNT >= v5.1) AND (ServicePackLevel >= 3)) OR ((VersionNT >= v5.2) AND (ServicePackLevel >= 2)) OR (VersionNT >= v6.0)'计算结果为真。

将字符串变量“WixBundleName”设置为值“MyBundle”

正在加载托管引导程序应用程序。

创建 BA 线程以异步运行。

检测开始,5 个包

将字符串变量“Netfx35Version”设置为值“3.5.21022.08”

条件 '1 > 2' 的计算结果为假。

检测到的包:Netfx35SP1,状态:不存在,缓存:无

检测完成,结果:0x0

【问题讨论】:

    标签: wix bundle managed bootstrapper burn


    【解决方案1】:

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

    【讨论】:

    • 感谢您的回复。如果需要,该捆绑包可以很好地安装其 prereq .NET 3.5 SP1,并按预期启动 MBA。有一个例外:当存在 .NET 3.5(没有 SP1)时,它会跳过 PrereqPackage .NET 3.5 SP1 的安装并立即启动 MBA。Detect-/InstallCondition 应该不是问题:它们总是评估为 false/true .当我手动运行 SP1 设置(与 ExePackage/@DownloadUrl 相同)时,它安装得很好。
    猜你喜欢
    • 2013-05-04
    • 2014-11-10
    • 2016-12-14
    • 1970-01-01
    • 1970-01-01
    • 2016-10-02
    • 2022-01-20
    • 1970-01-01
    • 2015-09-13
    相关资源
    最近更新 更多