Поиск и замена WiX в файле конфигурации

Я пытаюсь выполнить установку с помощью WiX, и мне нужно изменить файл конфигурации (не XML или INI) с помощью записей, которые настраиваются в диалоговом окне WiX.

Есть ли хороший способ сделать это? Возможно, мне нужно сделать настраиваемое действие сценария VB?

Ниже приведены соответствующие биты файла wxs:

   <Directory Id="TARGETDIR" Name="SourceDir">
     <Directory Id="ProgramFilesFolder">
         <Directory Id="INSTALLLOCATION" Name="MyApp">
             <Component Id="ap_cfg" KeyPath="yes" Guid="...">
                 <File Id="CONFIGFILE" Source="myConfig.cfg" />
              </Component>
         </Directory>
      </Directory>
   </Directory>

person Adam Tegen    schedule 27.07.2009    source источник


Ответы (2)


В Wix нет встроенной конструкции «Поиск и замена», вам нужно будет написать собственное действие.
Я предлагаю вместо использования VBScript использовать DTF, который позволит вам написать пользовательское действие в .net и отладить его в Visual Studio.

person Shay Erlichmen    schedule 27.07.2009

Итак, вы хотите установить файл конфигурации, динамически изменяя его во время установки?

Вам лучше написать пользовательское действие в собственном/неуправляемом коде, таком как C++, которое считывает различные свойства MSI и записывает их в ваш файл конфигурации. Ни в коем случае не устанавливайте файл с ключевым путем, иначе, как только он будет изменен, он не будет соответствовать исходному хешу и будет восстановлен. Лучше просто записать конфигурацию «по умолчанию» из двоичной таблицы или что-то в этом роде, а затем изменить ее, таким образом, установщик Windows не заботится о том, что вы с ней делаете.

Я бы также не советовал использовать управляемый код для ваших пользовательских действий, используйте C++, и вы избавите себя от много головной боли в будущем. В исходном коде набора инструментов WiX есть несколько очень хороших примеров, которые помогут вам начать работу.

Наконец, прежде чем вы даже подумаете об использовании VBScript, прочитайте, почему VBScript (и Jscript) MSI CustomActions отстой.

person saschabeaumont    schedule 27.07.2009
comment
DTF предоставляет очень хорошее управляемое пользовательское действие. Предполагая, что ваше приложение уже требует .NET, недостатков нет. - person Christopher Painter; 23.10.2013