Повторное использование компонентов WIX для ускорения работы свечи / зажигания

StackOverflow https://stackoverflow.com/questions/1207020

  •  05-07-2019
  •  | 
  •  

Вопрос

Я довольно новичок в WIX, так что простите меня, если я здесь совершенно не разбираюсь, но мне было интересно, можно ли повторно использовать компоненты (mwm, cab и т.д.) Из файла wxs без необходимости каждый раз заново связывать их light.Установщик, над которым я работаю, содержит несколько исполняемых файлов, DLL-файлов и конфигурационных файлов, которые имеют тенденцию меняться между каждой установкой.Объем этих файлов в установщике составляет около 5 мегабайт.Часть, которую я хочу использовать повторно, - это файлы изображений / карт / баз данных объемом ~ 350 мегабайт, которые меняются не очень часто, и я не хочу, чтобы их обязательно приходилось компилировать / связывать каждый раз при сборке установщика.

Я пытался создать mwm-файл для карт, но когда я ссылаюсь на них в wxs, они связываются через light с основным файлом .msi.Я попытался указать не встроенный CAB-файл для хранения карт:

<Media Id="1" Cabinet="media1.cab" EmbedCab="yes" />
<Media Id="2" Cabinet="NewRiver.cab" EmbedCab="no" CompressionLevel="none" />
...
<Merge Id="NewRiverDigMap" SourceFile="..\Output\NewRiverDigitalMaps.msm" Language="1033" DiskId="2" />

Но каждый раз, когда запускается light, автономный файл CAB восстанавливается, что занимает некоторое время.

Я думал о том, чтобы просто создать ZIP-файл для доставки вместе с msi и заставить установщик просто запустить zip-извлечение, но мне это кажется анти-wix.Я бы хотел, чтобы файлы были удалены, когда они больше не понадобятся.

Есть ли какие-либо другие операции, подобные wix, которые я пропускаю?Я читал о фрагментах, но, похоже, это не то, что я ищу.

Спасибо, Дэвид

Это было полезно?

Решение

Ваша интуиция абсолютно точно ведет вас в правильном направлении.Функция, которую вы ищете, называется "cab-cache".Вы можете использовать его, добавив следующее в свою light.exe командную строку:

-reusecab -cc path\to\directory\for\cabinets

Примечание:Компиляция (candle.exe) и компоновка (первая половина light.exe) должны происходить очень быстро.Что обычно происходит медленно, так это привязка (вторая из light.exe), потому что она фактически затрагивает все файлы и создает шкафы.Сборка шкафа - самая медленная часть, поэтому, надеюсь, cab-cache достаточно ускорит процесс для вас.

P.S.:Если компиляция занимает много времени, вы можете создать ".wixlib" с помощью lit.exe .У меня есть больше о .wixlibs здесь: http://robmensching.com/blog/posts/2008/10/10/What-are-.wixlibs-and-why-would-you-use-them

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top