Msi比msm大两倍

问题描述 投票:1回答:2

我有一个100万的.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>

编辑:

请注意,<Media>上的CompressionLevel =“high”将.msi从200MB增加到180MB

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

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

编辑2:

看起来我已经将msm包括了2次。如果我设置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>

这是Visual Studio 2012项目 - Release - x64。

最后...

我选择了一个烧录引导程序项目,抱歉这个烂摊子:D

wix installer windows-installer
2个回答
1
投票

因此,当您将压缩设置为高时,MSI为100MB或与.MSM大小相同?那么这里的问题是什么?

合并过程从MSI中提取文件并将它们放入MSI中。如果MSM具有更高的压缩设置,则MSI可以期望包扩展。


1
投票

正如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?


一些链接:

© www.soinside.com 2019 - 2024. All rights reserved.