我需要加入Microsoft。NET 4.5作为我的安装包的先决条件,我希望它尽可能自动。然而NET不应在卸载时删除。我想我已经阅读了关于如何使用DetectCondition
和/或InstallCondition
的所有内容,但我仍然没有把它做好;它要么一直在运行。NET安装,或者从不运行它。
这是我的最新设置:
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
xmlns:util="http://schemas.microsoft.com/wix/UtilExtension"
xmlns:bal="http://schemas.microsoft.com/wix/BalExtension"
xmlns:netfx='http://schemas.microsoft.com/wix/NetFxExtension'>
<!-- Define minimum .NET Framework version -->
<?define NetFx45MinRelease = 377811?>
...
<Chain>
<PackageGroupRef Id="Netfx45FullPackage"/>
...
</Chain>
<PackageGroup Id="Netfx45FullPackage">
<ExePackage Id="Netfx45Full" Cache="no" Compressed="yes" PerMachine="yes" Permanent="yes" Vital="yes"
SourceFile="........EnvironmentInstallerResourcesPrerequisitesdotnetfx45_full_x86_x64.exe"
InstallCommand="/passive /norestart"
DetectCondition="NETFRAMEWORK45 >= $(var.NetFx45MinRelease)"
InstallCondition="NOT REMOVE AND (NETFRAMEWORK45 < $(var.NetFx45MinRelease))" />
</PackageGroup>
(出于某种原因,我不得不自己定义NetFx45MinRelease
,尽管它本应包含在WixNetFxExtension中。)
如何正确设置?
我不太确定你为什么会遇到问题,但我只是有同样的任务,它(现在;-)按预期工作。也就是说,它安装。NET 4.5仅在需要时,不会执行。NET卸载时作为一个整体卸载引导程序。
然而。NET 4.5可以单独卸载,我认为这很好。
这是我使用的(很可能是从其他Stack Overflow帖子中获得的):
<PackageGroup Id="Netfx45Xxx">
<ExePackage Id="Netfx45Xxx" Cache="no" Compressed="no" PerMachine="yes" Permanent="yes" Vital="yes" InstallCommand="/q"
SourceFile="C:wixtestdotnetfx45_full_x86_x64.exe"
DetectCondition="(Netfx4FullVersion="4.5.50709") AND (NOT VersionNT64 OR (Netfx4x64FullVersion="4.5.50709"))"
InstallCondition="(VersionNT >= v6.0 OR VersionNT64 >= v6.0) AND (NOT (Netfx4FullVersion="4.5.50709" OR Netfx4x64FullVersion="4.5.50709"))"/>
</PackageGroup>
奇怪的是,你已经有了Permanent="yes",这确实是保持的关键。NET。
一个区别是,我在InstallCondition中没有明确的"NOT REMOVE",也许这对Windows安装程序来说更令人困惑而不是帮助。。。?
我使用的是目前最新的WiX 3.7.1224.0。
TheESJ的答案有一条评论:即使使用预定义的PackageGroupRef,您也可以提供本地文件以避免下载。只需将其放在引导程序EXE文件下方的"redist"文件夹中,它将在不下载的情况下从那里获取。我昨天通过错误安装后的日志文件发现了这种行为。
您不需要定义PackageGroup。这包含在WixNetFxExtension中。看见http://wix.sourceforge.net/manual-wix3/install_dotnet.htm.您所需要做的就是在wixproj中包含对WixNetFxExtension的引用,然后将PackageGroupRef添加到此处记录的某个PackageGroup中:http://wix.sourceforge.net/manual-wix3/wixnetfxextension.htm你的链子。