我尝试修改现有的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 textstyle,系统创建了一个MS Sans Serif&#39; 0字符集中的字体,高度为13像素。 DEBUG:错误2835:在对话框ErrorDialog上找不到控件ErrorIcon 安装程序在安装此程序包时遇到意外错误。这可能表明此包装存在问题。错误代码是2835.参数是:ErrorIcon,ErrorDialog, 此设置需要.NET Framework 4.0版 行动结束15:53:39:VSDCA_VsdLaunchConditions。返回值3。 行动结束15:53:39:安装。返回值3。
如果安装了.NET 2.0,则继续安装。
答案 0 :(得分: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>
答案 1 :(得分:0)
我发现设置项目最初是在VS2005中创建的,并使用黑暗等转换为Wix项目。这将提取一个名为MSVBDPCA.dll的文件,通过<CustomAction Id="DIRCA_CheckFX" BinaryKey="MSVBDPCADLL" DllEntry="CheckFX" />
检查.NET 2.0行动。
在VS2010中创建一个新的设置项目,然后转换为Wix会创建一个新的MSVBDPCA.dll来检查.NET 4.0。