Одновременные установки

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

Параллельное действие установки устанавливает другой пакет установщика Windows во время текущей установки. Параллельная установка добавляется в пакет путем создания параллельного действия установки в таблицу CustomAction и планирования этого настраиваемого действия в таблицах последовательностей. Поле Target таблицы CustomAction содержит строку параметров открытых свойств, используемых параллельной установкой. Поле Source таблицы CustomAction определяет параллельный пакет. Действие параллельной установки может переустановить или удалить только приложение, установленное текущим пакетом установки приложения.

Тип действия параллельной установки указывается в поле Тип таблицы CustomAction. В зависимости от типа настраиваемого действия пакет для параллельного приложения может находиться в подкатаге пакета main, в виде файла в расположении, указанном свойством, или в качестве объявленного приложения на компьютере пользователя. Следующие типы пользовательских действий выполняют параллельную установку.

Тип настраиваемого действия Описание
Тип настраиваемого действия 7 Параллельная установка продукта, размещенного в пакете установки.
Тип настраиваемого действия 23 Параллельная установка пакета установщика в текущем дереве исходного кода.
Тип настраиваемого действия 39 Параллельная установка объявленного пакета установщика.

 

При параллельной установке используется тот же пользовательский интерфейс и параметры ведения журнала, что и main установки.

Между действиями InstallInitialize и InstallFinalize последовательности действий установки main следует размещать параллельные действия установки. После отката установки main установщик также откатит параллельную установку. Использование отложенного выполнения с одновременными действиями установки не требуется, так как установщик объединяет сведения о откате из параллельных и main установок. Все изменения отменяются при откате установки.

Возвращаемые значения для параллельных действий установки такие же, как и для других пользовательских действий. См . раздел Возвращаемые значения настраиваемого действия.

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

После того как установщик начнет параллельную установку, он блокирует все остальные установки до завершения параллельной установки и перед продолжением установки main. Установщик может выполнять параллельные установки только как синхронные пользовательские действия. См. раздел Синхронные и асинхронные пользовательские действия. Флаги параметров, описанные в разделе Параметры обработки возврата пользовательского действия , должны иметь значение none (+0) или msidbCustomActionTypeContinue (+64).

Параллельное действие установки может установить приложение для локального запуска, для запуска из источника, для переустановки или удаления таким же образом, как при использовании MsiInstallProduct для обычной установки. Чтобы указать тип установки, передайте свойство ADDLOCAL, ADDSOURCE, REINSTALL или REMOVE в действие параллельной установки.

Параллельные действия установки можно создавать парами: одно действие используется для установки, а другое — для удаления параллельной установки. Для установки обычно используется тип настраиваемого действия 7 или тип настраиваемого действия 23 . Тип пользовательского действия 39 обычно используется для удаления параллельной установки при удалении родительского продукта. Запись для настраиваемого действия удаления в таблице CustomAction может содержать GUID кода продукта в поле Источник и "REMOVE=ALL" в поле Целевой объект. Два пользовательских действия должны быть созданы в таблице последовательности действий со взаимоисключающими условиями. Например, настраиваемое действие, устанавливающее продукт, может содержать "НЕ установлено" в поле Условие, а настраиваемое действие, удаляющее параллельную установку, может иметь значение REMOVE="ALL" в поле Условие.

Нет метода для запроса стоимости пакета. Это усложняет затраты на параллельные установки. В таблицу ReserveCost необходимо добавить строки, чтобы указать папки и наихудшие затраты компонента, связанные с параллельной установкой.

Единственными параметрами обработки возврата настраиваемых действий , доступными для параллельных действий установки, являются none (+0) или msidbCustomActionTypeContinue (+64).

Обратите внимание, что родительская установка не может вызывать собственный пакет как действие параллельной установки.

Обратите внимание, что если установка на отдельный компьютер пытается запустить параллельную установку для каждого пользователя, установщик по умолчанию регистрирует родительскую установку как на пользователя. Это может привести к неправильному удалению приложения установщиком, так как установщик пытается удалить приложение для каждого компьютера, когда оно фактически зарегистрировано как на пользователя. Чтобы принудительно отслеживать состояние параллельной установки, введите ALLUSERS="[ALLUSERS]" в столбце Target таблицы CustomAction. В этом случае параллельная установка выполняется для каждого компьютера, если родительский объект — для каждого компьютера, а одновременная установка выполняется для каждого пользователя, если родитель — на пользователя.

Разработчики должны учитывать следующие предупреждения при разработке параллельных установок.

  • Параллельные установки не могут совместно использовать компоненты.
  • Административная установка также не может содержать параллельную установку.
  • Установка исправлений и обновлений может не работать с параллельными установками.
  • Установщик может не стоить должным образом параллельная установка.
  • Интегрированные progressBars нельзя использовать с параллельными установками.
  • Ресурсы, которые должны быть объявлены, не могут быть установлены при параллельной установке.
  • Пакет, выполняющий параллельную установку приложения, должен также удалить параллельное приложение при удалении родительского продукта.

Чтобы предотвратить установку пакета в качестве параллельной установки, добавьте в таблицу LaunchCondition любой из следующих условных операторов. Это предотвращает установку пакета с помощью параллельного действия установки, выполняемого другой установкой. Это не препятствует удалению пакета с помощью действия RemoveExistingProducts . См. также свойства ParentOriginalDatabase и ParentProductCode .

"Not ParentProductCode"
"Not ParentOriginalDatabase"