Не удается запустить приложение с ошибкой side-by-side configuration is incorrect
Если при запуске программы в Windows вы получаете ошибку “
Не удалось запустить приложение, поскольку его параллельная конфигурация неправильна
/
The application has failed to start because its side-by-side configuration is incorrect
”, значит программа не может запуститься из-за отсутствующих файлов зависимостей. Компоненты, нужные для запуска этой программы, на компьютере не установлены или повреждены. В этой статье мы рассмотрим, как выполнить проверить манифест приложениями разрешить зависимости, определив библиотеку или пакет, которые нужно установить для корректного запуска программы.
Данная проблема чаще всего возникает при запуске portable программ или игр из-за того, что на компьютере не установлена или повреждена одна из версий компонента Microsoft Visual C++ Redistributable (vc_redist.x86.exe, vc_redist.x64.exe), библиотеки которой используются программой. Однако, прежде чем бездумно переустанавливать все версии Visual C++ Redistributable на компьютере, попытаемся с помощью файла манифеста определить какую конкретную библиотеку требует приложение.
Анализ манифеста приложения в Windows
Попробуем запустить утилиту
makeappx.exe
на компьютере, на котором не установлен Windows SDK.
Утилита makeappx.exe позволяет создавать пакету UWP приложений в форматах *.msix, *.appx, *.msixbundle или *.appxbundle.
Утилита, естественно не запускается с ошибкой:
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:tmpmakeapp_sxtracesxs.etl
Tracing started. Trace will be saved to file c:tmpmakeapp_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:tmpmakeapp_sxtracesxs.etl -outfile:c:tmpmakeapp_sxtracesxs.txt
Откройте полученный txt файл в блокноте (или любом другом текстовом редакторе) и найдите в нем строки с ошибками. Также вы можете найти и вывести все строки с ошибками с помощью PowerShell:
Get-Content c:tmpmakeapp_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:pstestmakeappx.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
Windows Server 2019
Не удается запустить приложение с ошибкой side-by-side configuration is incorrect