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


Запрет исправлению требовать доступа к исходному источнику установки

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

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

  • Используйте исправления только для всего файла. Это избавляет от необходимости создавать двоичные исправления для всех ранее выпущенных версий файла. Обратите внимание, что исправления всего файла, как правило, больше по размеру, чем двоичные исправления. Вы можете легко задать исправление для всего файла, создав свойство IncludeWholeFilesOnly со значением 1 (один) в файле свойств создания исправлений (PCP).
  • Убедитесь, что ни одно из пользовательских действий не обращается к исходному расположению источника.
  • Убедитесь, что действие ResolveSource условно задано, чтобы оно выполнялось только при необходимости или вообще не присутствовало.
  • Заполните таблицу MsiFileHash для всех несвершенных файлов. Это можно легко сделать с помощью пакета SDK установщика Windows, Msifiler.exe.
  • Убедитесь, что все файлы содержат правильные сведения о версии и языке. Это можно легко сделать с помощью пакета SDK установщика Windows, Msifiler.exe.

Требования к источнику при установке исправлений

Для применения исправления может потребоваться доступ к исходным источникам установки в следующих случаях:

  • Исправление применяется к функции, которая в настоящее время выполняется из источника. В этом случае функция переходит из состояния запуска из источника в локальное состояние.

  • Исправление применяется к компоненту с отсутствующим или поврежденным файлом.

  • Исправление применяется к файлу в компоненте, который также содержит несвершенные файлы без записей MsiFileHash. Заполненная таблица MsiFileHash необходима, чтобы предотвратить ненужную повторную копию неверсивных файлов из исходного расположения.

  • Исправление было применено с параметром REINSTALLMODE amus или emus. Этот параметр опасен тем, что выполняет операции копирования файлов независимо от версии файла. Это может привести к уменьшению количества файлов и почти всегда требует наличия источника. Рекомендуемое значение REINSTALLMODE — omus.

  • Отсутствует кэшированный пакет для продукта. Кэшированный пакет необходим для применения исправления. Кэшированный пакет хранится в папке %windir%\Installer.

  • Пакет создается для вызова действия ResolveSource. Как правило, это действие следует избегать или надлежащим образом условить, так как его выполнение всегда приводит к доступу к источнику.

  • Пакет имеет настраиваемое действие, которое пытается каким-либо образом получить доступ к источнику. Наиболее распространенным примером является настраиваемое действие параллельной установки типа 23.

    Примечание

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

     

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

Рассмотрим следующий пример, в котором установщику Windows требуется доступ к исходному источнику при применении исправления:

  1. Установите RTM-версию примера продукта.
  2. Примените исправление Qfe1.msp к компьютеру. Это исправление версии 1.0 Example.dll версии 1.1.
  3. Предоставляется новое исправление Qfe2.msp, которое обновляет Example.dll до версии 1.2 и устаревает Qfe1.msp. Однако исправление было создано только для целевой версии 1.0 Example.dll так как оно было создано с помощью RTM-версии продукта. Example.dll версии 1.2 включает исправление, содержащееся в Example.dll версии 1.1, но MSP-файл был создан между образами RTM и QFE2. Таким образом, при применении Qfe2.msp к компьютеру установщик Windows должен получить доступ к исходному источнику. Двоичное исправление для Example.dll не может применяться к версии 1.1; Он может применяться только к версии 1.0. В результате установщик повторно скопит версию 1.0 Example.dll из исходного расположения, чтобы можно было успешно применить исправление.

Требования к источнику при удалении исправления

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