如何安装.NET 4.5与维克斯捆绑?(How to install .NET 4.5 with a

2019-07-04 01:22发布

我需要包括微软.NET 4.5与我的安装包的先决条件,我希望它尽可能自动。 然而,.NET 不应 unistalling时取出。 我想我已经读了这篇关于如何使用一切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="..\..\..\..\Environment\InstallerResources\Prerequisites\dotnetfx45_full_x86_x64.exe"
                  InstallCommand="/passive /norestart"
                  DetectCondition="NETFRAMEWORK45 &gt;= $(var.NetFx45MinRelease)"
                  InstallCondition="NOT REMOVE AND (NETFRAMEWORK45 &lt; $(var.NetFx45MinRelease))" />
    </PackageGroup>

(出于某种原因,我不得不定义NetFx45MinRelease自己即使它应该已包含在WixNetFxExtension。)

我怎样才能获得设置是否正确?

Answer 1:

我不明白为什么你有问题,但我只是有相同的任务,它(现在;-)按预期工作。 也就是说,安装.NET仅在必要时4.5,和卸载引导程序作为一个整体时,不会做一个.NET卸载。

然而,.NET 4.5 可以单独卸载,我认为这是很好的。

这是我用什么(最有可能从其他堆栈溢出的帖子得到的):

<PackageGroup Id="Netfx45Xxx">
    <ExePackage Id="Netfx45Xxx" Cache="no" Compressed="no" PerMachine="yes" Permanent="yes" Vital="yes" InstallCommand="/q"
        SourceFile="C:\wixtest\dotnetfx45_full_x86_x64.exe"
        DetectCondition="(Netfx4FullVersion=&quot;4.5.50709&quot;) AND (NOT VersionNT64 OR (Netfx4x64FullVersion=&quot;4.5.50709&quot;))"
        InstallCondition="(VersionNT >= v6.0 OR VersionNT64 >= v6.0) AND (NOT (Netfx4FullVersion=&quot;4.5.50709&quot; OR Netfx4x64FullVersion=&quot;4.5.50709&quot;))"/>
</PackageGroup>

奇怪的是,你已经有永久=“是”,这的确是关键,保持.NET上卸载。

一个区别是,我没有明确的“不删除”的InstallCondition,这也许就是困惑多于帮助到Windows Installer ...?

我使用WiX的3.7.1224.0,目前是最新的。


到TheESJ的回答一个意见:即使有预定义PackageGroupRef,您可以提供本地文件,以避免下载。 只要将其放置在下方的引导程序的EXE文件“REDIST”文件夹,它将从那里,如果现在采取无需下载。 我以后安装错误昨天通过日志文件中找到此行为。



Answer 2:

你不应该需要定义PackageGroup。 这是包含在WixNetFxExtension。 见http://wix.sourceforge.net/manual-wix3/install_dotnet.htm 。 所有你需要做的是包括在您wixproj到WixNetFxExtension参考,那么PackageGroupRef添加到这里记录的PackageGroups之一: http://wix.sourceforge.net/manual-wix3/wixnetfxextension.htm您链。



文章来源: How to install .NET 4.5 with a WiX bundle?