Wix: перемещение данных из ProgramFilesFolder в ProgramData

Мы разрабатываем приложение на C# и упаковываем его с помощью Wix в MSI-файл, который можно установить. Исполняемый файл приложения и файлы.dll устанавливаются в стандартное расположение в ProgramFilesFolder.

При запуске приложение создает локальный файл.sdf (базу данных), если он не существует.

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

Теперь проблема в том, что файл.sdf в настоящее время также находится в ProgramFilesFolder. Мы не хотим "хранить дорожный багаж в моторном отсеке", поэтому мы перемещаем этот файл.sdf в ProgramData.

Таким образом, мы собираемся сделать это изменение в коде приложения - использовать файл.sdf по другому пути. При следующем обновлении нам нужно переместить существующий файл.sdf из ProgramFilesFolder в ProgramData.

Вопрос - каков идеальный способ перемещения этого файла?

1) В коде установки Wix - распознать, происходит ли обновление со "старой" версии (более старой, чем версия, в которой мы изменили расположение файла.sdf), до "новой" (более новой или равной версии изменить) и в этом случае переместить файл. Хорошо, что Wix "знает" все номера версий и может сделать перемещение условно на их основе.

2) В коде приложения C# - это, вероятно, проще по сравнению с написанием CustomAction в Wix. Но код приложения ничего не знает о версиях, поэтому мы не можем использовать ту же логику использования "старой" и "новой" версии, что и в случае с Wix. Таким образом, мы можем использовать только общую логику, например, использовать файл из нового местоположения, если он существует там, в противном случае проверить, существует ли файл в старом месте, а затем переместить его в новое местоположение, если файл присутствует в обоих - игнорировать файл из старое местоположение и просто использовать файл в новом месте.

Не могли бы вы помочь в выборе лучшего способа?

Есть ли недостатки \ риски с описанными подходами?

Есть лучшее решение?

1 ответ

Я бы все контролировал с помощью WIX, так как вы можете устанавливать свойства и условия для получения желаемого поведения в процессе установки.

Я рекомендую вам начать здесь Проверка на старые

Изменение, которое вам нужно будет сделать в ЦС, состоит в том, чтобы перемещать или нет файл в зависимости от найденной версии.

Если требуется большее изменение, посмотрите на это.

НТН

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