Я создал приложение WPF в Visual Studio 2010. Я также создал проект установки для установки этого приложения. Проект установки обрабатывает предварительные условия, копирует двоичные файлы, заполняет меню «Пуск» и рабочий стол, устанавливает ассоциации файлов и значки и т. Д. Все это прекрасно работает.
Сейчас я работаю над средством обновления, которое должно обновить мое приложение до более младшей версии (исправления ошибок и т. Д.). Я использую инфраструктуру NetSparkle для управления процессом обновления. У меня работает сам процесс, но у меня проблемы с созданием обновленного MSI-файла, который делает то, что я хочу.
Вот что я пробовал:
- Я создал второй проект установки с целью создания файла «обновления» MSI. Все, что он делает, это копирует новые двоичные файлы. Он имеет одноэкранный пользовательский интерфейс и, очевидно, не обрабатывает предварительные требования, ярлыки, значки, ассоциации файлов и т. Д.
- Я убедился, что
UpgradeCode
совпадает с моим основным установщиком. UpgradeCode проекта установки
- Я установил
Version
выше, чем у моего основного установщика Project Setup
Поэтому я создаю MSI-модуль обновления и подключаю его к процессу обновления NetSparkle. Кажется, это работает, НО это создает вторую запись для моего приложения в Панели управления «Программы и компоненты» (с более высоким номером версии), а также, кажется, сбрасывает настройки конфигурации для моего приложения - мне нужно те, чтобы остаться нетронутыми! Как я уже сказал, это всего лишь небольшое исправление ошибки, а не новая замена.
Что я делаю не так? Может ли кто-нибудь указать мне правильное направление? Мне даже нужен MSI, чтобы просто обновить файлы? (Должен ли я вместо этого использовать патч? Если да, то как мне его создать?)
ОБНОВЛЕНИЕ: я играл с RemovePreviousVersions
. Если я установлю false
, результат будет таким, как описано выше. Если я установлю его на true
, то дублирующаяся запись в «Программы и компоненты» исчезнет, но при этом также будут удалены все ассоциации файлов, значки, меню «Пуск», ссылки на рабочие столы и т. Д., Что мне не нужно. Это также нарушает процесс NetSparkle, так как приложение не запускается автоматически. На самом деле все, что я хочу сделать, - это перезаписать установочные файлы, и это все, независимо от того, обновляет ли пользователь одну минорную версию или X минорных версий.