Аналогичный вопрос: Повторное использование компонентов WIX для ускорения свеча / свет
У моего проекта та же проблема, что и у упомянутого;очень большая статическая база данных, которая никогда не изменяется, сжимается в msi каждый раз, когда требуется сборка.Я хотел бы сделать так, как задан вопрос: повторно использовать предварительно сжатый файл CAB для ускорения времени сборки.
Я начал делать, как подсказывает ответ, используя свойство cabCache.Я добавил следующее в .wixproj:
<CabinetCachePath>cabs</CabinetCachePath>
<ReuseCabinetCache>True</ReuseCabinetCache>
Затем я разделил статические данные на фрагмент:
<Fragmet>
<Media Id="2" Cabinet="static.cab" EmbedCab="no" />
<Component Id="staticCab" Guid="..." >
Files ...
</Component>
И этот фрагмент был указан в функции:
<ComponentRef Id="staticCab" />
Это создало файл cab, но оставил его пустым.Моей следующей мыслью было использование модуля слияния.Я создал модуль:
<Module Id="StaticModule" Language="1033" Version="1.0.0.0" >
<Package ...>
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="MergeRedirectFolder" Name=".">
<Component Id="StaticFiles" Guid="...">
Files...
</ -- End all XML Tags
А затем слил его:
<Directory Id="StaticDir" Name="static">
<Merge Id="StaticModule" Language="1033" src="..\Static\bin\Release\static.msm" />
</Directory>
<Feature ...>
<MergeRef Id="StaticModule"/>
</Feature>
Даже после всего этого CabinetCache все еще перестраивается каждый раз.
Я думаю,мой вопрос был бы, как правильно использовать ReuseCabinetCache.Я все еще изучаю WIX, поэтому я прошу прощения, если ответ очевиден.Я просто не уверен, как его использовать.
Редактировать: Модуль MergeModule не будет идеальным, так как нет необходимости делиться этой логикой с другими MSI.Этот проект полезен только для одной команды разработчиков.