Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
WiX detect.Net 4.0.3_Wix_Wix3.7 - Fatal编程技术网

WiX detect.Net 4.0.3

WiX detect.Net 4.0.3,wix,wix3.7,Wix,Wix3.7,我有一个需要.Net 4.0.3()的应用程序 我找到了它,它告诉我在哪里可以找到安装的.Net版本,但我能找到的只是WiX编译器识别的包含属性列表() 我已尝试按照中的说明进行操作,其中告诉我使用以下代码,但这只是安装了.Net 4而没有更新: <PropertyRef Id="NETFRAMEWORK40FULL"/> <Condition Message="This application requires .NET Framework 4.0.3. Please in

我有一个需要.Net 4.0.3()的应用程序

我找到了它,它告诉我在哪里可以找到安装的.Net版本,但我能找到的只是WiX编译器识别的包含属性列表()

我已尝试按照中的说明进行操作,其中告诉我使用以下代码,但这只是安装了.Net 4而没有更新:

<PropertyRef Id="NETFRAMEWORK40FULL"/>

<Condition Message="This application requires .NET Framework 4.0.3. Please install the .NET Framework then run this installer again.">
    <![CDATA[Installed OR NETFRAMEWORK40FULL]]>
</Condition>


我该如何通过预定义的WiX属性或自己检查注册表值来检查特定的4.0.3更新?

经过阅读,我最终向我的解决方案添加了一个捆绑项目,该项目引用了标准WiX安装程序项目(
MyProject.installer
)中我的主
产品。然后,我使用了
RegistrySearch
来查找完整的.NET4安装版本

<Bundle ....>
    <Chain>
        <PackageGroupRef Id="Netfx4Full" />
        <PackageGroupRef Id="Netfx403Update" />
        <MsiPackage Id="MyMsi" SourceFile="$(var.MyProject.Installer.TargetPath)" Compressed="yes" DisplayInternalUI="yes" />
    </Chain>
</Bundle>
<Fragment>
    <util:RegistrySearch Root="HKLM"
                     Key="SOFTWARE\Microsoft\Net Framework Setup\NDP\v4\Full"
                     Value="Version"
                     Variable="Netfx4FullVersion" />
    <util:RegistrySearch Root="HKLM"
                     Key="SOFTWARE\Microsoft\Net Framework Setup\NDP\v4\Full"
                     Value="Version"
                     Variable="Netfx4x64FullVersion"
                     Win64="yes" />
    <PackageGroup Id="Netfx4Full">
        <ExePackage Id="Netfx4Full"
              Cache="no"
              Compressed="yes"
              PerMachine="yes"
              Permanent="yes"
              Vital="yes"
              SourceFile="$(var.ProjectDir)dotNetFx40_Full_x86_x64.exe"
              DownloadUrl="http://go.microsoft.com/fwlink/?LinkId=164193"
              DetectCondition="Netfx4FullVersion AND (NOT VersionNT64 OR Netfx4x64FullVersion)" />
    </PackageGroup>

    <PackageGroup Id="Netfx403Update">
        <ExePackage Id="Netfx403Update"
              Cache="no"
              Compressed="yes"
              PerMachine="yes"
              Permanent="yes"
              Vital="yes"
              SourceFile="$(var.ProjectDir)NDP40-KB2600211-x86-x64.exe" 
              DetectCondition="Netfx4FullVersion AND (Netfx4FullVersion &lt;&lt; &quot;4.0.3&quot; OR Netfx4FullVersion &lt;&lt; &quot;4.5&quot;)" />
    </PackageGroup>
</Fragment>


该条件扩展到
Netfx4FullVersion,并且注册表项
中的Netfx4FullVersion版本值.Net 4.0的“SOFTWARE\Microsoft\Net Framework Setup\NDP\v4\Full”
将始终为4.0.30319(即使已安装更新)

以下是我在捆绑包中用于搜索.net 4.0.3版本是否已安装的代码:

<util:RegistrySearch Root="HKLM" 
    Key="SOFTWARE\Microsoft\.NETFramework\v4.0.30319\SKUs\.NETFramework,Version=v4.0.3"
    Result="exists" 
    Variable="Netfx403" />
<util:RegistrySearch Root="HKLM"  
    Key="SOFTWARE\Microsoft\.NETFramework\v4.0.30319\SKUs\.NETFramework,Version=v4.0.3" 
    Result="exists"
    Variable="Netfx403x64"
    Win64="yes" />

您好,我不明白您的目的是什么?您正在查询.NET framework的版本,该版本在安装更新时不会更改。如果安装了.NET framework 4.0,则无论是否安装更新,版本字段都将显示4.0.30319。您的解决方案中是否缺少某些内容?您是否应该使用HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Updates\Microsoft.NET Framework 4 Extended\KB2600211\?如果您下载的是最新版本的.NET Framework,更新4.0.3是否未包含在软件包中?我记得在新的虚拟机上测试过此项,以确保安装程序正常工作。如果您尝试过此项,但不起作用,并且有其他解决方案,请付费我可以自由发布它。不,它不是.net 4.0的一部分(我们需要等待sp)。我还在虚拟机上测试它,建议的解决方案不能正常工作。您可以搜索4.0.3注册表项(我在上一篇文章中发布过),但是,我仍然不确定这是正确的方法(搜索4.0.3注册表项),因为在我的开发人员计算机上,我没有安装4.0.3,并且async BCL仍在工作(我不知道您的应用程序是否需要此更新,因为使用了async BCL)。我的应用程序需要4.0.3以获得LocalDb支持。您是否有可以作为答案发布的工作代码?如果有效,我很乐意更改接受的答案=]
DetectCondition="Netfx403 AND (NOT VersionNT64 OR Netfx403x64)"