2009-07-30 4 views
8

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

Я попытался создать файл 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, но для меня это похоже на anti-wix. Я бы хотел, чтобы файлы были удалены, когда они больше не нужны.

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

Спасибо, David

ответ

12

Ваша интуиция абсолютно ведет вас в правильном направлении. Функция, которую вы ищете, называется «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

+0

Eureka! Только то, что я искал. Кажется, что не работает, если шкафы НЕ встроены - как-то свет удаляет .cab-файл, а затем ищет его. В идеале я бы хотел, чтобы он работал со встроенными шкафами, но это, конечно, немного быстрее, чем раньше. –

+0

Хм, это поведение звучит как ошибка. Не могли бы вы открыть ошибку (http://wix.sourceforge.net) с подробностями. Мы должны уметь встраивать в WiX v3.5. –

+0

Благодарим вас за отличный совет ([docs] (http://wixtoolset.org/documentation/manual/v3/howtos/general/optimizing_builds.html))! В моем случае это сократило время для создания пакета msi примерно с 50-х до 10 с (~ 200 файлов/~ 100 МБ). – CodeFox