Как заставить проект развертывания обновлять файлы во время установки более новой версии? - PullRequest
3 голосов
/ 01 ноября 2010

У меня есть проект развертывания для моего приложения VS2008 C #.При установке новой версии моего приложения я хочу убедиться, что файлы обновляются в соответствии с файлами, содержащимися в установщике.

Я хочу, чтобы мой установщик автоматически удалял любую старую версию установленного приложения.Чтобы сделать это, я следую этой процедуре (также описанной здесь ):

  1. Установите для RemovePreviousVersions значение True
  2. Установите для DetectNewerInstalledVersion значение True
  3. Увеличьте значениеВерсия программы установки
  4. Выберите «Да», чтобы изменить код продукта

. Для сборок убедитесь, что для AssemblyVersion установлена ​​более высокая версия:

[assembly: AssemblyVersion("1.0.*")]

Всеработает как задумано, за исключением моих файлов конфигурации (XML-файлов).Поскольку я не могу найти «версию» этих файлов, я не могу убедиться, что файлы обновляются, если они были изменены на целевом компьютере.

Есть ли способ сделать это и как?

ОБНОВЛЕНИЕ: Я попробовал найденный подход / решение / обходной путь здесь

  1. Включите файл непосредственно в проект со следующими свойствами: "Действие построения -> Файл содержимого "и" Копировать в выходной каталог -> Копировать всегда "
  2. Затем добавьте его в проект развертывания через Проект вывода-> База данных-> Файлы содержимого

К сожалению, это не имело никакого значения.Поведение точно такое же.

Ответы [ 4 ]

3 голосов
/ 03 ноября 2010

Добавьте следующее свойство в таблицу свойств MSI: Недвижимость REINSTALLMODE со значением amus

Примечание. Это приведет к тому, что все файлы в MSI (версионные и неверсионные) будут перезаписывать файлы в системе.

2 голосов
/ 01 ноября 2010

Если вы хотите использовать Orca (может быть другой способ сделать этот метод, но это единственный, который я знаю), вы можете установить директивы RemoveFile.

См. Здесь, как правило, легкий документ MSDN - может быть отправной точкой. http://msdn.microsoft.com/en-us/library/aa371201.aspx

В качестве альтернативы вы всегда можете создать очень простой исполняемый файл загрузчика, который просто вызывает «msiexec / i REINSTALLMODE = oums» (или любой другой параметр командной строки, необходимый). Назовите его setup.exe, если хотите ...

Лучшим вариантом в долгосрочной перспективе может быть переход на InstallShield или аналогичный - VS2010 включает облегченную версию IS, и я считаю, что они уходят от проектов vdproj.

1 голос
/ 02 ноября 2010

Вы пробовали найти подход / решение / обходной путь здесь ?

  1. Включить файл непосредственно в проект со следующим Свойства: "Build Action -> Содержимое file "and" Copy to Output Directory -> Копировать всегда "
  2. Затем добавьте его в развертывание. проект через проект Выходные данные-> База данных-> Файлы содержимого
0 голосов
/ 01 ноября 2010

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

Я полагаю, что специально файлы конфигурации не перезаписываются автоматически; принцип в том, что вы обычно не хотите, чтобы конфигурация вашего приложения перезаписывалась при установке новой версии программы ... по крайней мере, без многочисленных предупреждений и / или шансов сначала объединить конфигурацию.

Перезапись конфигурации вашего приложения обновленной версией программы может очень расстроить конечного пользователя (в данном случае администратора веб-сайта).


Кроме того, я знаю, что иногда разработчиком может быть человек, выполняющий развертывание. В таком случае такое поведение может показаться не таким логичным при развертывании одного сайта на одном сервере; но когда роли разделены и / или у вас есть несколько серверов с разными конфигурациями, это может быть спасением.

...