Ошибка исправления установщика Windows - выполнение последовательности останавливается после первого действия и процесс установки сбрасывается

Я вижу необычный случайный сбой одного из наших исправлений на нескольких сайтах клиентов. Окончательный код ошибки - 1648 (допустимая последовательность не найдена для набора исправлений), что происходит из-за ошибки 2219 (неверный формат базы данных установщика) при попытке прочитать поток сводной информации из одного из преобразований исправлений. Но я подозреваю, что это только побочный эффект более ранней молчаливой ошибки. Все наши патчи используют свойство MinorUpdateTargetRTM, так что в действительности нет ничего для последовательности, так как любые ранее установленные патчи автоматически заменяются. Наши клиенты обычно используют несколько сотен почти одинаковых ноутбуков, и большинство из них установили это обновление просто отлично. В большинстве случаев не удается обновить только одно устройство.

Ключевой раздел журнала ниже. Инициализация завершена, и процесс сервера установщика Windows начинает проходить последовательность выполнения. Последняя обычная запись в журнале: "Выполнение действия: ISSetupFilesExtract". ISSetupFilesExtract является первым действием в последовательности выполнения. После трехминутной паузы вся установка как-то сбрасывается и начинается заново. Следующая запись журнала записывается клиентским процессом, где обычно серверный процесс продолжает выполнять последовательность выполнения. Я не ожидал бы увидеть еще одну запись в журнале от клиентского процесса до самого конца установки. Я подозреваю, что здесь происходит какой-то катастрофический сбой, но я не знаю, что это может быть. Только после этого таинственного сброса произошел сбой SequencePatches. Это успешно завершено в первый раз.

MSI (s) (C4:58) [09:28:32:565]: Doing action: INSTALL
Action start 9:28:32: INSTALL.
MSI (s) (C4:58) [09:28:32:581]: Running ExecuteSequence
MSI (s) (C4:58) [09:28:32:581]: Transforming table InstallExecuteSequence.
MSI (s) (C4:58) [09:28:32:581]: Transforming table InstallExecuteSequence.
MSI (s) (C4:58) [09:28:32:581]: Note: 1: 2262 2: InstallExecuteSequence 3: -2147287038 
MSI (s) (C4:58) [09:28:32:581]: Doing action: ISSetupFilesExtract

<-- What happened here?! -->

=== Verbose logging started: 7/21/2014  9:31:38  Build type: SHIP UNICODE 5.00.7601.00  Calling process: C:\MyCompany\Pwhc\Apps\AplPch.exe ===
MSI (c) (44:50) [09:31:38:192]: Font created.  Charset: Req=0, Ret=0, Font: Req=MS Shell Dlg, Ret=MS Shell Dlg

У меня вопрос, кто-нибудь знает, что может быть причиной сброса процесса установки, как это, и могу ли я что-нибудь сделать с этим? Как я уже сказал, этот патч обычно устанавливается в 99% случаев. Полный журнал с неисправного компьютера доступен по адресу: https://docs.google.com/document/d/1LK6HdIcetKOGqFbi5nGKAuDolvhZ3PcLxzJHv2wNDsQ/pub. Благодарю.

Дополнительная информация в ответ на комментарии:

Наш продукт использует MSI для выпусков пакетов обновления и исправлений для точечных выпусков. Каждый патч является накопительным и заменяет все предыдущие со свойством MinorUpdateTargetRTM. Они используются в основном для обновления файлов приложений. Мы всегда включаем целые файлы для повышения надежности и не используем патчи на битовом уровне. Базовый MSI составляет 46 МБ и содержит 1778 файлов (это сложный корпоративный продукт). Патч, который выходит из строя, довольно большой, 57 МБ. Он добавляет 240 новых файлов и обновляет 413 существующих файлов.

1 ответ

Похоже, вы эффективно используете патчи, но вы определенно нарушаете мое правило номер один для патча: он должен быть меньше, чем его базовый MSI.

Причина ясна и проста: патч - это всего лишь механизм доставки уже работающего обновления. Таким образом, это всего лишь контейнер, более сложный и подверженный ошибкам, чем сама первоначальная установка, и когда его размер превышает исходный MSI, нет никакой очевидной причины использовать исправление вообще? Вы можете просто запустить полную настройку без изменений? На самом деле вы должны попробовать именно это в системах, где возникает проблема.

Может быть, я упускаю что-то важное? Возможно, он устанавливается быстрее? Хорошее авторское незначительное обновление или серьезное обновление, которое не удаляет и не переустанавливает, а просто отменяет регистрацию старой версии (поздняя последовательность для RemoveExistingProducts), должно быть таким же быстрым.

Несмотря на многолетний опыт и опыт развертывания, я не являюсь экспертом в области исправлений. Я активно пытаюсь свести к минимуму использование патчей, так как это обычно больше проблем, чем оно того стоит. Но вот пост с некоторыми из моих опытов исправления.

Я извиняюсь, если это вообще не похоже на ответ, но я чувствую, что это верный ввод, так как ваш патч кажется таким ненужным на 57 МБ, и вы обязательно найдете обходной путь: полное обновление MSI.

Другие вопросы по тегам