使用Wix检查.NET 4.0

使用Wix检查.NET 4.0,.net,wix,wix3,.net,Wix,Wix3,我正在尝试修改现有的Wix脚本,以在继续之前检查是否安装了.NET 4.0,而不是.NET 2.0。这是当前使用wxs文件中的自定义操作完成的: <InstallUISequence> <Custom Action="VSDCA_VsdLaunchConditions" Before="ValidateProductID">NOT Installed</Custom> </InstallUISequence> 未安装 我找不到任何要更改的

我正在尝试修改现有的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的版本?我们目前正在使用WIX3.0。如果计算机上只安装了.NET 4.0,则安装程序日志中会出现以下错误:

操作开始15:53:36:VSDCA\u VsdLaunchConditions。 信息2898。对于VSI_MS_Sans_Serif13.0_0_0 textstyle,系统在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,则会继续安装。

如果安装了dotnet 4.0,则HKEY\U LOCAL\U 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>

我后来发现,设置项目最初是在VS2005中创建的,并使用dark等转换为Wix项目。这提取了一个名为MSVBDPCA.dll的文件,该文件通过
操作检查.NET 2.0。
在VS2010中创建一个新的设置项目,然后转换为Wix将创建一个新的MSVBDPCA.dll,用于检查.NET 4.0。

您是明确使用Wix v3.0还是实际使用3.x?如果您使用的是<3.5,您将无法使用允许您检查.NET 4.0的
WixNetfxExtension
属性。我正在尝试找出VSDCA_VsdLaunchConditions检查.NET 2.0的原因/方式。我找不到任何配置来控制它。给你。