Поделиться через


Предотвращение установки старого пакета поверх более новой версии

Пакеты обновления установщика Windows можно создать, чтобы не устанавливать основные обновления, если у пользователя уже установлена более новая версия. Процедура в этом разделе может препятствовать только понижениям, которые могут быть вызваны запуском пакета крупного обновления. Эта процедура использует действие FindRelatedProducts, которое выполняется только при первой установке и не выполняется в режиме обслуживания (также называемом переустановкой). Так как незначительные обновления выполняются с помощью переустановки, эта процедура не может использоваться для определения того, пытается ли дополнительный пакет обновления перейти на более раннюю версию приложения. Для получения дополнительной информации см. Подготовка заявки для будущих крупных обновлений.

Чтобы предотвратить установку старого пакета поверх новой версии

  1. Введите свойство UpgradeCode для группы связанных продуктов, которые могут быть доступны для получения этого обновления в столбце UpgradeCode таблицы обновления .

  2. Введите битовый флаг msidbUpgradeAttributesOnlyDetect в столбце "Атрибуты" таблицы обновления .

  3. Введите версию обновления, предоставляемую этим пакетом, в столбец VersionMin таблицы обновления . Оставьте столбец VersionMax пустым.

  4. Введите имя свойства, которое необходимо задать действием FindRelatedProducts Action в столбец ActionProperty таблицы Upgrade.

  5. Добавьте свойство SecureCustomProperties и свойство, указанные в столбце ActionProperty таблицы обновлений, в таблицу свойств .

  6. Добавьте пользовательский тип действия 19 после действия FindRelatedProducts в таблице InstallExecuteSequence. Включите запись в таблицу CustomAction для этого действия и введите текст, отображаемый в столбце Target. Настраиваемое действие типа 19 встроено в установщик, поэтому код для записи отсутствует.

  7. Введите имя ActionProperty в столбец "Условие" записи в таблице InstallExecuteSequence, которая содержит тип пользовательского действия 19. При этом настраиваемое действие выполняется только в том случае, если таблица обновления обнаруживает, что установлена более новая версия.

    Например, пакет установщика Windows, который обновляет группу сопутствующих продуктов до версии 3.0, может включать следующие записи в таблицы Upgrade, CustomAction, InstallExecuteSequenceи Property. Все связанные продукты в группе имеют один и тот же UpgradeCode, но установщик не устанавливает этот пакет обновления, если на компьютере уже установлена версия более 3.0. В этом случае установщик представляет сообщение об ошибке, а установка завершается ошибкой. Пакет обновления версии 3.0 устанавливается поверх версий 1.0 и 2.0.

    Апгрейд таблицы

    Код обновления VersionMin VersionMax Язык Атрибуты Убирать ActionProperty
    {E7BE6D45-49FF-4701-A17E-BDCC98CE180D} 3.0   msidbUpgradeAttributesOnlyDetect НАЙДЕН НОВЫЙ ПРОДУКТ
    {E7BE6D45-49FF-4701-A17E-BDCC98CE180D} 1.0 3.0 msidbUpgradeAttributesVersionMinInclusive Обновление найдено

     

    таблица CustomAction

    Действие Тип Источник Цель
    CA1 19 Уже установлено более высокое обновление.

     

    Таблица InstallExecuteSequence

    Действие Состояние Последовательность
    НайтиСвязанныеТовары 200
    CA1 Обнаружен новый продукт 201

     

    таблица свойств

    Свойство Ценность
    SecureCustomProperties Найден новый продукт; Найдено обновление