2009-06-22 6 views
5

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

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

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

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

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

ответ

2

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

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

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

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

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

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

13

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

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

Приветствия

[править] это верно для VS 2008 SP1 Haven» t попробовал это на других версиях, так что, надеюсь, вы используете одну и ту же версию VS или работает для версии, которую вы используете.

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

+0

Отлично, спасибо! Это должно быть отмечено как ответ. –

+1

Правила замены файлов [здесь] (http://msdn.microsoft.com/en-us/library/aa370531(v=VS.85).aspx). – CyberMonk

+0

Использование VS2010 SP1. Это не работает для меня ... Файл заменяется, даже если для параметра «Постоянный набор» установлено значение true! Он заменяется, когда дата/время файла на диске старше даты времени создания пакета. В VS2010, а не SP1, он был заменен, когда время даты файла на диске было старше, чем дата времени файла, используемого для создания пакета. Время установки исходного файла на 01/01/2001 разрешило мне много неприятностей, но оно больше не работает !!! –

 Смежные вопросы

  • Нет связанных вопросов^_^