Msi比msm大两倍

时间:2014-09-05 14:22:54

标签: wix installer windows-installer

我有一个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>

修改

请注意CompressionLevel =&#34; high&#34; at&lt; Media&gt;将.msi从200MB增加到180MB

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

msm opened with 7z

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

msi opened with 7z

编辑2:

看起来我包括msm 2次。如果我设置EmbedCab =&#34; no&#34;我的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

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

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

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

阅读media element documentation以获取更多信息。 &#34;高&#34;据我所知,压缩设置启用 LZX 而不是 mszip 格式。

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


一些链接