
Если вы видите сообщение «The application has failed to start because its side-by-side configuration is incorrect
» при попытке запустить приложение в Windows, это означает, что программа не может запуститься из-за отсутствия зависимостей. Компоненты, необходимые для запуска приложения, повреждены или не установлены на компьютере. В этой статье мы покажем, как проверить файл манифеста приложения и устранить зависимости, найдя библиотеку или пакет, которые необходимо установить для корректного запуска приложения.
Как проанализировать манифест приложения в 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-файла можно с помощью бесплатной программы Просмотр манифеста или Хакер ресурсов инструмент.
Как вы можете видеть, в Зависимость Раздел в манифесте приложения содержит ссылку на 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. ERROR: Cannot resolve reference Microsoft.Windows.Build.Appx.AppxPackaging.dll,version="0.0.0.0". ERROR: Activation Context generation failed.
Кроме того, ошибки зависимостей SideBySide можно проанализировать с помощью журналов событий. При возникновении ошибки в журнал приложений записывается следующее событие:
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
В большинстве случаев ошибка «некорректная конфигурация side-by-side» связана с отсутствующей или поврежденной версией библиотеки Microsoft Visual C++ Redistributable.
В этом случае следующая ошибка появится как в журнале sxstrace, так и в манифесте приложения:
Error: Cannot resolve reference ERROR: Cannot resolve reference Microsoft.VC90.MFC, processorArchitecture="amd64", publicKeyToken="1fc8b3b9a1e18e3b", type="win32",version="9.0.21022.8".
Из этого сообщения мы получаем следующую информацию: приложению требуется x64-битная версия Microsoft.VC90.MFC 9.0.21022. Быстрый поиск в Google показывает, что это Microsoft Visual C++ 2008 Redistributable. Загрузите и установите эту версию MVC с сайта Microsoft.
Аналогичным образом можно получить и другие версии Microsoft Visual C++ по их значениям в строке Версия поле:
Microsoft Visual C++ Redistributable для 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
Если вы понимаете, что ошибка запуска приложения связана с одним из системных файлов Windows, проверьте и восстановите файлы и компоненты образа системы Windows с помощью SFC и DISM:
sfc /scannow
DISM.exe /Online /Cleanup-image /Scanhealth
DISM.exe /Online /Cleanup-image /Restorehealth