Если при запуске программы в Windows вы получаете ошибку “
Не удалось запустить приложение, поскольку его параллельная конфигурация неправильна
/
The application has failed to start because its side-by-side configuration is incorrect
”, значит программа не может запуститься из-за отсутствующих файлов зависимостей. Компоненты, нужные для запуска этой программы, на компьютере не установлены или повреждены. В этой статье мы рассмотрим, как выполнить проверить манифест приложениями разрешить зависимости, определив библиотеку или пакет, которые нужно установить для корректного запуска программы.
Анализ манифеста приложения в Windows
Попробуем запустить утилиту
makeappx.exe
на компьютере, на котором не установлен Windows SDK.
Утилита, естественно не запускается с ошибкой:
Program 'makeappx.exe' failed to run: The application has failed to start because its side-by-side configuration is incorrect. Please see the application event log or use the command-line sxstrace.exe tool for more detail + CategoryInfo : ResourceUnavailable: (:) [], ApplicationFailedException + FullyQualifiedErrorId : NativeCommandFailed
Обратите внимание на сообщение ResourceUnavailable, оно явно указывает, что программе чего-то не хватает для запуска.
Список компонентов и библиотек, которые нужны приложению для запуска указывается в манифесте приложения. Манифест приложения может хранится в виде отдельного XML файла или быть встроен непосредственно в exe файл приложения.
Вы можете просмотреть манифест exe файла с помощью бесплатной утилиты Manifest View или с помощью Resource Hacker.
Как вы видите, в манифесте приложения в секции Dependency есть ссылка на библиотеку Microsoft.Windows.Build.Appx.AppxPackaging.dll. Утилита не может запуститься без этой библиотеки.
Также вы можете выполнить трассировку запуска приложения с помощью утилиты SxSTrace.exe.
Откройте новое окно командной строки и запустите сбор данных, выполнив команду:
sxstrace.exe Trace -logfile:c:\tmp\makeapp_sxtracesxs.etl
Tracing started. Trace will be saved to file c:\tmp\makeapp_sxtracesxs.etl. Press Enter to stop tracing...
Теперь запустите проблемное приложение. После появления ошибки “The application has failed to start because its side-by-side configuration is incorrect” остановите трассировку, нажав Enter в окне sxstrace.
Сконвертируйте ETL файл лога в более читаемый txt формат:
sxstrace.exe Parse -logfile:c:\tmp\makeapp_sxtracesxs.etl -outfile:c:\tmp\makeapp_sxtracesxs.txt
Откройте полученный txt файл в блокноте (или любом другом текстовом редакторе) и найдите в нем строки с ошибками. Также вы можете найти и вывести все строки с ошибками с помощью PowerShell:
Get-Content c:\tmp\makeapp_sxtracesxs.txt | Where-Object { $_.Contains("ERROR") }
Как вы видите, ошибка указывает тот же DLL файл, который указан в манифесте программы:
INFO: End assembly probing. Cannot resolve reference Microsoft.Windows.Build.Appx.AppxPackaging.dll,version="0.0.0.0". ERROR: Activation Context generation failed.
Также для анализа зависимостей в ошибках SideBySide можно использовать журнал событий. При появлении такой ошибки в журнал Application записывается событие:
EventID: 33 Source: SideBySide
В описание ошибки также есть отсылка на файл библиотеки или компонент, которые нужен для запуска приложения.
Activation context generation failed for "C:\ps\test\makeappx.exe". Dependent Assembly Microsoft.Windows.Build.Appx.AppxPackaging.dll,version="0.0.0.0" could not be found. Please use sxstrace.exe for detailed diagnosis.
Теперь открываете Google и ищите в нем информацию по данной dll. В нашем примере эта библиотека входит в MSIX Toolkit из Windows SDK (Redist.x86). Скачайте и установите найденные компоненты для нормального запуска программы.
Исправление ошибок Microsoft Visual C++ Redistributable
В большинстве случаев на компьютерах пользователей ошибка “неправильной параллельной конфигурации приложения” связана с отсутствующей или поврежденной версией библиотеки Microsoft Visual C++ Redistributable.
В этом случае в журнале sxstrace и в манифесте приложения будет содержаться ошибка вида:
Ошибка: не удается разрешить ссылку Microsoft.VC90.MFC, processorArchitecture="amd64", publicKeyToken="1fc8b3b9a1e18e3b", type="win32",version= "9.0.21022.8".
Из ошибки мы можем получить следующую информацию: приложению нужна
x64
битная версия
Microsoft.VC90.MFC
версия
9.0.21022
. Быстрый поиск в гугл поможет определить, что это Microsoft Visual C++ 2008 Redistributable. Скачайте и установите данную версию MVC с сайта Microsoft.
Аналогично, по значению в поле version можно определить и другие версии Microsoft Visual C++:
Microsoft Visual C++ Redistributable for Visual Studio 2015, 2017 и 2019. | 14.0.x и выше |
Microsoft Visual C++ 2013 Redistributable | 12.0.x |
Microsoft Visual C++ 2012 Redistributable | 11.0.x |
Microsoft Visual C++ 2010 Redistributable | 10.0.x |
Microsoft Visual C++ 2008 Redistributable | 9.0.x |
Исправление системных файлов
Если вы понимаете, что ошибка запуска приложения связана с одним из системных файлов Windows, выполните проверку и восстановление системных компонентов и файлов с помощью SFC и DISM:
sfc /scannow
DISM.exe /Online /Cleanup-image /Scanhealth
DISM.exe /Online /Cleanup-image /Restorehealth