Можем ли мы указать программе установки Visual Studio сохранить существующие файлы для повторной установки? - PullRequest
5 голосов
/ 22 июня 2009

У меня есть приложение Windows Forms с установщиком (.msi), уже созданным в Visual Studio. Сейчас я создаю новый установщик для версии 2.0 со свойством RemovePreviousVersions, установленным в значение true.

Теперь, когда я устанавливаю 2.0 поверх 1.0, он удаляет 1.0 и полностью устанавливает 2.0.

Есть ли способ сообщить установщику, что если вы обнаружите, что некоторые файлы уже установлены (например, XML-файлы, используемые для данных), то не отменяйте их?

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

  • Установка с нуля для новых пользователей
  • Существующие пользователи будут обновляться, но не теряют свои настройки

Ответы [ 2 ]

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

Проект развертывания в VS не перезаписывает файлы. Случается так, что поскольку для параметра RemovePreviousVersions установлено значение true, при изменении версии программного файла и GUID ProductCode проекта установки он сначала удалит предыдущую версию, а затем выполнит чистую установку новой версии.

Чтобы некоторые файлы не перезаписывались, я обычно исключаю их из выходных файлов контента или первичных файлов (где бы они ни находились), а затем добавляю их отдельно в проект установки. Делая это, вы можете индивидуально установить свойства для этих файлов. Свойство, которое вы ищете, называется Permanent, которое, если установлено в true, никогда не удалит рассматриваемый файл и, следовательно, никогда не перезапишет его новой версией. Единственный недостаток - это то, что при удалении продукта постоянные файлы не будет удален из их целевого расположения, но в моем случае (обычно это локальные файлы БД), это хорошо;)

Ура! * * 1005

[править] Вышесказанное верно для VS 2008 SP1. Не пробовал его в других версиях, так что, надеюсь, вы используете ту же версию VS или она работает для той версии, которую вы используете.

[edit2] О, вы также можете использовать свойство «Condition» для достижения чего-то похожего. Если вы сделаете это, убедитесь, что для параметра «Transitive» установлено значение True, чтобы условие всегда оценивалось. Не пробовал это с Условиями, но это еще один вариант, на который вы можете посмотреть. Помимо этих двух, я думаю, что это в значительной степени это для проектов развертывания VS.

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

Когда я был в подобной ситуации, я делал:

Файлы, которые были настроены каждым пользователем и НЕ должны быть затронуты установщиком, НЕ были включены в MSI (НЕ в проект установки Visual Studio). Когда приложение было запущено в первый раз, я сгенерировал XML-файлы с помощью кода.

Файлы, которые были статическими (например, данные, которые использовались для заполнения выпадающих списков), я включил в MSI, и я могу обновить их, создав новый MSI с помощью Visual Studio.

По сути, не включайте настраиваемые файлы в ваш проект MSI. Создайте их в коде для новых пользователей.

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

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...