Набор инструментов WiX устанавливает распространяемый пакет VC++ (x86) 2015 слишком медленно

Я написал программу установки WiX Toolset для установки приложения, для которого требуется распространяемый пакет VC++ (x86) 2015. Все работает нормально, но когда vcredlist_x86.exe запускается, он устанавливает пакет слишком медленно, это занимает около шести минут!

Если я запускаю vcredlist в автономном режиме, это все равно занимает шесть минут, как показывает временная шкала:

[1190:1364][2017-05-29T10:56:06]i001: Burn v3.7.2829.0, Windows v6.1 (Build 7601: Service Pack 1), path: D:\TestApplication\MyInstaller\vcredlist\vcredist_x86.exe, cmdline: '/install /log install.log -burn.unelevated BurnPipe.{5745A989-148E-49D2-9BAA-882CBAF76EC9} {C40DCBEA-3CC3-401E-88A3-E0685CD9D368} 4692'
[1190:1364][2017-05-29T10:56:06]i000: Setting string variable 'WixBundleLog' to value 'D:\TestApplication\MyInstaller\vcredlist\install.log'
[1190:1364][2017-05-29T10:56:06]i000: Setting string variable 'WixBundleOriginalSource' to value 'D:\TestApplication\MyInstaller\vcredlist\vcredist_x86.exe'
[1190:1364][2017-05-29T10:56:06]i000: Setting string variable 'WixBundleName' to value 'Microsoft Visual C++ 2015 Redistributable (x86) - 12.0.30501'
[1190:1364][2017-05-29T10:56:06]i100: Detect begin, 2 packages
[1190:1364][2017-05-29T10:56:06]i101: Detected package: vcRuntimeMinimum_x86, state: Present, cached: Complete
[1190:1364][2017-05-29T10:56:06]i101: Detected package: vcRuntimeAdditional_x86, state: Present, cached: Complete
[1190:1364][2017-05-29T10:56:06]i052: Condition 'VersionNT >= v6.0 OR (VersionNT = v5.1 AND ServicePackLevel >= 2) OR (VersionNT = v5.2 AND ServicePackLevel >= 1)' evaluates to true.
[1190:1364][2017-05-29T10:56:06]i199: Detect complete, result: 0x0
[1190:1364][2017-05-29T10:56:46]i200: Plan begin, 2 packages, action: Install
[1190:1364][2017-05-29T10:56:46]i201: Planned package: vcRuntimeMinimum_x86, state: Present, default requested: Present, ba requested: Present, execute: None, rollback: None, cache: No, uncache: No, dependency: Register
[1190:1364][2017-05-29T10:56:46]i201: Planned package: vcRuntimeAdditional_x86, state: Present, default requested: Present, ba requested: Present, execute: None, rollback: None, cache: No, uncache: No, dependency: Register
[1190:1364][2017-05-29T10:56:46]i299: Plan complete, result: 0x0
[1190:1364][2017-05-29T10:56:46]i300: Apply begin
[1254:1CC0][2017-05-29T11:02:52]w308: Automatic updates could not be paused due to error: 0x80080005. Continuing...
[1254:1CC0][2017-05-29T11:02:52]i360: Creating a system restore point.
[1254:1CC0][2017-05-29T11:02:57]i361: Created a system restore point.
[1254:1CC0][2017-05-29T11:02:57]i370: Session begin, registration key: SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{f65db027-aff3-4070-886a-0d87064aabb1}, options: 0x7, disable resume: No
[1254:1CC0][2017-05-29T11:02:57]i000: Caching bundle from: 'C:\Users\costanzo\AppData\Local\Temp\{f65db027-aff3-4070-886a-0d87064aabb1}\.be\vcredist_x86.exe' to: 'C:\ProgramData\Package Cache\{f65db027-aff3-4070-886a-0d87064aabb1}\vcredist_x86.exe'
[1254:1CC0][2017-05-29T11:02:57]i320: Registering bundle dependency provider: {f65db027-aff3-4070-886a-0d87064aabb1}, version: 12.0.30501.0
[1254:1CC0][2017-05-29T11:02:57]i371: Updating session, registration key: SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{f65db027-aff3-4070-886a-0d87064aabb1}, resume: Active, restart initiated: No, disable resume: No
[1254:1CC0][2017-05-29T11:02:57]i325: Registering dependency: {f65db027-aff3-4070-886a-0d87064aabb1} on package provider: Microsoft.VS.VC_RuntimeMinimumVSU_x86,v12, package: vcRuntimeMinimum_x86
[1254:1CC0][2017-05-29T11:02:57]i325: Registering dependency: {f65db027-aff3-4070-886a-0d87064aabb1} on package provider: Microsoft.VS.VC_RuntimeAdditionalVSU_x86,v12, package: vcRuntimeAdditional_x86
[1254:1CC0][2017-05-29T11:02:57]i372: Session end, registration key: SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{f65db027-aff3-4070-886a-0d87064aabb1}, resume: ARP, restart: None, disable resume: No
[1254:1CC0][2017-05-29T11:02:57]i371: Updating session, registration key: SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{f65db027-aff3-4070-886a-0d87064aabb1}, resume: ARP, restart initiated: No, disable resume: No
[1190:1364][2017-05-29T11:02:57]i399: Apply complete, result: 0x0, restart: None, ba requested restart:  No
[1190:1364][2017-05-29T11:07:50]i500: Shutting down, exit code: 0x0
[1190:1364][2017-05-29T11:07:50]i410: Variable: ServicePackLevel = 1
[1190:1364][2017-05-29T11:07:50]i410: Variable: VersionNT = 6.1.0.0
[1190:1364][2017-05-29T11:07:50]i410: Variable: WixBundleAction = 5
[1190:1364][2017-05-29T11:07:50]i410: Variable: WixBundleElevated = 1
[1190:1364][2017-05-29T11:07:50]i410: Variable: WixBundleInstalled = 0
[1190:1364][2017-05-29T11:07:50]i410: Variable: WixBundleLog = D:\TestApplication\MyInstaller\vcredlist\install.log
[1190:1364][2017-05-29T11:07:50]i410: Variable: WixBundleManufacturer = Microsoft Corporation
[1190:1364][2017-05-29T11:07:50]i410: Variable: WixBundleName = Microsoft Visual C++ 2015 Redistributable (x86) - 12.0.30501
[1190:1364][2017-05-29T11:07:50]i410: Variable: WixBundleOriginalSource = D:\TestApplication\MyInstaller\vcredlist\vcredist_x86.exe
[1190:1364][2017-05-29T11:07:50]i410: Variable: WixBundleProviderKey = {f65db027-aff3-4070-886a-0d87064aabb1}
[1190:1364][2017-05-29T11:07:50]i410: Variable: WixBundleTag = 
[1190:1364][2017-05-29T11:07:50]i410: Variable: WixBundleVersion = 12.0.30501.0
[1190:1364][2017-05-29T11:07:50]i007: Exit code: 0x0, restarting: No  

