Шаблон, который мне нравится использовать, - создание точки расширения в моей программе установки WiX, которая называется Extension.wxs
.Версия этого файла по умолчанию (или standard ) выглядела следующим образом:
<?xml version="1.0" encoding="utf-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Fragment>
<DirectoryRef Id="INSTALLLOCATION">
<!-- Setup all of the extension components here. -->
<!-- For example...
<Component Id="INSERT_COMPONENT_ID_HERE" Guid="{8451AFA1-5185-468D-B0A0-650494251D8F}">
<File Id="INSERT_FILE_ID_HERE" KeyPath="yes" Source="SomeExtension.dll" />
</Component> -->
</DirectoryRef>
</Fragment>
<Fragment>
<ComponentGroup Id="ExtensionComponentGroup">
<!-- Reference components that are extending the standard product here -->
<!-- <ComponentRef Id="INSERT_COMPONENT_ID_HERE" /> -->
</ComponentGroup>
</Fragment>
</Wix>
Где бы вы ни указали свой Feature
для настройки, вы бы добавили ссылку на негоExtensionComponentGroup
, вот так:
<Feature Id="MyMainFeature"
Title="My Main Feature"
Level="1"
Description="An awesome feature, needed to run the application.">
<ComponentGroupRef Id="MyMainComponentGroup" />
<ComponentGroupRef Id="ExtensionComponentGroup" />
</Feature>
В моем случае я просто использую набор скриптов Powershell для построения моего установщика, потому что это упрощает динамическое определение того, что вводить в CLI WiX Toolset.,Итак, мой стандартный вызов candle.exe
будет выглядеть следующим образом:
"C:\Program Files (x86)\WiX Toolset v3.11\bin\candle.exe" -out .\obj .\src\Product.wxs .\src\Extension.wxs
Однако, когда мне нужно настроить установщик с файлами, специфичными для клиента, я просто изменяю командную строку так, чтобы она указывала наНастраиваемый файл Extension.wxs
(своего рода «впрыскивание» его в конвейер сборки):
"C:\Program Files (x86)\WiX Toolset v3.11\bin\candle.exe" -out .\obj .\src\Product.wxs .\SomeClientWithSpecialNeeds\Extension.wxs
Настройка этих вызовов командной строки становится намного проще при использовании Powershell, но для этого я опустил сценарии Powershellпростоты.
Итак, я предлагаю вам представить содержимое вашего zip-файла в виде отдельных элементов Component
в отдельном файле Extension.wxs
, который вы вставляете в конвейер сборки вашего установщика.Эти компоненты хранятся в ComponentGroup
, на который ссылается соответствующий Feature
.Создав подходящий файл по умолчанию (пустой, без компонентов) Extension.wxs
, вы все равно можете выполнить сборку без каких-либо пользовательских компонентов.Другое преимущество использования этого шаблона заключается в том, что все дополнительные компоненты будут удалены во время удаления продукта, и вам не придется писать какие-либо нестандартные пользовательские действия, которые увеличивают накладные расходы на обслуживание вашего установщика!
Надеюсь, это кому-нибудь поможет.