【问题标题】:.NET Framework 3.5 SP1 Prerequisite installation with wix bundle.NET Framework 3.5 SP1 先决条件安装与 wix 包
【发布时间】:2014-04-14 21:43:30
【问题描述】:

我的应用程序使用 WIX 3.8,它需要在机器上安装 .NET Framework 3.5 SP1 作为先决条件。

我检查了 bundle.wxs 中的 .net 框架,执行时遇到以下问题。
1. 引导程序总是尝试安装 .net 框架,即使配置文件中定义的支持的运行时版本是 v3.5。
2. 在接受并继续安装时,boostrapper 无法加载并且设置突然中断。

从日志文件中,我看到在已安装 .net 3.5 SP1 的机器上测试时,检测条件的条件是成功的。但它退出并显示以下消息:“先决条件已安装。引导程序应用程序将不会重新加载以防止无限循环。

谁能告诉我为什么 BootStrapper 总是触发 .net 框架,即使已经安装在机器上?

附上.net检查的代码sn-p以及配置文件更改:

<PackageGroup Id="Netfx35Full" >
<ExePackage Id="Netfx35Full" DisplayName="Microsoft .NET Framework 3.5"                Cache="no" Compressed="yes" PerMachine="yes" Permanent="yes" Vital="no"                     SourceFile='..\prereq\dotnetfx35setup.exe' InstallCommand='/q /norestart'
RepairCommand="/q /norestart" UninstallCommand="/q /norestart"                    InstallCondition="(NOT Netfx35FullVersion AND Netfx35FullVersion &lt; v3.5.30729.1) 
AND (NOT Netfx35x64FullVersion AND Netfx35x64FullVersion &lt; v3.5.30729.1) AND NOT   Netfx4FullVersion OR NOT Netfx4x64FullVersion " DetectCondition="(Netfx35FullVersion AND   Netfx35FullVersion &gt;= v3.5.30729.1) OR (Netfx35x64FullVersion AND Netfx35x64FullVersion   &gt;=  v3.5.30729.1) OR Netfx4FullVersion OR Netfx4x64FullVersion"/>
</PackageGroup>

配置文件

 <startup useLegacyV2RuntimeActivationPolicy="true">
 <supportedRuntime version="v3.5" />
 </startup>
 <wix.bootstrapper>
 <host assemblyName="SCM.BootstrapperApplication">
 <supportedFramework version="v3.5" />
 </host>
 </wix.bootstrapper>

【问题讨论】:

    标签: wix bootstrapper


    【解决方案1】:

    您如何使用“Netfx35FullVersion”/“Netfx35x64FullVersion”等属性?你自己定义了吗?

    您可以使用此页面中定义的 WixNetfxExtension 属性:WIXNETFXEXTENSION

    例如,要检查是否安装了 3.5 框架或 3.5 SP,您可以使用以下属性。

    NETFRAMEWORK35 - Set to #1 if the .NET Framework 3.5 is installed (not set otherwise).
    NETFRAMEWORK35_SP_LEVEL - Indicates the service pack level for the .NET Framework 3.5.
    

    要在您的项目中使用这些属性,请按照以下步骤操作: 来源:How to check .Net framework versions

    步骤 1. 将 WiX .NET 扩展库添加到您的项目中 如果您在 Visual Studio 中使用 WiX,则可以使用“添加引用”对话框添加扩展:

    1. 在 Visual Studio 中打开您的 WiX 项目
      1. 在解决方案资源管理器中右键单击您的项目并选择添加引用...
      2. 从列表中选择 WixNetFxExtension.dll 程序集并单击添加
      3. 关闭“添加参考”对话框

    第 2 步:将 WiX .NET 扩展命名空间添加到您的项目中

    将库添加到您的项目后,您需要将 .NET 扩展命名空间添加到您的项目中,以便您可以访问适当的 WiX 元素。为此,通过添加以下属性来修改项目中的顶级元素:

    <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
         xmlns:netfx="http://schemas.microsoft.com/wix/NetFxExtension">
    

    第 3 步:在项目中引用所需的属性

    <PropertyRef Id="NETFRAMEWORK20"/>
    

    第 4 步:在条件中使用预定义的属性

    要检查框架的服务包级别,请使用 *_SP_LEVEL 属性。如果计算机上不存在 .NET Framework 3.0 SP1,则以下情况会阻止安装。

    <Condition Message="This application requires .NET Framework 3.0 SP1. Please install the .NET Framework then run this installer again.">
        <![CDATA[Installed OR (NETFRAMEWORK30_SP_LEVEL and NOT NETFRAMEWORK30_SP_LEVEL = "#0")]]>
    </Condition>
    

    【讨论】:

      【解决方案2】:

      当您有一个要安装的 prereq .net 包时,有时您会在日志中收到此消息,并且在您的 BootstrapperCore 配置文件中您提供了评估为 false 的 statup 属性。 我建议您可能需要重新访问 BootstrapperCore 配置文件来解决这个问题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-02-02
        • 2011-06-10
        • 1970-01-01
        • 1970-01-01
        • 2015-10-25
        • 2011-07-01
        • 2010-12-27
        • 2010-10-02
        相关资源
        最近更新 更多