ASP.NET Core 6.0.36 のランタイムやホスティングバンドルを入れようとしたときに、「ASP.NET Core 6.0.36 が見つかりません」と何度もポップアップし、修復セットアップを実行すると 0x80070652(別のインストールが進行中です)で失敗してしまう――本記事では、この状態を最短ルートで解消する手順と、原因となる Windows Installer(msiexec.exe)の仕組みを、実際のログ例を交えながらわかりやすく解説します。
症状の整理:ASP.NET Core 6.0.36 が見つからない & 0x80070652
まずは、よくある症状を整理しておきます。実際に ASP.NET Core 6.0.36 で発生しやすいパターンを表にまとめると、次のようになります。
| 現象 | 具体的な表示・状況 |
|---|---|
| ポップアップが繰り返し出る | 「ASP.NET Core 6.0.36 が見つかりません」などのメッセージが、PC 起動時やアプリ起動時に何度も表示される |
| 修復セットアップが失敗する | aspnetcore-runtime-6.0.36-win-x64.exe やホスティングバンドルを実行すると、途中で 0x80070652 エラーで中断される |
| セットアップログに古いバージョン | ログ内に 6.0.25 など、すでに存在しない古いバージョンのキャッシュパスが出てくる |
| ログに 0x80070003 | 「Get pseudo bundle size failed with error 0x80070003」など、パスが見つからないエラーが混在している |
一見すると「インストーラーのキャッシュが壊れているのかな?」と思いがちですが、今回の 決定的なブロック要因は 0x80070652(別のインストールが進行中です) の方です。まずはここを解消しない限り、どれだけ再インストールを繰り返しても状況は変わりません。
原因:Windows Installer(msiexec.exe)の「取り残しプロセス」
ASP.NET Core ランタイムやホスティングバンドルのセットアップは、内部で Windows Installer(msiexec.exe)を呼び出して、複数の MSI を順番に処理しています。このとき、次のような状態になると 0x80070652 が発生します。
- 以前のインストールやアンインストールが異常終了した
- Windows Update が裏側で MSI を実行していた途中で止まった
- 他のアプリのセットアップが固まったまま放置されている
Windows Installer は、「同時に 2 つの MSI インストールを進めない」という仕様があります。すでに何かのインストール処理が動いている、あるいは動いているつもりになっていると、新しいインストールをブロックしてしまいます。そのときに返されるのが 0x80070652 = ERROR_INSTALL_ALREADY_RUNNING(別のインストールが進行中です) です。
しかし、タスク マネージャーを見てもインストーラーらしいウィンドウは開いておらず、「何もインストールしていないのに…」という状況になりがちです。実際には、画面に出ていない msiexec.exe のプロセスだけが裏で残ってしまっているケースがとても多くあります。
今回の問題の「本丸」は、この 取り残された msiexec.exe を終了させること にあります。これさえ片付けてしまえば、ASP.NET Core 6.0.36 のセットアップはあっさり通ることがほとんどです。
最短で解決する基本手順
ここからは、実際に ASP.NET Core 6.0.36 のインストール/修復を完了させるための具体的な手順を、ステップごとに詳しく解説します。
前提:管理者権限で作業する理由
Windows Installer のプロセス(msiexec.exe)は、多くの場合「システム」権限や管理者権限で動作します。そのため、一般ユーザー権限のコマンド プロンプトからは終了できないことがあります。
- 必ず「管理者として実行」したコマンド プロンプトまたは PowerShell を使用する
- 会社支給 PC の場合、ローカル管理者権限が無いと操作できないケースがある
もし管理者権限が無い場合は、システム管理者や情報システム部門に、この記事の内容を添えて作業を依頼するとスムーズです。
手順 1:他のセットアップや Windows Update が動いていないか確認
まず、実際にインストーラーが動いている場合を切り分ける必要があります。次のポイントを確認してください。
- 他のアプリのセットアップ ウィザードが開いていないか
- Microsoft Store アプリの更新中ではないか
- Windows Update が「更新プログラムをインストールしています」の状態になっていないか
特に、Windows Update の大型アップデートや .NET Framework の更新が裏で動いているときに、さらに別の MSI インストーラーを起動すると、0x80070652 が出やすくなります。
もし明らかに別の更新処理が進行中であれば、それが完了するまで ASP.NET Core 6.0.36 のインストールは待ちましょう。
手順 2:管理者権限でコマンド プロンプトを開く
- スタート メニューを開く
- 「cmd」と入力する
- 表示された「コマンド プロンプト」を右クリックし、「管理者として実行」を選択する
ウィンドウのタイトルバーに「管理者: コマンド プロンプト」と表示されていれば OK です。
手順 3:取り残された msiexec.exe を終了する
次のコマンドを、そのままコマンド プロンプトに貼り付けて実行します。
taskkill /im "msiexec.exe" /f
実行結果としては、主に次のどちらかになります。
SUCCESS: プロセス "msiexec.exe" (PID xxxx) は強制終了されました。エラー: プロセス "msiexec.exe" が見つかりませんでした。
どちらの結果でも問題ありません。後者は「いま msiexec.exe は動いていない」という意味なので、そのまま先へ進めます。
このステップによって、「別のインストールが進行中です」という前提状態がリセットされます。つまり、これから実行する ASP.NET Core 6.0.36 のセットアップが、正しく msiexec.exe を起動できるようになります。
手順 4:aspnetcore-runtime-6.0.36-win-x64.exe を実行する
続けて、ASP.NET Core 6.0.36 のランタイム(もしくはホスティングバンドル)のインストーラーを実行します。
- ダウンロード済みの
aspnetcore-runtime-6.0.36-win-x64.exeをダブルクリック - または IIS 用のホスティングバンドル
dotnet-hosting-6.0.36-win.exeを実行
セットアップの途中で、以前のような 0x80070652 エラーが出なければ成功です。インストール完了後、あの「ASP.NET Core 6.0.36 が見つかりません」というポップアップは出なくなります。
ここまでで解決しない場合は、次の「うまくいかない場合の代替策」も併せて試してください。
うまくいかない場合の代替策
上記の手順で msiexec.exe を止めても、環境によってはまだエラーが残ることがあります。そのときに試すべき追加の対処をまとめます。
PC を再起動してから同じ手順を繰り返す
もっともシンプルですが、意外と効果的なのが「再起動 → すぐに msiexec.exe を停止 → インストール」という流れです。
- Windows を再起動する
- 何のアプリも起動せず、すぐに管理者コマンド プロンプトを開く
taskkill /im "msiexec.exe" /fを実行- 続けて ASP.NET Core 6.0.36 のインストーラーを実行
再起動直後は余計な常駐アプリやバックグラウンド更新が少ないため、Windows Installer が占有されるリスクが減ります。
PowerShell 派なら Stop-Process を使う
PowerShell に慣れている方は、次のコマンドで同じことができます。
Stop-Process -Name msiexec -Force
こちらも管理者権限の PowerShell で実行してください。コマンドの意味は、先ほどの taskkill とほぼ同じです。
Windows Installer サービスを再起動する
どうしても安定しない場合は、Windows Installer のサービス(msiserver)を再起動するのも有効です。管理者コマンド プロンプトで次を実行します。
net stop msiserver
net start msiserver
サービスが実際に動いていなかった場合は、msiserver サービスは開始されていません といったメッセージが出ることもありますが、その場合も問題ありません。サービスの状態をリセットするイメージで捉えてください。
古い .NET 6 ランタイムの整理(自己責任)
もし同じ PC に .NET 6 の古いランタイムが何種類も入っている場合、インストーラーが古いキャッシュを参照しようとして 0x80070003(パスが見つからない)を引き起こしていることがあります。
依存アプリが無さそうであれば、「設定 > アプリ > インストールされているアプリ」から古い .NET 6 ランタイムを整理することで、環境が安定する場合があります。ただし、次の点には十分注意してください。
- 現在稼働している Web アプリや業務アプリが、古いバージョンの .NET 6 ランタイムを要求している可能性がある
- むやみにアンインストールすると、そのアプリが起動しなくなることがある
不安な場合は、アプリの提供元に必要なランタイム バージョンを確認するか、テスト環境で事前検証することを強くおすすめします。
ログに出てくる 0x80070652 と 0x80070003 を読み解く
ASP.NET Core 6.0.36 のセットアップログを詳しく見ると、次のようなエラーが混在していることがあります。
- 0x80070652 : 別のインストールが進行中です(ERROR_INSTALL_ALREADY_RUNNING)
- 0x80070003 : システムが指定されたパスを見つけられません(ERROR_PATH_NOT_FOUND)
特に 0x80070003 は、次のようなメッセージとセットで現れることがあります。
Get pseudo bundle size failed with error 0x80070003
これは、インストーラーが「過去にインストールしたバージョンのキャッシュ」を使ってサイズや状態を確認しようとして、そのキャッシュパスが既に無くなっている(または壊れている)ときに出るメッセージです。
ただし、今回のケースで インストールそのものを止めている直接の要因は 0x80070652 の方 です。0x80070003 はあくまで「キャッシュがきれいではない」という副次的なサインであり、これだけのためにキャッシュを手動削除するのはおすすめしません。
Package Cache を手動削除しない方がよい理由
.NET ランタイムや ASP.NET Core のインストーラーは、C:\ProgramData\Package Cache などの場所にキャッシュを残します。ここを手動で削除すると、次のようなリスクがあります。
- 後から「修復」や「アンインストール」を行うときに、元の MSI が見つからずエラーになる
- 別バージョンのインストーラーがキャッシュに依存している場合、想定外の不具合を招く
そのため、どうしても必要な特別な事情がない限り、Package Cache を手動で掃除するのではなく、msiexec.exe の取り残しを解消する方を優先するのが安全です。
「ASP.NET Core 6.0.36 が見つからない」と言われる理由
ポップアップで「ASP.NET Core 6.0.36 が見つかりません」や、それに近いメッセージが繰り返し出るとき、多くの場合は次のような仕組みが裏にあります。
- あるアプリケーションが起動時に「特定のランタイム バージョンが存在するか」をチェックする
- Windows のレジストリやフォルダ構成から、ASP.NET Core 6.0.36 のエントリを探す
- 見つからない場合、インストーラーを呼び出そうとしてセットアップを起動する
- しかし、そのセットアップが 0x80070652 で失敗するため、次の起動時も同じことを繰り返す
つまり、「ASP.NET Core 6.0.36 のインストールそのものが失敗している → アプリ側が毎回セットアップを呼び出す → しかし毎回 0x80070652 で止まる」というループに陥っている状態です。
このループを断ち切るには、一度でいいので ASP.NET Core 6.0.36 のインストールを正常終了させるしかありません。そのために必要なのが、ここまで説明してきた msiexec.exe の停止や Windows Installer の再起動です。
インストール後に確認しておきたいポイント
インストールが完了したと思っても、本当に ASP.NET Core 6.0.36 が入っているかは、明示的に確認しておくと安心です。代表的な確認方法をまとめます。
設定アプリから確認する
- 「設定」アプリを開く
- 「アプリ」 > 「インストールされているアプリ」(または「アプリと機能」)を開く
- 検索ボックスに
ASP.NETや6.0.36と入力して絞り込み
一覧に次のような項目が表示されていれば、インストールは成功しています。
- Microsoft ASP.NET Core 6.0.36 – Shared Framework (x64)
- (IIS ホスティングバンドルを入れている場合)Microsoft .NET Core 6.0.36 – Windows Server Hosting など
コマンドでランタイム一覧を確認する
.NET SDK やランタイムが PATH に通っていれば、次のコマンドでも確認できます。
dotnet --list-runtimes
このコマンドの出力に、次のような行が含まれていれば OK です。
Microsoft.AspNetCore.App 6.0.36 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
もし dotnet コマンド自体が見つからない場合は、.NET SDK または .NET Runtime がインストールされていない可能性があります。その場合は、まず .NET 6 の SDK か Runtime をインストールしたうえで、ASP.NET Core 6.0.36 を入れるようにしてください。
確認ポイントを一覧化
| 確認方法 | 見るべきポイント |
|---|---|
| 設定 > アプリ | 「Microsoft ASP.NET Core 6.0.36 – Shared Framework (x64)」が存在する |
| dotnet –list-runtimes | Microsoft.AspNetCore.App 6.0.36 の行が表示される |
| アプリの動作 | 「ASP.NET Core 6.0.36 が見つかりません」ポップアップが出なくなる |
なぜ「6.0.36」にこだわる必要があるのか
「.NET 8 などもっと新しい .NET を入れたのに、まだ ASP.NET Core 6.0.36 を求められるのはなぜ?」と疑問に思う方もいるかもしれません。これは、アプリケーションが特定のバージョンを明示的に要求しているためです。
- .NET 6 でビルドされた Web アプリが、「minVersion」などで 6.0.36 を指定している
- アプリが内部で使用している一部のライブラリが、6.0.36 以降を前提にしている
- 運用設計上、「検証済みバージョン」として 6.0.36 を固定している
.NET ランタイムには互換性がありますが、「6.0 系」と「8.0 系」は別シリーズです。8.0 を入れても 6.0 が自動で補完されるわけではありません。そのため、アプリが 6.0.36 を要求しているなら、素直に 6.0.36 をインストールするのが最も確実な解決策です。
よくある勘違いと注意点
ASP.NET Core や .NET ランタイムのインストールでトラブルになりやすいポイントを、いくつか挙げておきます。
「新しいバージョンがあれば古いものは要らない」は危険
前述のとおり、アプリケーションは特定のバージョンを要求することがあります。そのため、
- 「8.0 が入ったから 6.0 系は全部消していいだろう」
- 「6.0.36 だけ残して他は消してよいだろう」
といった判断を安易に行うのは避けましょう。特に業務システムや市販製品の場合、どのバージョンを前提としているかはドキュメントで確認する必要があります。
インストーラーを複数同時に動かさない
0x80070652 エラーを防ぐ基本的な心構えとして、
- Windows Update の大きな更新中に別のインストーラーを起動しない
- Office や別アプリのセットアップを複数同時に走らせない
- 裏で実行されているインストール処理中に PC を強制終了しない
といった点を意識しておくと、今回のような「取り残し msiexec.exe」問題はかなり減らせます。
ログを確認するときのポイント
ASP.NET Core や .NET のインストーラーは、詳細なログを残します。ログを確認するときは、次のキーワードで検索してみると原因が見えやすくなります。
0x800706520x80070003msiexecPackage failed
特に 0x80070652 が最初に出ている場合、「別のインストールが進行中」が根本原因である可能性が高いと判断できます。
インストールトラブルを予防する運用のコツ
最後に、今後同じようなトラブルを避けるための運用上のポイントをまとめます。
| 対策 | 具体例 |
|---|---|
| インストール作業の時間帯を決める | Windows Update が走りにくい時間帯(業務時間外など)にまとめて行う |
| インストール作業前に再起動 | 大きなアップデートやランタイムの追加前に一度再起動しておく |
| バージョン管理を記録する | どのサーバーにどの .NET / ASP.NET Core バージョンが入っているか一覧化する |
| 不要な常駐アプリを減らす | インストール作業中はセキュリティ ソフトやアップデータの自動更新を一時停止する |
特にサーバー環境では、どのバージョンのランタイムがどのアプリに使われているかを把握しておくことで、「うっかりアンインストール」や「想定外のアップデート」を防ぐことができます。
まとめ:まずは msiexec.exe の取り残しを疑う
ASP.NET Core 6.0.36 のインストール時に 0x80070652(別のインストールが進行中です)が出て、さらに「ASP.NET Core 6.0.36 が見つからない」というポップアップが繰り返し出る場合、
- 原因の本丸は Windows Installer(msiexec.exe)の取り残しプロセス
- 手動で msiexec.exe を終了してから再インストールすると解消することが多い
- ログに 0x80070003 が出ていても、まずは 0x80070652 を解消するのが優先
- Package Cache の手動削除は原則避ける
というポイントを押さえておけば、同様のトラブルにも応用できます。
具体的な実行コマンドは次のとおりです。
taskkill /im "msiexec.exe" /f
aspnetcore-runtime-6.0.36-win-x64.exe (またはホスティングバンドル)を実行
あるいは PowerShell 派なら、
Stop-Process -Name msiexec -Force
これらの手順で実際にインストールが完了し、dotnet --list-runtimes の出力に Microsoft.AspNetCore.App 6.0.36 が表示されれば、今回の問題は解決しています。あとは、アプリケーション側でエラーや警告が出ないかを確認しながら、安心して ASP.NET Core 6.0.36 を利用していきましょう。

コメント