我正在编辑一个wix包项目(版本3.10)。我正在尝试使用wixnetfxextensions来安装.net framework 4.6(如果尚未安装)。我创建了一个使用WIX_IS_NETFRAMEWORK_46_OR_LATER_INSTALLED属性的exepackage。我猜我没有正确使用它。有关如何使用它的任何帮助?目前.net框架不会安装无关紧要。
<Chain>
<PackageGroupRef Id="redist_vc140" />
<PackageGroupRef Id="NetFx461Full" />
<MsiPackage Id="MSI_Installer" SourceFile="C:\Installer.msi"/>
</Chain>
<Fragment>
<PropertyRef Id="WIX_IS_NETFRAMEWORK_46_OR_LATER_INSTALLED"/>
<!-- Install .NET 4.6.1 -->
<PackageGroup Id="NetFx461Full">
<ExePackage Id="NetFx461"
DisplayName="Microsoft .NET Framework 4.6.1"
Compressed="no"
Cache="yes"
PerMachine="yes"
Permanent="yes"
Protocol="netfx4"
Vital="yes"
SourceFile="..\NDP461-KB3102436-x86-x64-AllOS-ENU.exe"
UninstallCommand="/q /norestart"
RepairCommand="/q /norestart"
DetectCondition="NOT WIX_IS_NETFRAMEWORK_46_OR_LATER_INSTALLED" />
</PackageGroup>
</Fragment>
答案 0 :(得分:1)
您正在做很多额外的工作来安装.net,而您实际上并不需要这样做。
要将.net 461添加到安装程序,只需包含netfxextension并添加
<Bundle>
<PayloadGroup Id="NetFx461RedistPayload">
<Payload Name="redist\NDP461-KB3102436-x86-x64-AllOS-ENU.exe"
SourceFile="C:\path\to\redists\in\repo\NDP461-KB3102436-x86-x64-AllOS-ENU.exe"/>
<PayloadGroup/>
</Bundle>
以便完整的安装程序包含在您的引导程序中。您可以忽略这一点,然后引导程序将下载安装程序,但如果客户没有Internet连接,则无法安装.net。
然后在您的链中添加
<PackageGroupRef Id="NetFx461Redist"/>
我使用this作为参考,并检查wix source以查看内容 正在使用的.net 461的名称在netfxextension中。
Sean Hall提到捆绑包甚至不使用属性,所以我在这里写的内容在这种情况下根本不适用。 (这也是不正确的)
答案 1 :(得分:0)
Brian Sutherland建议做了什么:添加了将.netframework与确定的最小版本号进行比较的WxsVariable。然后在exepackage中将其作为检测条件