【问题标题】:WiX - .NET 4.0 prerequisite increasing file size?WiX - .NET 4.0 先决条件增加文件大小?
【发布时间】:2014-02-27 12:41:28
【问题描述】:

以下是我用于 WiX 引导程序安装程序的以下代码:

<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">
  <Bundle Name='My Application Version 3.5'  Version='3.5.0' Manufacturer='Company'       UpgradeCode='{49DF3192-2631-4636-9279-E4F913077C57}'>
            <BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.RtfLicense" />

              <Chain>
                <PackageGroupRef Id="Netfx4Full"/>
                <MsiPackage SourceFile="MyApplicationToInstall.msi" Compressed="no"/>
              </Chain>
  </Bundle>

        <Fragment>
            <!--check for .NET 4.0-->
            <util:RegistrySearch
                Root="HKLM"
                Key="SOFTWARE\Microsoft\Net Framework Setup\NDP\v4\Full"
                Value="Version" Variable="Netfx40FullVersion"/>

            <util:RegistrySearch
                Root="HKLM"
                Key="SOFTWARE\Microsoft\Net Framework Setup\NDP\v4\Full"
                Value="Version"
                Variable="Netfx40x64FullVersion"
                Win64="yes"/>

            <PackageGroup Id="Netfx4Full">
                <ExePackage Id="Netfx4Full"
                     DisplayName="Microsoft .NET Framework 4.0"
                     DownloadUrl="http://download.microsoft.com/download/9/5/A/95A9616B-7A37-4AF6-BC36-D6EA96C8DAAE/dotNetFx40_Full_x86_x64.exe"
                     Compressed="no"
                     Cache="no"
                     PerMachine="yes"
                     Permanent="yes"
                     Vital="yes"
                     Protocol="netfx4"
                     SourceFile=".\dotNetFx40_Full_x86_x64.exe"
                     InstallCommand="/passive /norestart"
                     DetectCondition="Netfx40FullVersion AND (NOT VersionNT64 OR Netfx40x64FullVersion)" />
            </PackageGroup>
        </Fragment>
    </Wix>

由于某种原因,.NET 4 的先决条件导致 3 MB 的应用程序增加到 99 MB 的文件大小。当我删除先决条件时,它下降到它应该是 (3 MB) 的大小。经过一番研究,我将缓存从“是”更改为“否”,将其从 99 MB 减少到 50 MB。

我对 WiX 比较陌生,所以我缺少什么?我是否写错了先决条件?

编辑:原始程序是使用 VS2010 的安装程序模板(现已停产)安装的,该模板在运行时使用与我编写的 WiX 替代方案相同的先决条件安装了该程序,但是该安装的结果安装了 3 MB程序和 .NET 作为独立的实体。

【问题讨论】:

  • 如果您的包安装了 .NET Framework(如果未安装),我认为增加包大小没有任何问题。框架还会从哪里安装?
  • 但是为什么会影响已安装程序的大小呢? .NET 是一个单独的实体,仅需要该程序才能运行。我安装的程序不应该在控制面板中显示为 50 MB 的程序,而实际上程序本身只有 3 MB。
  • 这取决于你看待它的方式。您的安装程序安装了 99MB。它的一部分可能是 .NET 框架,但仍然是这个安装程序安装了它,所以它确实是你安装的大小。如果用户删除它,这就是将被释放的空间,对吧?您可以对其他人需要 .NET4 时发生的情况进行测试并安装它。
  • 这让我感到困惑的原因(我可能应该在问题中添加这个但忘记了)是原始应用程序是通过 VS2010 的安装程序模板安装的,并且程序的原始大小安装的大小是 3 MB,这表明我使用 WiX 安装程序设置了一些错误。

标签: .net wix windows-installer


【解决方案1】:

尝试使用 RemotePayload 而不是指定 SourceFile。我用来安装 .NET 3.5 的示例代码:

<PackageGroup Id="DotNetFx35">
  <ExePackage 
    InstallCommand="/lang:enu /passive /qb /norestart" 
    PerMachine="yes" 
    DetectCondition="NETFX35" 
    InstallCondition="NOT NETFX35" 
    Id="DotNetFx35" 
    Vital="yes" 
    Permanent="yes" 
    Protocol="none" 
    DownloadUrl="http://go.microsoft.com/fwlink/?linkid=118076" 
    Compressed="no" 
    Name="dotnetfx35setup.exe">
    <RemotePayload 
      Size="2959376" 
      Version="3.5.30792.01" 
      ProductName="Microsoft .NET Framework 3.5" 
      Description="Microsoft .NET Framework 3.5 Setup"            Hash="ec9f0c31b9949ca1cf14e9a43bca065fa5bc0e71" /> 
  </ExePackage>
  </PackageGroup>

【讨论】:

  • 我正在尝试为 .NET 4 调整您的示例,但是我不确定在哪里可以找到安装程序的哈希码(这是我假设我需要的哈希码),有什么地方可以找到吗?因为到目前为止我还没有找到它,谢谢。
  • 可以找到在线哈希计算器。我使用 FreeWare 实用程序 HashTool digitalvolcano.co.uk/hash.html。生成哈希时,请检查您是否选择了 SHA-1 哈希。
  • 当我删除 SourceFile 时,它​​不会编译。它声明它是必需的属性。我能做些什么来规避这个问题?
猜你喜欢
  • 2013-02-10
  • 2011-02-02
  • 1970-01-01
  • 1970-01-01
  • 2014-04-14
  • 1970-01-01
  • 2017-04-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多