2014-09-05 3 views
1

У меня есть .msm из 100MB и когда я строю свой WiX проект я получаю .msi из 200MB Вот код:Msi два раза больше, чем MSM

<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> 

Edit:

Обратите внимание, что CompressionLevel = «высокие» в < СМИ > принимает .msi от 200МБ до 180 Мб

Это как я вижу содержание .msm с 7z (Похоже косатками таблицей с префиксом! и файловыми са lled MergeModule.CABinet и другие).

msm opened with 7z

Это как я вижу содержание .msi с 7z (Имена файлов).

msi opened with 7z

Edit 2:

Похоже, я в том числе МСМ 2 раза. Если я установил EmbedCab = "no", мой msi все еще превышает 100 МБ плюс 100 МБ продукта.

Пожалуйста, обратите внимание на этот пересмотренный код:

<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 проект - Release - x64.

Наконец ...

Я решил пойти с проектом ожога, пардон загрузчика за беспорядок: D

+0

это ваш собственный модуль слияния? Если это так, вы должны использовать [** Wix include files **] (http://stackoverflow.com/questions/24834951/msi-reference-counting-two-products-install-the-same-msis), а не объединять модули. –

+0

Нет, это модуль третьей части. – Ymir

+0

Запустите административный образ скомпилированного MSI, чтобы увидеть, что было скомпилировано в нем: 'msiexec/a File.msi'. –

ответ

1

Итак, когда вы установите компрессию высоко MSI является 100MB или примерно такого же размера как .MSM? Так в чем проблема?

Процесс слияния извлекает файлы из MSI и помещает их в MSI. Если у MSM была более высокая степень сжатия, тогда MSI вы могли ожидать, что пакет будет расширяться по размеру.

+0

Очень жаль мою опечатку. При высоком сжатии MSI составляет 180 МБ.Я согласен, что в этом случае проблем не было. – Ymir

1

Как говорит Крис, вы можете попытаться включить высокую степень сжатия, как показано здесь:

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

Смежные вопросы