Проект установки Visual Studio 2010 - Незначительное обновление существующей установки - PullRequest
0 голосов
/ 21 июля 2011

Я создал приложение WPF в Visual Studio 2010. Я также создал проект установки для установки этого приложения. Проект установки обрабатывает предварительные условия, копирует двоичные файлы, заполняет меню «Пуск» и рабочий стол, устанавливает ассоциации файлов и значки и т. Д. Все это прекрасно работает.

Сейчас я работаю над средством обновления, которое должно обновить мое приложение до более младшей версии (исправления ошибок и т. Д.). Я использую инфраструктуру NetSparkle для управления процессом обновления. У меня работает сам процесс, но у меня проблемы с созданием обновленного MSI-файла, который делает то, что я хочу.

Вот что я пробовал:

  1. Я создал второй проект установки с целью создания файла «обновления» MSI. Все, что он делает, это копирует новые двоичные файлы. Он имеет одноэкранный пользовательский интерфейс и, очевидно, не обрабатывает предварительные требования, ярлыки, значки, ассоциации файлов и т. Д.
  2. Я убедился, что UpgradeCode совпадает с моим основным установщиком. UpgradeCode проекта установки
  3. Я установил Version выше, чем у моего основного установщика Project Setup

Поэтому я создаю MSI-модуль обновления и подключаю его к процессу обновления NetSparkle. Кажется, это работает, НО это создает вторую запись для моего приложения в Панели управления «Программы и компоненты» (с более высоким номером версии), а также, кажется, сбрасывает настройки конфигурации для моего приложения - мне нужно те, чтобы остаться нетронутыми! Как я уже сказал, это всего лишь небольшое исправление ошибки, а не новая замена.

Что я делаю не так? Может ли кто-нибудь указать мне правильное направление? Мне даже нужен MSI, чтобы просто обновить файлы? (Должен ли я вместо этого использовать патч? Если да, то как мне его создать?)

ОБНОВЛЕНИЕ: я играл с RemovePreviousVersions. Если я установлю false, результат будет таким, как описано выше. Если я установлю его на true, то дублирующаяся запись в «Программы и компоненты» исчезнет, ​​но при этом также будут удалены все ассоциации файлов, значки, меню «Пуск», ссылки на рабочие столы и т. Д., Что мне не нужно. Это также нарушает процесс NetSparkle, так как приложение не запускается автоматически. На самом деле все, что я хочу сделать, - это перезаписать установочные файлы, и это все, независимо от того, обновляет ли пользователь одну минорную версию или X минорных версий.

Ответы [ 2 ]

3 голосов
/ 21 июля 2011

Я бы рекомендовал взглянуть на что-то вроде WIX , чтобы сделать это. Проект VS Setup работает для простых вещей, но сложно разобраться с нюансами установки MSI. С WIX вы получаете детальный контроль над MSI.

Чтобы начать, вы можете использовать один из их инструментов для импорта существующего MSI или начать с одного из их шаблонов. Сначала я начал с импорта из установки VS, а затем скопировал части в один из шаблонов WIX.

На их сайте есть хорошая информация о процессе обновления в их документации .

Вот пост, в котором рассказывается о плюсах и минусах незначительного улучшения . И еще один учебник по wix, связанный с wix .

В моем случае я тоже хотел поддерживать небольшие обновления. Я использую следующее в моем файле WIX для управления логикой обнаружения обновления:

    <!-- 
        This upgrade table will control how and when the installer detect a major upgrade.
    -->
    <Upgrade Id="$(var.UpgradeCode)">
        <UpgradeVersion Minimum="$(var.ProductVersion)" Property="NEWPRODUCTFOUND" OnlyDetect="yes" IncludeMinimum="no" />
        <UpgradeVersion Minimum="1.0.0" Maximum="$(var.ProductVersion)" Property="UPGRADEFOUND" IncludeMinimum="yes" IncludeMaximum="no" />
    </Upgrade>
1 голос
/ 21 июля 2011

Когда для параметра RemovePreviousVersions установлено значение true, вы используете крупное обновление . Таким образом, старая версия автоматически удаляется новой. Если вы хотите использовать серьезное обновление, ваша новая версия должна быть полной и автономной программой установки (она включает в себя предварительные условия, ярлыки, значки, сопоставления файлов и т. Д.).

То, что вы описываете, это исправление . Visual Studio не поддерживает исправления, поэтому вам нужно будет создавать их вручную. Если вам нужно более простое решение, есть коммерческие средства разработки, которые предлагают прямую поддержку как для обновления, так и для исправлений.

...