Как убедиться, что мое приложение winform перезаписывает старые версии? - PullRequest
8 голосов
/ 08 февраля 2010

Я создал установочный пакет msi для своего проекта из проекта развертывания VS2008. но у меня возникают проблемы при обновлении установок, ранее установленная версия не перезаписывается. Как убедиться, что ранее установленные версии были перезаписаны?

Ответы [ 4 ]

12 голосов
/ 23 октября 2013

(Оливер ответит правильно, но я хотел добавить фотографии и некоторые другие подробности)

Выберите проект установки в вашем решении , затем откройте панель Свойства (вкладка рядом с Панелью инструментов):

enter image description here

  • Убедитесь, что DetectNewerInstalledVersion имеет значение true (по умолчанию)
  • Установить InstallAllUsers в true
  • Установить RemovePreviousVersions в true
  • Обновите Version число и нажмите Enter
  • После того, как вы нажмете Enter, Visual Studio спросит, хотите ли вы сгенерировать новый GUID для ProductCode, нажмите Да

Кроме того, вам необходимо обновить номера версий для каждого проекта в вашем решении , поскольку установщик заменит DLL , только если их номер версии был увеличивается:

  • Откройте AssemblyInfo.cs каждого проекта и обновите AssemblyVersion и AssemblyFileVersion числа

Или лучше:

  • Удалите AssemblyVersion и AssemblyFileVersion строк из каждого проекта AssemblyInfo.cs
  • Ссылка на файл VersionInfo.cs в вашем решении с этими двумя строками
  • Пошаговая инструкция для вышеперечисленного: Правильный путь к версии ваших сборок

Щелкните правой кнопкой мыши проект установки и выберите Свойства (другой диалог Свойства ):

  • Установить Установщик Windows 4.5 как Предварительное условие вместо значения по умолчанию Visual Studio Установщик Windows 3.1

Я не уверен, необходимы ли все эти шаги, и могут быть другие способы настроить это, но вышеописанные шаги работают для меня.

12 голосов
/ 08 февраля 2010
  1. В Visual Studio выберите проект установки в обозревателе решений
  2. Открыть окно свойств
    • не нажимайте правой кнопкой мыши и выбирайте свойства.
    • выберите Вид - Окно свойств
  3. установить для RemovePreviousVersions значение true
  4. увеличить версию на большее число
  5. выберите да в появившемся окне сообщения

Если вы создали и развернули эту новую установку, установка с более старым номером версии будет удалена.

Важно: номер версии установки полностью независим от номера версии вашего приложения или сборки!

0 голосов
/ 19 февраля 2010

Нам нужно установить свойство REINSTALLMODE нашего msi-файла в amus.

Ниже приведена ссылка, чтобы узнать больше о значении слова «amus». http://msdn.microsoft.com/en-us/library/aa371182%28VS.85%29.aspx

Есть два способа сделать это.

  1. Используя msiexec.exe, который поставляется с .NET SDK (если у вас VS 2005 или VS 2008, он будет поставляться с ним, просто перейдите в командную строку Visual Studio и вы найдете его там)

как только вы найдете msiexec.exe, просто введите следующую команду, чтобы установить для свойства REINSTALLMODE значение amus для вашего установщика.

msiexec.exe / i foo.msi REINSTALLMODE = amus

0 голосов
/ 08 февраля 2010

Установщик Windows встроил проверки ваших файлов, чтобы убедиться, что версия выше, чем предыдущая версия этого файла. Если это не так, установщик Windows не будет перезаписывать его. Более подробную информацию о том, как установщик Windows управляет версиями, можно найти в этой статье MSDN:

http://msdn.microsoft.com/en-us/library/aa368599%28VS.85%29.aspx

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