หากคุณเห็น “The application has failed to start because its side-by-side configuration is incorrect
” เมื่อพยายามเริ่มแอพใน Windows ซึ่งหมายความว่าโปรแกรมไม่สามารถเริ่มทำงานได้เนื่องจากการขึ้นต่อกันที่ขาดหายไป ส่วนประกอบที่จำเป็นในการเรียกใช้แอพได้รับความเสียหายหรือไม่ได้ติดตั้งบนคอมพิวเตอร์ ในบทความนี้ เราจะแสดงวิธีตรวจสอบไฟล์ Manifest ของแอปพลิเคชันและแก้ไขการขึ้นต่อกันโดยค้นหาไลบรารีหรือแพ็คเกจที่จะติดตั้งเพื่อให้แอปเริ่มทำงานได้อย่างถูกต้อง
ปัญหาส่วนใหญ่มักเกิดขึ้นเมื่อเรียกใช้แอปหรือเกมแบบพกพาเนื่องจากใช้ไลบรารีของ Microsoft Visual C++ Redistributable (vc_redist.x86.exe, vc_redist.x64.exe) ที่ไม่ได้ติดตั้งบนคอมพิวเตอร์หรือเสียหาย อย่างไรก็ตาม ก่อนที่จะติดตั้งเวอร์ชัน Visual C++ Redistributable ทั้งหมดบนคอมพิวเตอร์ของคุณโดยไม่ต้องคิด เราจะพยายามค้นหาว่าไลบรารีใดที่แอปต้องการจากไฟล์รายการ
จะวิเคราะห์รายการแอพใน 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
หมายเหตุ ทรัพยากรไม่พร้อมใช้งาน เป็นข้อความชี้ตรงถึงความจริงที่ว่าแอปขาดบางสิ่งที่จะเรียกใช้
รายการส่วนประกอบและไลบรารีที่แอปจำเป็นต้องเรียกใช้มีระบุไว้ในรายการแอป ไฟล์ Manifest ของแอปอาจจัดเก็บเป็นไฟล์ XML แยกต่างหากหรือฝังลงในไฟล์ปฏิบัติการ (.exe) ของแอปพลิเคชันได้โดยตรง
คุณสามารถดูรายการไฟล์ EXE ได้โดยใช้ มุมมองมานิเฟสต์ . ฟรี หรือ แฮ็กเกอร์ทรัพยากร เครื่องมือ
เราแสดงวิธีใช้ Resource Hacker เพื่อดูและแก้ไขรายการแอปในบทความจะระงับการแจ้งเตือน UAC ได้อย่างไรอย่างที่คุณเห็น การพึ่งพาอาศัยกัน ส่วนในรายการแอปมีการอ้างอิงถึง 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 ที่เป็นผลลัพธ์ใน Notepad (หรือโปรแกรมแก้ไขข้อความอื่น ๆ ) และค้นหาบรรทัดที่มีข้อผิดพลาด นอกจากนี้คุณยังสามารถ grep เพื่อหาข้อผิดพลาดในไฟล์ข้อความด้วย 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++ แบบแจกจ่ายต่อได้
ในกรณีส่วนใหญ่ ข้อผิดพลาด "การกำหนดค่าแบบเคียงข้างกันไม่ถูกต้อง" เกี่ยวข้องกับไลบรารี 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".
เราได้รับข้อมูลต่อไปนี้จากข้อความนี้:แอปต้องใช้ Microsoft.VC90.MFC 9.0.21022 x64 บิต การค้นหาอย่างรวดเร็วใน 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 Redistributable12.0.xMicrosoft Visual C++ 2012 Redistributable11.0.xMicrosoft Visual C++ 2010 Redistributable10.0.xMicrosoft Visual C++ 2008 Redistributable9.0 xซ่อมแซมไฟล์ระบบใน Windows
หากคุณเข้าใจว่าข้อผิดพลาดในการเริ่มต้นแอปเกี่ยวข้องกับไฟล์ระบบ Windows ไฟล์ใดไฟล์หนึ่ง ให้ตรวจสอบและซ่อมแซมไฟล์อิมเมจระบบและส่วนประกอบ Windows โดยใช้ SFC และ DISM:
sfc /scannow
DISM.exe /Online /Cleanup-image /Scanhealth
DISM.exe /Online /Cleanup-image /Restorehealth