Повторное использование компонентов WIX для ускорения свечи / света - PullRequest
8 голосов
/ 30 июля 2009

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

Я пытался создать файл mwm для карт, но когда я ссылаюсь на них в wxs, они связываются с помощью света в основной файл .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" />

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

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

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

Спасибо, David

1 Ответ

12 голосов
/ 31 июля 2009

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

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

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

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

...