Windowsでアプリを起動しようとした際に「サイドバイサイド構成が正しくありません」というエラーが表示されるのは、非常に面倒な場合があります。これは通常、依存関係の一部が不足しているか破損していることを示唆しています。特に、特定のMicrosoft Visual C++再頒布可能ファイルに依存するポータブルアプリやゲームでよく発生します。しかし、無駄な努力をしてすべてのバージョンをインストールする前に、アプリのマニフェストファイルを詳しく調べる価値はあります。これは、アプリの構成要素リストを調べて本当に必要なものを確認するようなものです。これにより、不足しているライブラリやコンポーネントを正確に特定し、不要なパッケージでシステムが混乱するのを防ぐことができます。
このエラーは、多くの場合、依存関係が正しく登録されていないか、必要なDLL(ダイナミックリンクライブラリ)が不足していることが原因で発生します。そのため、どのDLLまたはライブラリが問題の原因となっているのかを把握することで、多くの時間を節約できます。まずは、Manifest ViewやResource Hackerなどの無料ツールを使用してアプリのマニフェストを調べることをお勧めします。これにより、EXEファイルに埋め込まれたマニフェストを覗き込み、具体的に何に依存しているかを確認できます。
Windows のサイドバイサイドエラーを修正する方法
sxstraceでアプリマニフェストを分析する
エラーが表示されて「何が足りないんだろう?」と思ったら、 で詳細なトレースを有効にするのが良いでしょうsxstrace.exe。これは、特にサイドバイサイド依存関係の不足に対処する際に、アプリが見つけられなかったり、正しく読み込めなかったりするDLLやアセンブリを特定するのに役立ちます。手順は以下のとおりです。
- コマンドプロンプトを管理者として開きます。管理者権限で実行しないと、トレースが正しく機能しない可能性があります。
- 次のコマンドでトレースを開始します:
sxstrace.exe Trace -logfile:c:\tmp\makeapp_sxtracesxs.etlディレクトリが存在することを確認するか、最初にディレクトリを作成してください。そうしないと、問題が発生します。 - アプリを実行してエラーをトリガーしてください。その後、コマンドプロンプトに戻り、 を押してEnterトレースを停止してください。ログファイルはc:\tmp\makeapp_sxtracesxs.etlに保存されます。
- 読みやすくするために、.etl ファイルをプレーンテキストレポートに変換します
sxstrace.exe Parse -logfile:c:\tmp\makeapp_sxtracesxs.etl -outfile:c:\tmp\makeapp_sxtracesxs.txt。変換したテキストファイルをメモ帳などのテキストエディターで開きます。 - ERRORエントリを探してください。これにより、どのDLLまたは参照が不足しているか、または問題が生じているかが正確にわかります。例えば、「参照 Microsoft. Windows. Build. Appx. AppxPackaging.dll を解決できません」と表示されている場合、どのコンポーネントが問題の原因であるかがわかります。
これらのエラーは、WindowsイベントビューアーのイベントID 33、ソースSideBySideで表示されることがあります。このエラーには、ロードできなかったライブラリまたはDLLが記録されるため、インストールまたは修復すべきものに関する手がかりが得られます。
DLL を Visual C++ 再頒布可能パッケージに一致させる
Microsoft. VC90. MFCなどの特定の DLL またはライブラリを特定したら、それがどの Visual C++ 再頒布可能パッケージに属しているかを確認することが重要です。例えば、Microsoft. VC90. MFC のバージョンが「9.0.21022.8」と記載されている場合、それはMicrosoft Visual C++ 2008 再頒布可能パッケージ です。[Microsoft の公式サイト](https://learn.microsoft.com/en-US/cpp/windows/latest-supported-vc-redist?view=msvc-160) から適切なパッケージを直接ダウンロードしてインストールしてください。
ここに簡単なチートシートがあります:
| 必要なDLL | 再配布可能な推奨 |
|---|---|
| Microsoft. VC90. MFC 9.0.21022.x | Microsoft Visual C++ 2008 再頒布可能パッケージ |
| 14.0.x | Visual Studio 2015-2019-2022 再頒布可能パッケージ |
| 12.0.x | Visual Studio 2013 再頒布可能パッケージ |
| 11.0.x | Visual Studio 2012 再頒布可能パッケージ |
| 10.0.x | Visual Studio 2010 再頒布可能パッケージ |
エラーに記載されているバージョン情報とパッケージのバージョン情報を一致させてください。異なるマシンでは、奇妙な現象が発生することがあります。あるマシンではインストールで問題が解決する一方で、別のマシンではパッケージを更新しないと同じエラーが発生し続けることがあります。
Windowsが原因の場合はシステムファイルを修復する
エラーがアプリの依存関係ではなくWindowsのシステムファイルに関連していると思われる場合は、システム修復ツールを実行すると解決する可能性があります。Windowssfc /scannowの整合性の問題をスキャンして修復し、DISMシステムイメージを修復するには、以下のツールを使用してください。
sfc /scannow DISM.exe /Online /Cleanup-image /Scanhealth DISM.exe /Online /Cleanup-image /Restorehealth
この方法はやや最終手段的な側面がありますが、破損したシステムファイルが競合を引き起こし、依存関係の解決に支障をきたす場合があります。また、OSを再インストールすることなく、Windowsの根本的な問題を解決するのにも役立ちます。
正直なところ、どの依存関係が欠落しているか壊れているかを正確に把握するのは、時々ちょっとしたパズルのようなものです。しかし、このような的を絞った診断を行うことは、問題が解決することを期待して盲目的に再配布可能ファイルをインストールするよりもずっと良い方法です。理由はよく分かりませんが、大抵の場合、その方がうまくいきます。トラブルシューティングの成功を祈ります!
まとめ
- アプリのマニフェストファイルで不足しているDLLや依存関係がないか確認します
- sxstrace.exe を使用して、サイドバイサイドのエラーをトレースし、不足しているコンポーネントを特定します。
- DLLエラーを特定のVisual C++再頒布可能パッケージに一致させてインストールする
- システムファイルが問題の原因であると思われる場合は、SFCとDISMを実行します。
まとめ
結局のところ、このエラーを修正するには、ログの読み取り、パッケージのマッチング、必要なDLLの存在確認といった、ちょっとした調査作業が必要になることが多いです。少し面倒ですが、何をチェックすればいいのかが分かれば、たいていは簡単です。この記事が誰かのフラストレーションを数時間も軽減してくれることを願っています。この方法で、あの厄介なエラーが永久に修正されることを祈っています。