【问题标题】:Check for .NET 4.0 using Wix使用 Wix 检查 .NET 4.0
【发布时间】:2014-10-24 15:27:37
【问题描述】:

我正在尝试修改现有的 Wix 脚本以检查是否安装了 .NET 4.0,而不是 .NET 2.0,然后再继续。目前这是使用 wxs 文件中的自定义操作完成的:

<InstallUISequence>
  <Custom Action="VSDCA_VsdLaunchConditions" Before="ValidateProductID">NOT Installed</Custom>
</InstallUISequence>

我找不到任何要更改的设置,以便它检查 .NET 4.0 而不是 2.0。它似乎是硬编码的,它可能与 Wix 或 Windows Installer 的版本有关吗?我们目前使用的是 Wix 3.0。如果机器上只安装了 .NET 4.0,那么安装程序日志中会出现以下错误:

动作开始时间 15:53:36:VSDCA​​_VsdLaunchConditions。 信息 2898。对于 VSI_MS_Sans_Serif13.0_0_0 文本样式,系统创建了一个 0 字符集、高度为 13 像素的“MS Sans Serif”字体。 调试:错误 2835:在对话框 ErrorDialog 上找不到控件 ErrorIcon 安装程序在安装此软件包时遇到意外错误。这可能表明此软件包有问题。错误代码为 2835。参数为:ErrorIcon、ErrorDialog、 此设置需要 .NET Framework 4.0 版 操作于 15:53:39 结束:VSDCA​​_VsdLaunchConditions。返回值 3。 行动于 15:53:39 结束:安装。返回值 3。

如果安装了 .NET 2.0,则继续安装。

【问题讨论】:

  • 您是明确使用 WiX v3.0 还是实际使用 3.x?如果您使用的是 的 WixNetfxExtension 属性
  • 我试图找出 VSDCA​​_VsdLaunchConditions 为什么/如何检查 .NET 2.0。我找不到任何配置来控制它。

标签: .net wix wix3


【解决方案1】:

如果安装了 dotnet 4.0,则会在 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft.NETFramework\v4 处有一个注册表项

您可以检查此注册表项并在 wix 中弹出一条消息。

您可以使用下面的代码来做到这一点。

<Property Id="DOTNET40">
    <RegistrySearch Id="NetFramework40"
                    Root="HKLM"
                    Key="Software\Microsoft\NET Framework Setup\NDP\v4"
             Name="Install"
                    Type="raw" />
</Property>


<Condition Message="Please install the .NET Framework 4.0 and run this installer again.">
    <![CDATA[Installed OR DOTNET40]]>
</Condition>

【讨论】:

    【解决方案2】:

    我后来发现设置项目最初是在 VS2005 中创建的,并使用 dark 等转换为 Wix 项目。这会提取一个名为 MSVBDPCA.dll 的文件,该文件通过 &lt;CustomAction Id="DIRCA_CheckFX" BinaryKey="MSVBDPCADLL" DllEntry="CheckFX" /&gt; 操作检查 .NET 2.0。 在 VS2010 中创建一个新的设置项目,然后转换为 Wix 会创建一个新的 MSVBDPCA.dll,用于检查 .NET 4.0。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-28
      相关资源
      最近更新 更多