Nếu bạn thấy lỗi “The application has failed to start because its side-by-side configuration is incorrect” khi cố chạy app trong Windows, nghĩa là chương trình không thể khởi động do thiếu dependency. Thành phần cần thiết để chạy app bị hỏng hoặc chưa cài trên máy tính. Trong bài này, chúng ta chỉ cách kiểm tra file manifest ứng dụng và giải quyết dependency bằng cách tìm thư viện hoặc gói cần cài để app khởi động đúng.
Thường xảy ra khi chạy app portable hoặc game vì chúng dùng thư viện Microsoft Visual C++ Redistributable (vc_redist.x86.exe, vc_redist.x64.exe) chưa cài trên máy tính hoặc bị hỏng. Tuy nhiên, trước khi cài tất cả phiên bản Visual C++ Redistributable lên máy tính bừa bãi, chúng ta sẽ thử tìm chính xác thư viện app cần qua file manifest.
Cách phân tích Manifest ứng dụng trong Windows?
Hãy thử chạy ứng dụng makeappx.exe trên máy tính không cài Windows SDK.
Makeappx.exe cho phép tạo gói app UWP định dạng *.msix, *.appx, *.msixbundle, hoặc *.appxbundle.
Rõ ràng tool không khởi động và trả về lỗi:
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
Lưu ý thông báo ResourceUnavailable, nó trực tiếp chỉ ra app thiếu thứ gì đó để chạy.
Danh sách thành phần và thư viện app cần để chạy được chỉ định trong app manifest. App manifest có thể lưu như file XML riêng hoặc nhúng trực tiếp vào file executable (.exe) của ứng dụng.
Bạn có thể xem manifest file EXE dùng công cụ miễn phí Manifest View hoặc Resource Hacker.
Chúng ta đã chỉ cách dùng Resource Hacker xem và sửa app manifest trong bài "How to suppress UAC elevation prompt?".
Như bạn thấy, phần Dependency trong app manifest chứa tham chiếu đến Microsoft.Windows.Build.Appx.AppxPackaging.dll. Ứng dụng không thể hoạt động без thư viện file này.
Bạn cũng có thể trace khởi động ứng dụng dùng SxSTrace.exe.
Mở command prompt mới và bắt đầu thu thập dữ liệu bằng lệnh: 
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...
Sau đó chạy app bị lỗi. Khi lỗi “The application has failed to start because its side-by-side configuration is incorrect” xuất hiện, dừng trace bằng cách bấm ENTER trong cửa sổ sxstrace.
Chuyển file log ETL sang định dạng TXT tiện lợi hơn:
sxstrace.exe Parse -logfile:c:\tmp\makeapp_sxtracesxs.etl -outfile:c:\tmp\makeapp_sxtracesxs.txt
Mở file TXT kết quả trong Notepad (hoặc trình soạn thảo văn bản khác) và tìm dòng báo lỗi. Bạn cũng có thể grep lỗi trong file text bằng PowerShell:
Get-Content c:\tmp\makeapp_sxtracesxs.txt | Where-Object { $_.Contains("ERROR") }
Như bạn thấy, lỗi trỏ đến cùng file DLL hiển thị trong app manifest:
INFO: End assembly probing. ERROR: Cannot resolve reference Microsoft.Windows.Build.Appx.AppxPackaging.dll,version="0.0.0.0". ERROR: Activation Context generation failed.
Thêm vào đó, bạn có thể phân tích lỗi dependency SideBySide qua event log. Nếu lỗi xảy ra, event sau ghi vào Application log:
EventID: 33 Source: SideBySide
Mô tả lỗi nhắc đến file thư viện hoặc thành phần cần thiết chạy app.
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.
Sau đó tìm trên Google thông tin về file dll này. Trong ví dụ của tôi, file thư viện là một phần của MSIX Toolkit từ Windows SDK (Redist.x86). Tải và cài đặt thành phần bạn tìm thấy để app khởi động đúng.
Khắc phục sự cố Microsoft Visual C++ Redistributable
Trong hầu hết trường hợp, lỗi “incorrect side-by-side configuration” liên quan đến phiên bản Microsoft Visual C++ Redistributable thư viện thiếu hoặc hỏng.
Trong trường hợp này, lỗi sau xuất hiện cả trong log sxstrace và app manifest:
Error: Cannot resolve reference ERROR: Cannot resolve reference Microsoft.VC90.MFC, processorArchitecture="amd64", publicKeyToken="1fc8b3b9a1e18e3b", type="win32",version="9.0.21022.8".
Chúng ta nhận thông tin sau từ thông báo này: app cần Microsoft.VC90.MFC 9.0.21022 bản x64-bit. Tìm nhanh trên Google cho thấy đó là Microsoft Visual C++ 2008 Redistributable. Tải và cài phiên bản MVC này từ trang Microsoft.
Cùng cách đó, bạn có thể lấy các phiên bản Microsoft Visual C++ khác bằng giá trị trong trường Version:
- Microsoft Visual C++ Redistributable cho Visual Studio 2015, 2017, 2019: 14.0.x hoặc mới hơn
- 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
Sửa chữa file hệ thống trong Windows
Nếu bạn hiểu lỗi khởi động app liên quan đến một trong các file hệ thống Windows, kiểm tra và sửa file hệ thống Windows image và component dùng SFC và DISM:
sfc /scannow
DISM.exe /Online /Cleanup-image /Scanhealth
DISM.exe /Online /Cleanup-image /Restorehealth