【问题标题】:Msi two times larger than msmmsi 是 msm 的两倍
【发布时间】:2014-09-05 14:22:54
【问题描述】:

我有一个 100MB 的 .msm,当我构建我的 WiX 项目时,我得到一个 200MB 的 .msi 这里有一些代码:

<Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine"  />

<Media Id="1" Cabinet="product.cab" EmbedCab="yes" />

<Directory Id="TARGETDIR" Name="SourceDir">
  <Merge Id="MyMsmFile" Language="1033" SourceFile="msm\MyMsmFile.msm" 
         DiskId="1" FileCompression="yes" />
  <Directory Id="INSTALLFOLDER" Name="Foo" >
  </Directory>
</Directory>

<Feature Id="Foo_client" Title="Foo Client" Level="1" 
         ConfigurableDirectory="INSTALLFOLDER" >
  <Feature Id="Server" Title="Foo Server" Level="32767">
    <MergeRef Id="MyMsmFile"  />
  </Feature>
</Feature>

编辑:

请注意 的 CompressionLevel="high" 将 .msi 从 200MB 增加到 180MB

这就像我看到带有 7z 的 .msm 的内容(看起来像带有 ! 前缀的 orca 表和一个名为 MergeModule.CABinet 的文件等)。

这就像我看到带有 7z(文件名)的 .msi 的内容。

编辑 2:

看起来我包含了 2 次 msm。如果我设置 EmbedCab="no" 我的 msi 仍然超过 100MB 加上 100MB 的 product.cab。

请看一下这个修改后的代码:

  <Product Id="PUT-GUID-HERE"
       Name="MyProduct"
       Language="1033"
       Version="0.0.1"
       Manufacturer="MyCompany"
       UpgradeCode="PUT-GUID-HERE">

    <Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" />
    <Media Id="1" Cabinet="product.cab" EmbedCab="no" CompressionLevel="high"  />

    <MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." />

    <UIRef Id="WixUI_FeatureTree" />

    <Directory Id="TARGETDIR" Name="SourceDir">
      <Directory Id="INSTALLFOLDER" Name="MyProduct" >
        <Merge Id="ThirdPartModule" Language="1033" SourceFile="ThirdPartModule.msm" DiskId="1" />
      </Directory>
    </Directory>

    <Feature Id="Server" Title="MyProduct Server" Level="1" >
      <MergeRef Id="ThirdPartModule"  />
    </Feature>
  </Product>

这是一个 VisualStudio 2012 项目 - 发布 - x64。

终于...

我选择了一个烧录引导程序项目,很抱歉造成混乱:D

【问题讨论】:

  • 这是您自己的合并模块吗?如果是这样,您应该使用Wix include files 而不是合并模块。
  • 不,这是一个第三方模块。
  • 运行已编译 MSI 的管理映像以查看已编译到其中的内容:msiexec /a File.msi
  • 在合并模块上使用包含/片段是个人意见,并不普遍适用。各有利弊。

标签: wix installation windows-installer


【解决方案1】:

所以当您将压缩设置为高时,MSI 是 100MB 还是与 .MSM 大小相同?那么这里有什么问题呢?

合并过程从 MSI 中提取文件并将它们放入 MSI。如果 MSM 具有比 MSI 更高的压缩设置,您可以预期包的大小会扩大。

【讨论】:

  • 非常抱歉我的错字。在高压缩时,MSI 为 180MB。我同意这种情况没有问题。
【解决方案2】:

正如 Chris 所说,您可以尝试启用高压缩,如下所示:

<Media Id="1" Cabinet="product.cab" CompressionLevel="high" EmbedCab="yes" />

阅读media element documentation 了解更多信息。据我所知,“高”压缩设置启用 LZX 而不是 mszip 格式。

这是一篇关于 MSI 可用的各种压缩级别信息的帖子:What is the compression method used by MSI files?


一些链接

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-10
    • 2017-12-11
    相关资源
    最近更新 更多