Предотвращение необходимости патча в доступе к исходному источнику установки
Невозможно устранить все обстоятельства, при которых приложению исправления может потребоваться доступ к исходному источнику установки.
Соблюдайте следующие моменты, чтобы свести к минимуму вероятность того, что исправление потребует доступа к исходному источнику:
- Используйте только исправления для всего файла. Это устраняет необходимость создания двоичных исправлений для всех ранее выпущенных версий файла. Обратите внимание, что патчи для целых файлов, как правило, больше по размеру, чем двоичные патчи. Вы можете легко задать исправление для всего файла, создав свойство IncludeWholeFilesOnly со значением 1 (один) в файле свойств создания исправлений (PCP).
- Убедитесь, что ни одно пользовательское действие не обращается к исходному расположению.
- Убедитесь, что действие ResolveSource является условным, чтобы оно выполнялось только при необходимости или не присутствует вообще.
- Заполните таблицы MsiFileHash для всех несвершенных файлов. Средство SDK установщика Windows, Msifiler.exe, может легко сделать это для вас.
- Убедитесь, что все файлы имеют правильную версию и языковые сведения. Средство SDK установщика Windows, Msifiler.exe, может легко сделать это для вас.
Требования к источнику при исправлении
Доступ к исходным источникам установки может потребоваться для применения исправления в следующих случаях:
Исправление применяется к функции, которая в настоящее время выполняется из источника. В этом случае функция переходит из состояния запуска из источника в локальное состояние.
Исправление применяется к компоненту с отсутствующим или поврежденным файлом.
Исправление применяется к файлам в компоненте, который также содержит неверсионированные файлы без записей MsiFileHash. Заполненная таблица MsiFileHash требуется, чтобы предотвратить ненужное повторное копирование неверсифицированных файлов из исходного расположения.
Пакет обновления был применён с параметром REINSTALLMODE в режиме amus или emus. Этот параметр является опасным в том, что он выполняет операции копирования файлов независимо от версии файла. Это может привести к понижению количества файлов и почти всегда требует источника. Рекомендуемое значение REINSTALLMODE — omus.
Кэшированный пакет для продукта отсутствует. Кэшированный пакет необходим для приложения исправления. Кэшированный пакет хранится в папке %windir%\Installer.
Пакет создается для вызова действия ResolveSource Action. Обычно это действие следует избегать или условно использовать, так как его выполнение всегда приводит к доступу к источнику.
Пакет имеет настраиваемое действие, которое пытается получить доступ к источнику тем или иным образом. Наиболее распространенным примером является пользовательское действие типа 23 для одновременной установки.
Заметка
Для установки приложений, предназначенных для выпуска для общественности, одновременные установки не рекомендуются. Сведения об одновременных установках см. в одновременные установки.
Пакет исправлений состоит из двоичных исправлений, которые не применяются к текущей версии файла на компьютере.
Рассмотрим следующий пример, когда установщик Windows требует доступа к исходному источнику при применении исправления:
- Установите версию RTM примера продукта.
- Примените исправление Qfe1.msp к компьютеру. Это исправление версии 1.0 Example.dll до версии 1.1.
- Представлено новое исправление 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 установщик выборочно сохраняет базовые сведения о файлах при обновлении. Дополнительные сведения о базовом кэше см. в уменьшении размера исправлений.