В чем может быть причина и как решить эту проблему?


person Costanzo Ferraro    schedule 26.05.2017    source источник
comment
В какой операционной системе вы используете программу установки?   -  person bradfordrg    schedule 26.05.2017
comment
Windows 7 Профессиональная   -  person Costanzo Ferraro    schedule 26.05.2017
comment
Чтобы понять, почему VC Redist занимает так много времени, вы можете попробовать запустить его в автономном режиме с включенным ведением журнала. Используйте командную строку, например: vc_Redist.x86.exe /install /log install.log.   -  person bradfordrg    schedule 26.05.2017
comment
Самый быстрый способ: полностью избавиться от установщика vcredist и использовать локальное развертывание среды выполнения.   -  person zett42    schedule 27.05.2017
comment
Пост бесполезен, к сожалению! @bradfordrg, журнал практически ничего не говорит. Любые другие идеи?   -  person Costanzo Ferraro    schedule 29.05.2017
comment
Можете ли вы добавить журнал к вопросу? Тогда мы все сможем увидеть, что написано в журнале. Запуск распространяемого пакета VC++ в автономном режиме по-прежнему занимает шесть минут?   -  person bradfordrg    schedule 29.05.2017
comment
Да, в то же время. Я отредактировал свой вопрос с помощью журнала, как вы мне предложили.   -  person Costanzo Ferraro    schedule 29.05.2017


Ответы (1)


Причина того, что распространяемый пакет VC++ занимает 6 минут, вероятно, вызвана проблемами с Центром обновления Windows на компьютере, на котором запущен установщик.

Распространяемый компонент VC++ использует механизм записи WIX (часть набора инструментов WIX). В процессе установки модуль WIX Burn попытается приостановить автоматические обновления. Эта строка в файле журнала указывает на то, что приостановка автоматических обновлений не удалась после истечения времени ожидания примерно 6 минут:

[1254:1CC0][2017-05-29T11:02:52]w308: Automatic updates could not be paused due to error: 0x80080005. Continuing...

Код ошибки 0x8008005 — это ошибка Windows COM CO_E_SERVER_EXEC_FAILURE, что переводится как «Ошибка выполнения сервера». Объяснение того, почему может возникнуть эта ошибка, можно найти в статье Когда CoCreateInstance возвращает 0x80080005 (CO_E_SERVER_EXEC_FAILURE).

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

person bradfordrg    schedule 29.05.2017
comment
Да, глядя на исходный код WiX, похоже, что дело обстоит именно так — Центр обновления Windows, вероятно, не работает (вредоносное ПО?) или каким-то образом зависает. Кажется, зависает вызов Microsoft.Update.AutoUpdate. Я думаю, может быть достаточно лучшего сообщения об ошибке. Или сбрасывать весь звонок? - person Stein Åsmul; 29.03.2018
comment
Лучшая обратная связь об ошибках поможет. Прежде чем ответить на звонок, я хотел бы лучше понять причины его появления. - person bradfordrg; 31.03.2018
comment
Я согласен - на мой взгляд, очень вероятной причиной зависания может быть вредоносное ПО, взломавшее Центр обновления Windows (я видел это много раз). Будет ли очень странно, если WiX/Burn предложит пользователю такую ​​возможность? Может быть, это было бы излишне паникерским? Мои 2 цента: с вредоносным ПО в коробке нельзя ожидать надежного развертывания. Я ожидаю увидеть дальнейшие ошибки, и пользователь может не сразу соединить точки? - person Stein Åsmul; 31.03.2018