Причина такого переезда заключается в том, что у нас возникали проблемы при каждом обновлении, когда файлы конфигурации перезаписывались. Поэтому мы решили скопировать их во временную папку с помощью специального действия (предустановка) и после установки перенесли обратно в папку установки (после установки). Это будет сделано при каждом обновлении. До сих пор это работало хорошо. Единственное, что мы изменили, это заменили xcopy на robocopy, и теперь на udpate он по-прежнему использует старое настраиваемое действие, даже в файлах журнала написано «robocopy», но старые имена файлов в конфигурационных папках все еще создаются ... При более глубоком рассмотрении, когда Я вернулся в офис. Пока спасибо

наружили странное поведение с помощью WIX Setup Tools. Мы развернули несколько основных версий (от 2.2.0 до 2.2.4). Для 2.2.5 мы изменили небольшие вещи в пользовательских действиях (раньше мы использовали XCOPY, теперь мы используем RoboCopy, потому что здесь есть команда «MOVE», а не только копия).

Но когда мы теперь обновляем с 2.2.4 до 2.2.5, программа установки все еще использует старую команду Copy вместо новой команды MOVE, но этого не может быть, потому что 2.2.5 не имеет никакой команды Copy. Если я разверну 2.2.6 (идентично 2.2.5) и обновлюсь с 2.2.5, он использует новый процесс обновления ... Похоже, что обновление использует старый MSI.

Нашел это на ТАК

Есть ли способ предотвратить такое поведение? Это полностью нарушает процесс обновления, поскольку существующие файлы конфигурации не копируются правильно при обновлении.

Мы не можем заставить клиента очистить реестр или удалить кеш форм MSI-файлов по GUID ...

Любая помощь приветствуется. заранее спасибо

ОБНОВЛЕНИЕ: новое пользовательское действие в Product.wxs

<Property Id="C_TEMP" Value="C:\Temp" />
      <Property Id="ROBOCOPY_EXE">robocopy.exe</Property>
      <CustomAction Id="CopyToTemp" Property="ROBOCOPY_EXE" Return="ignore" ExeCommand='"[INSTALLDIR]\Configuration" "[C_TEMP]\ServerSettings" ServerSettings.json' />
      <CustomAction Id="CopyFromTemp" Property="ROBOCOPY_EXE" Return="ignore" ExeCommand='"[C_TEMP]\ServerSettings" "[INSTALLDIR]\Configuration" ServerSettings.json /MOVE /IS' />

Старое таможенное действие

<Property Id="C_TEMP" Value="C:\Temp" />
  <Property Id="XCOPY_EXE">xcopy.exe</Property>
  <CustomAction Id="CopyToTemp" Property="XCOPY_EXE" Return="ignore" ExeCommand='"[INSTALLDIR]\Configuration\ServerSettings.json" "[C_TEMP]\ServerSettings.json.bak*" /YIR' />
  <CustomAction Id="CopyFromTemp" Property="XCOPY_EXE" Return="ignore" ExeCommand='"[C_TEMP]\ServerSettings.json.bak" "[INSTALLDIR]\Configuration\ServerSettings.json*" /YIR' />

Впоследствии код не изменился до сих пор

<InstallExecuteSequence>
  <Custom Action="CopyToTemp" Before="InstallInitialize">Installed AND (NOT REMOVE="ALL" OR UPGRADINGPRODUCTCODE)</Custom>
  <Custom Action="CopyFromTemp" Before="SetVersionsInRegistry">NOT Installed OR Installed AND (NOT REMOVE="ALL" OR UPGRADINGPRODUCTCODE)</Custom>

.....
</InstallExecuteSequence>

Ответы на вопрос(2)

Ваш ответ на вопрос