Управление конфигурацией пользователя в миграциях WIX - PullRequest
0 голосов
/ 26 февраля 2020

Мы создаем проект, который в основном представляет собой Windows Service EXE. Мы используем WIX (с heat) для создания установщика, который создает соответствующие файлы и регистрирует EXE с помощью Windows Services.

Мы приступили к реализации программы обновления программы установки c, что в значительной степени JustWorks (TM) путем установки атрибута Version тега Product в файле .wxs.

Одна проблема, которую я не вижу как управлять файлами конфигурации инструмента.

Инструмент имеет различные настройки конфигурации, которые могут быть изменены из инструмента. Мы используем ASP. NET, который имеет встроенное управление настройками / конфигурациями, а измененные настройки конфигурации объявляются как настройки «Пользователь». Когда мы запускаем сохранение изменений конфигурации, он создает вторичный файл конфигурации, который переопределяет настройки по умолчанию в первичном файле конфигурации.

Первичный файл конфигурации существует в <installRoot>\MyCustomService.exe.config, а вторичный файл конфигурации в <complicated\Path>\vX.Y.Z\user.config. Где X.Y.Z - это номер версии AssemblyInfo, который синхронизируется c с номером WIX Version.

Когда мы устанавливаем новую версию, инструмент начинает искать новый путь для user.config ... и не могу его найти. Таким образом, функционально, установка новой версии сбрасывает всю конфигурацию пользователя :(.


Каков подходящий способ получить установку обновления WIX для поддержки существующей конфигурации?

1 Ответ

1 голос
/ 26 февраля 2020

ASP. NET config поддерживает обновление пользовательских настроек с одной версии на другую, используя метод .Upgrade(). Вам лучше использовать это, а не управлять этим в установщике.

Этот вопрос содержит подробную информацию о том, как управлять этим: Как сохранить настройки user.config в разных версиях сборки в. net?

но основное решение:

if (Settings.Default.UpgradeRequired)
{
    Settings.Default.Upgrade();
    Settings.Default.UpgradeRequired = false;
    Settings.Default.Save();
}

Создав UpdateRequired как пользовательское свойство, существующее только для управления этим процессом

...