C # Deployement, сохраняющий файлы поверх установки - PullRequest
0 голосов
/ 23 июня 2009

Я создал проект установки и развертывания с использованием Visual Studio и установил установку. После установки я копирую несколько файлов (XML), которые при использовании приложения настраиваются программно. Теперь, если пользователь переустанавливает эту настройку снова, мне нужно спросить пользователя, нужно ли перезаписывать или сохранять эти настроенные файлы

Есть идеи, как этого добиться?

Спасибо и С уважением, Фран

Ответы [ 2 ]

2 голосов
/ 23 июня 2009

Просмотрите правила управления версиями файлов для установщика Windows.

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

Я бы предложил несколько других переменных, которые необходимо учитывать, чтобы убедиться, что все работает так, как вы ожидаете: значительное или незначительное обновление и свойство REINSTALLMODE .

1 голос
/ 30 июня 2009

Я считаю, что лучший способ приблизиться к этому сценарию - реализовать логику «сохранить изменения» в вашем приложении, а не через настройку. Это позволяет избежать усложнения вашей настройки и дает больший контроль над процессом конфигурации, поскольку вся логика встроена в ваш основной EXE-файл. Это означает, что вы можете пройти весь процесс и отладить его обычным способом разработки.

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

  • % ProgramFiles% \ MyCompany \ MyApp \ MyConfig *. *

Тогда ваше приложение может при запуске определить, существуют ли существующие конфигурационные файлы в профиле пользователя (или в доступном для записи общем местоположении ), и спросить пользователя, должны ли новые конфигурационные файлы перезаписать существующий конфиг или нет. Вы также можете легко реализовать функции резервного копирования для старой конфигурации.

Чтобы задать вопрос только один раз для пользователя после развертывания , обычное приложение должно пометить HKLM с последней установленной версией приложения и затем написать соответствующий флаг в HKCU, когда операция копирования завершена или пользователь отклонил ее:

  • HKLM \ Software \ MyCompany \ MyApp \ Version = 2.0.0
  • HKCU \ Software \ MyCompany \ MyApp \ Version = 1.0.0

В вышеприведенном сценарии версия 2.0.0 приложения была установлена, но копия конфигурации для каждого пользователя еще не запущена для данного пользователя. После запуска версия HKCU будет установлена ​​на 2.0.0, и операция не будет выполняться снова, пока HKLM не будет увеличен.

...