Wix сохранить файл настроек приложения при обновлении

Я использую Wix для создания.msi для моей установки. Я хочу сохранить файл конфигурации, когда установщик MSI делает серьезное обновление.

Это соответствующие части из моего файла Product.wxs: Мой атрибут обновления:

<MajorUpgrade      
  Schedule="afterInstallInitialize"
  DowngradeErrorMessage="A newer version of [ProductName] is already installed." />

И компонент, который, по моему пониманию, должен предотвращать удаление моего файла конфигурации:

<DirectoryRef Id="INSTALLFOLDER">
  <Directory Id="Content" Name="Content">
  <Component Id="Config" Guid="432FF769-1011-47CF-BFFD-0BF780768C45">      
    <File Source="$(var.MO.Packing.Wpf.TargetDir)\Content\StationConfig.xml" Name ="StationConfig.xml"
      Id="config" KeyPath="yes" />
  </Component>
 </Directory>
</DirectoryRef>

Добавляя мой атрибут Feature, если он подходит:

<Feature Id="MainApplication" Title="Main Application" Level="1">
  <ComponentRef Id="myapplication.exe" />
  ...
  <ComponentRef Id="Config" />
  ...
</Feature>

При создании этой логики я следовал этому руководству: http://blogs.msdn.com/b/astebner/archive/2008/10/19/9006538.aspx

Также прочтите некоторые другие вопросы и источники: Как сохранить файл конфигурации при значительном обновлении в wix v3.8?

https://msdn.microsoft.com/library/aa371197.aspx

и еще немного...

Кто-нибудь может определить проблему?

Я бы добавил любые другие важные данные в мой вопрос, если это необходимо.

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

1 ответ

Вы не сказали точно, в чем проблема, поэтому я буду считать, что файлы конфигурации заменяются файлами из новой установки обновления.

Правило, которым вы пытаетесь воспользоваться, таково:

https://msdn.microsoft.com/en-us/library/aa370531(v=vs.85).aspx

Есть связанное правило, если есть проверка хеша, но правило даты все еще применяется.

Так что вам просто нужно организовать раннее упорядочение последовательностей Major Upgrade, например, после InstallInitialize. Затем обновление устанавливается поверх старого продукта, следуя правилам замены файлов. Старые измененные файлы конфигурации не будут заменены.

Если это не работает, возможно, файлы (в более старом продукте) не были изменены после их первой установки, поэтому вы, вероятно, просто устанавливаете другую копию, и ничего не потеряно. Выполните обновление с подробным журналом, найдите имена файлов и посмотрите, что они говорят о перезаписи:

msiexec / i [путь к файлу MSI] /l*vx [путь к файлу текстового журнала]

Другие вопросы по тегам