Windows Server
 Computer >> コンピューター >  >> システム >> Windows Server

「サイドバイサイド構成が正しくないためアプリケーションを起動できませんでした」エラーの原因と対処法

Windowsでアプリケーションを起動しようとした際に、「サイドバイサイド構成が正しくないためアプリケーションを起動できませんでした(The application has failed to start because its side-by-side configuration is incorrect)」というエラーが表示される場合、そのプログラムは依存関係の欠落により起動できない状態にあります。つまり、アプリの実行に必要なコンポーネントが破損しているか、コンピューターにインストールされていないことを意味します。

この記事では、アプリケーションのマニフェストファイルを確認し、必要なライブラリやパッケージを特定してインストールすることで、アプリが正常に起動できるようにする方法を解説します。

この問題は、ポータブル版アプリやゲームを実行する際によく発生します。これらはMicrosoft Visual C++ 再頒布可能パッケージ(vc_redist.x86.exe、vc_redist.x64.exe)のライブラリを使用しますが、それらがコンピューターにインストールされていなかったり、破損していたりすることがあるためです。ただし、闇雲にすべてのVisual C++ 再頒布可能パッケージをインストールする前に、マニフェストファイルから正確にどのライブラリが必要なのかを特定してみましょう。

Windowsでアプリのマニフェストを分析する方法

ここでは、Windows SDKがインストールされていない環境でmakeappx.exeを起動してみます。makeappx.exeは、*.msix、*.appx、*.msixbundle、*.appxbundle形式のUWPアプリパッケージを作成するツールです。

当然ながら、このツールは起動せず、以下のエラーが返されます。

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 ViewResource Hackerを使って表示できます。Resource Hackerの使い方については、別記事「UAC昇格プロンプトを抑制する方法」でも紹介しています。

マニフェストのDependencyセクションを見ると、Microsoft.Windows.Build.Appx.AppxPackaging.dllへの参照が含まれています。このアプリはこのライブラリファイルなしには動作しません。

SxSTraceで起動時のエラーを追跡する

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...

続いて問題のあるアプリを実行します。「サイドバイサイド構成が正しくない」というエラーが表示されたら、sxstraceウィンドウでEnterキーを押してトレースを停止します。

収集した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に関する情報を検索します。この例の場合、該当ライブラリはWindows SDK(MSIX Toolkit、Redist.x86)の一部です。見つかったコンポーネントをダウンロードしてインストールすれば、アプリは正常に起動できるようになります。

Microsoft Visual C++ 再頒布可能パッケージのトラブルシューティング

多くの場合、「サイドバイサイド構成が正しくない」エラーは、Microsoft Visual C++ 再頒布可能パッケージのバージョンが不足しているか、破損していることが原因です。

その場合、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 再頒布可能パッケージであることがわかります。マイクロソフトの公式サイトからこのバージョンをダウンロードしてインストールしましょう。

同様に、Versionフィールドの値から、必要な他のVisual C++ のバージョンを特定できます。

再頒布可能パッケージVersion値
Visual Studio 2015、2017、2019 用 Microsoft Visual C++ 再頒布可能パッケージ14.0.x 以降
Microsoft Visual C++ 2013 再頒布可能パッケージ12.0.x
Microsoft Visual C++ 2012 再頒布可能パッケージ11.0.x
Microsoft Visual C++ 2010 再頒布可能パッケージ10.0.x
Microsoft Visual C++ 2008 再頒布可能パッケージ9.0.x

Windowsのシステムファイルを修復する

アプリの起動エラーがWindowsのシステムファイルに関連していると判断できる場合は、SFCおよびDISMコマンドを使用して、Windowsシステムイメージファイルとコンポーネントのチェック・修復を行います。

sfc /scannow
DISM.exe /Online /Cleanup-image /Scanhealth
DISM.exe /Online /Cleanup-image /Restorehealth

  1. 「アプリケーションを正しく初期化できませんでした」エラーの原因と解決方法を徹底解説

    アプリを起動した際に「The application failed to initialize properly(アプリケーションを正しく初期化できませんでした)」というエラーが表示され、困っていませんか?このエラーの主な原因は、古いバージョンまたは破損した.NET Frameworkです。ただし、それ以外にもレジストリの破損、ドライバーの競合、Windowsシステムファイルの破損など、さまざまな要因が考えられます。特に、Windowsを長期間アップデートしていない場合は、.NET Frameworkが古くなっている可能性が高く、更新するだけでエラーが解消することもあります。 この記事で解決

  2. 「サイドバイサイド構成が正しくないため、アプリケーションを起動できませんでした」エラーの対処法

    「サイドバイサイド構成が正しくないため、アプリケーションを起動できませんでした」エラーの解決方法:Windows 10でプログラムやユーティリティを実行しようとした際に、「サイドバイサイド構成が正しくないため、アプリケーションを起動できませんでした。詳細についてはアプリケーションイベントログを確認するか、コマンドラインツール sxstrace.exe を使用してください」というエラーメッセージが表示されることがあります。 この問題の主な原因は、C++ランタイムライブラリとアプリケーションの競合です。アプリケーションが実行に必要なC++ファイルを読み込めず、起動に失敗します。これらのライブラリ