Visual Studio 2022 のインストーラ(VisualStudioSetup.exe)が「Downloading 0 bytes」から進まない――多くの場合、原因はネットワークとセキュリティ周りの設定にあります。本記事では、到達先ドメインの把握から疎通確認コマンド、ログの取り方、DNS/プロキシ/ファイアウォール別の対処、オフラインレイアウトによる回避まで、実運用で使える手順を具体的に解説します。数分で切り分けできるチェックリストも付属しています。
Visual Studio 2022 インストーラが 0 bytes から進まないときに起きていること
Visual Studio のブートストラッパーは、起動直後に「チャネル マニフェスト」(製品版・ブランチ・言語やワークロードの索引ファイル)を取得し、続いて本体・コンポーネントを CDN からダウンロードします。0 bytes のまま止まるときは、ほぼ次のいずれかが原因です。
- 名前解決(DNS)の不具合:誤った IP に解決、DNS 応答が遅延/ブロック
- プロキシ/SSL インスペクション:認証や証明書の置換で TLS ハンドシェイクが失敗
- ファイアウォール/セキュリティ製品:特定ドメインやポートのブロック、自己更新の検疫
- システム日時/ルート証明書:時計ズレや失効リスト取得失敗で TLS 失敗
- 古いブートストラッパー:自己更新前にネットワークへ到達できず停止
インストーラがアクセスする主なドメイン(代表例)
固定 IP ではなく ドメイン名ベースでの許可 が原則です。CDN により IP は変動します。以下は実運用で観測されやすい到達先の代表例です(用途は目安)。
| ドメイン(パターン) | 用途 | ポート | 備考 |
|---|---|---|---|
aka.ms | 短縮 URL。チャネル マニフェストなどへのリダイレクト | TCP 443 | HTTP 3xx で別ホストに誘導される |
visualstudio.microsoft.com | 製品サイト、インストーラ自己更新、各種メタデータ | TCP 443 | リダイレクト先を配布する場合あり |
download.visualstudio.microsoft.com | CDN 上の本体/コンポーネント配布 | TCP 443 | 大容量ダウンロード |
*.microsoft.com | 追加マニフェスト、認証/規約、CRL/OCSP 取得など | TCP 443 | 証明書失効確認は別ドメインに発生しうる |
dc.services.visualstudio.com(環境により) | 診断・テレメトリ(無効化可) | TCP 443 | 通信失敗でも進行するが環境でブロック時は遅延要因になることあり |
加えて、企業環境ではウイルス対策/SSL 検査装置やルート証明書配布のために、証明書失効確認(CRL/OCSP)用のドメインへも到達する必要があります。CRL/OCSP のブロックは TLS 失敗(0x80072F8F など)を招くため注意してください。
最短でできる切り分け(5 分チェック)
- 別のネットワークに切り替え(テザリング/個人 Wi‑Fi)。進むなら社内ネットワークの制御が原因。
- 日時の自動同期をオンにし、PC を再起動。時計ズレは TLS 失敗の定番原因。
- 管理者として実行でインストーラを再開。自動更新や証明書導入に権限が要る場合がある。
- 最新ブートストラッパーを新規フォルダに保存して実行(既存ファイルと混在させない)。
- ダメなら本稿の DNS/プロキシ/ファイアウォールの順に深掘り。
疎通を数値で確認するためのコマンド集
名前解決(DNS)の確認
nslookup aka.ms
nslookup download.visualstudio.microsoft.com
# PowerShell(詳細)
Resolve-DnsName aka.ms -Type A,AAAA
Resolve-DnsName download.visualstudio.microsoft.com -Type A,AAAA
# 別 DNS サーバーで検証(例: 公開 DNS)
Resolve-DnsName aka.ms -Type A -Server 8.8.8.8
TCP/TLS 到達性の確認
# ポート 443 の到達性
Test-NetConnection download.visualstudio.microsoft.com -Port 443
# TLS ハンドシェイク/HTTP ステータスを確認(Windows 同梱 curl)
curl -I [https://aka.ms/vs/17/release/channel](https://aka.ms/vs/17/release/channel)
curl -v [https://download.visualstudio.microsoft.com/](https://download.visualstudio.microsoft.com/) 2>&1 | more
HTTP 経由の実ダウンロード確認(タイムアウトや速度も見える)
# PowerShell
$u = "https://aka.ms/vs/17/release/channel"
$out = "$env:TEMP\vs_channel.json"
Invoke-WebRequest -Uri $u -UseBasicParsing -OutFile $out
Get-Item $out | Format-List Length,FullName,CreationTime
# CMD(certutil をダウンローダ代わりに)
certutil -urlcache -split -f [https://aka.ms/vs/17/release/channel](https://aka.ms/vs/17/release/channel) %TEMP%\vs_channel.json
プロキシ使用時の経路確認
# システム(WinHTTP)プロキシの確認/設定
netsh winhttp show proxy
netsh winhttp import proxy source=ie
:: または
netsh winhttp set proxy proxy-server="http=proxy.example.local:8080;https=proxy.example.local:8443" bypass-list="<local>"
# 環境変数プロキシ(ユーザー/システム)
setx HTTP_PROXY [http://user:[email protected]:8080](http://user:[email protected]:8080) /M
setx HTTPS_PROXY [http://user:[email protected]:8443](http://user:[email protected]:8443) /M
原因別・実践手順
ネットワークとセキュリティの確認(許可リストの整備)
| チェック | 手順/ポイント | 備考 |
|---|---|---|
| ドメインの許可 | aka.ms、visualstudio.microsoft.com、download.visualstudio.microsoft.com を アウトバウンドの HTTPS で許可。CDN の IP は変動するため FQDN ベースで管理。 | SSL 検査対象外(バイパス)に指定すると安定する。 |
| ポート制御 | ファイアウォールで TCP 443 の宛先制限がある場合は上記 FQDN への例外ルールを作成。 | HTTP/2/3 をブロックする装置でダウングレード失敗が起きるケースあり。 |
| セキュリティ製品 | リアルタイム保護や Web レピュテーションでインストーラの自己更新が検疫されることがあるため、一時停止して再実行。 | 停止はオフラインで短時間のみ。再有効化を忘れない。 |
| 日時/証明書 | OS の日時自動同期を有効化。ルート証明書/中間証明書が最新か確認。 | 時計ズレは 0x80072F8F の主要因。 |
DNS 解決のトラブルシュート
- キャッシュのクリア:
ipconfig /flushdns実行後、再試行。 - 別 DNS での切り分け:
Resolve-DnsName aka.ms -Server 8.8.8.8の結果と社内 DNS を比較。 - hosts の一時オーバーライド:原因が DNS と分かるかを確認するための診断限定テクニックです。管理者権限で
C:\Windows\System32\drivers\etc\hostsを開き、以下のように 実際に解決した IP を一時的に追記します(RFC の例示アドレスを仮置き)。
# 例(診断のみ。実運用で固定しない)
203.0.113.10 aka.ms
保存後 ipconfig /flushdns を実行し、進むようなら DNS 側の問題が濃厚です。診断後は必ず元に戻すか、エントリを削除して再度 flushdns してください。根本解決は DNS サーバーや名前解決ポリシーの修正です。
プロキシ環境のポイント(認証・証明書・経路)
- WinINET と WinHTTP の差:Visual Studio インストーラはシステム側(WinHTTP)のプロキシ設定を参照する場合があります。
netsh winhttp show proxyで空なら、IE/Edge の設定をnetsh winhttp import proxy source=ieで取り込みます。 - 認証付きプロキシ:資格情報が必要な場合は環境変数
HTTPS_PROXYを用いるか、プロキシ側で認証通過させるルールを追加します。 - SSL インスペクション:中間者証明書で TLS を張り替える方式では、Microsoft 側の厳格なピン留め/検証で失敗することがあります。該当 FQDN を TLS 復号の対象外 にします。
- プロキシ例外:
aka.ms;visualstudio.microsoft.com;download.visualstudio.microsoft.comを例外/直通に。
Windows/ネットワーク サービスの確認
- サービス:
Cryptographic Services、Windows Updateなどの基盤サービスが停止していないか。 - IPv6/IPv4 の競合:一時的に IPv6 を無効化して動作に差が出るか確認(根本はルータ/ファイアウォールでの MTU/フラグメント問題の解消)。
- MTU/PMTUD:SSL/HTTP2 でのフラグメントや ICMP ブロックによりハングする例があります。VPN 経由時は特に注意。
ログの取り方と読み方(回答 3)
Visual Studio インストーラは詳細なログを出力します。まずは %TEMP%(例:C:\Users\<User>\AppData\Local\Temp)を開き、以下のファイル群を探します。
| ファイル名(例) | 役割 | 主な着眼点 |
|---|---|---|
dd_bootstrapper_*.log | ブートストラッパーの開始~自己更新 | HTTP ステータス、タイムアウト、リダイレクト先、TLS 例外 |
dd_installer_*.log | インストーラ UI/本体ダウンロード | CDN からの取得状況、再試行回数、ハッシュ検証 |
dd_setup_*.log | 各パッケージの適用/復元 | MSI/VSIX エラーコード、ロールバック理由 |
大量のログから原因を素早く特定するには、次のキーワードで検索します。
HTTP 40x/HTTP 50x(権限・URL・プロキシ・サーバー)timeout/timed out(ネットワーク遅延/ブロック)WinHttpSendRequest,ERROR_WINHTTP_SECURE_FAILURE,0x80072F8F(TLS/証明書)Name resolution/0x80072EE7(DNS)
さらに詳細な収集が必要なら、Microsoft 公式のログ収集ユーティリティ(collect.exe)を使用します。実行すると vslogs.zip が生成され、関連サービス/レジストリ/インストーラの総合ログがまとまります。サポートへの提供やチーム内共有に便利です。
HTTP/TLS エラーコードと対処早見表
| エラー/症状 | 想定原因 | 対処 |
|---|---|---|
HTTP 407(Proxy Authentication Required) | プロキシ認証が未設定/期限切れ | WinHTTP へインポート、HTTPS_PROXY 設定、プロキシ例外 |
HTTP 403/401 | URL の誤り/企業フィルタでカテゴリブロック | 許可リストへ追加、SSL 検査のバイパス |
HTTP 404 | 古いマニフェスト/リダイレクト失敗 | 最新ブートストラッパーで再取得、DNS/プロキシ経路確認 |
0x80072EE7(名前解決失敗) | DNS 応答なし/誤解決 | 別 DNS に切替、hosts で診断、DNS 修復 |
0x80072F8F(セキュリティ/TLS 失敗) | 時計ズレ/証明書失効確認不可/SSL 検査 | 日時同期、CRL/OCSP の許可、SSL 検査バイパス |
0x80072EFE(接続切断) | 中間装置の切断/MTU 問題 | 別経路で再試行、VPN/ファイアウォール設定見直し |
基本のインストール前チェック(再確認)
- 対応 OS と要件:Visual Studio 2022 は最新の Windows 10/11(サーバーは対応バージョン)を前提とします。ディスク空き容量(ワークロードにより数十 GB)も確保。
- 管理者として実行:ショートカットを右クリック→「管理者として実行」。
- 再起動:ネットワークスタックや更新のロックをクリア。
- 最新のブートストラッパー:既存ファイルと混在させず、空の新規フォルダに保存して起動。
オフライン インストーラ(レイアウト)で突破する
ネットワーク制限が厳しい環境では、レイアウト(オフライン インストーラ)の作成が有効です。インターネットに出られる端末で必要コンポーネントを事前に取得し、社内へ持ち込みます。
代表的なコマンド例
# 例:Community エディションのレイアウトを作成(日本語/英語)
vs_Community.exe --layout C:\VS2022_Offline --lang ja-JP en-US
# ワークロードを絞る(.NET デスクトップ)
vs_Community.exe --layout C:\VS2022_Offline --add Microsoft.VisualStudio.Workload.ManagedDesktop --lang ja-JP
# 取得後の整合性チェック
vs_Community.exe --verify C:\VS2022_Offline
オフラインからのセットアップでも、初回起動時に一部のライセンス確認/証明書失効確認で外部接続が発生する場合があります。社内で完全オフラインを要求する場合は、証明書/CRL 配布方針も併せて検討してください。
トラフィックの可視化(深掘り診断)
- Fiddler/HTTP プロキシ:インストーラの通信をプロキシ経由にして HTTP ステータスやハンドシェイクを確認。証明書置換の有無が見える。
- Wireshark:SYN → TLS ClientHello → ServerHello の流れでどこで止まるかを確認。ClientHello 後の応答が無いなら中間装置のブロック/切断が疑わしい。
- イベント ビューアー:
Applications and Services Logs > Microsoft > Windows > CAPI2などで証明書失敗を確認。
DNS と hosts を使うときの注意点(重要)
hosts に固定 IP を書くのは診断の一時措置のみに留めてください。CDN では IP が短期間で変わります。固定したままだと将来の配信が別経路になった際に逆効果です。テスト時は nslookup で得た現行 IP を用い、検証後は削除して ipconfig /flushdns を忘れずに。
企業ネットワークあるある対策
- カテゴリベースの URL フィルタ:ダウンロード/ソフトウェア更新カテゴリが一括ブロックされがち。上記 FQDN を明示許可に。
- SSL インスペクションの例外:技術検証で aka.ms / visualstudio.microsoft.com / download.visualstudio.microsoft.com を復号対象外へ。問題が解消するか確認。
- プロキシのアイドル タイムアウト:大容量ダウンロードでテストフローが長引くと切断。Keep-Alive と アイドル時間の設定を調整。
- IP レピュテーション:CDN の新しい POP が未分類でブロックされることがある。URL/FQDN での許可を基本に。
よくある質問(FAQ)
Q. どの URL / IP に接続していますか?(回答 1)
代表的には aka.ms(短縮/リダイレクト)、visualstudio.microsoft.com(メタデータ/自己更新)、download.visualstudio.microsoft.com(CDN)が中心です。IP は CDN により頻繁に変わるため、IP 固定ではなく FQDN を許可してください。証明書関連で *.microsoft.com 系や CRL/OCSP 先への到達も必要になる場合があります。
Q. それらにアクセスできているかの確認方法は?(回答 2)
次の順で確認します。
- DNS:
nslookup/Resolve-DnsNameで A/AAAA レコードが得られるか。 - TCP/443:
Test-NetConnection <host> -Port 443が成功するか。 - TLS/HTTP:
curl -I https://aka.ms/vs/17/release/channelが 3xx/200 を返すか。 - 実ファイル:
Invoke-WebRequestやcertutil -urlcacheで小さな JSON を取得できるか。 - プロキシ:
netsh winhttp show proxyとsetx HTTPS_PROXY(必要時)で経路を明示。
Q. 取得できるログは?(回答 3)
%TEMP% に dd_bootstrapper_*.log、dd_installer_*.log、dd_setup_*.log が生成されます。さらに collect.exe を実行すると vslogs.zip に集約できます。キーワード HTTP、timeout、0x80072(WinHTTP 系)、certificate を検索すると原因に早く到達できます。
現場で使える「チェックリスト」(コピーして運用に)
- [ ] 端末を別ネットワークに切替えて再現確認(社内依存か切り分け)。
- [ ] OS の日時自動同期(NTP)を確認、再起動。
- [ ] 最新の VisualStudioSetup.exe を新規フォルダに保存し、管理者として実行。
- [ ]
aka.ms/visualstudio.microsoft.com/download.visualstudio.microsoft.comを HTTPS で許可(SSL インスペクション対象外)。 - [ ]
nslookup/Test-NetConnection/curl -I/Invoke-WebRequestで疎通確認。 - [ ] プロキシ設定(WinHTTP/環境変数)を整合、認証状態を確認。
- [ ] %TEMP% の
dd_*.logを確認。必要なら collect.exe でvslogs.zipを取得。 - [ ] オフライン レイアウトで回避し、インストール後に復旧(根本対処はネットワーク側)。
0 bytes で止まる根本を素早く見つけるミニ・フローチャート
止まる → 別ネットワークで進む? → はい:社内ネットワーク起因。DNS/プロキシ/SSL 検査の順で切り分け。/いいえ:端末起因の可能性。日時・証明書・セキュリティ製品・古いブートストラッパーを疑う → それでも不可:オフライン レイアウトで暫定導入し、vslogs.zip を採取して恒久対策へ。
トラブルを未然に防ぐ「運用の型」
- 標準の許可リスト:情シス/ネットワークチームで FQDN 許可の標準を策定し、変更管理を回す。
- 検証端末:社外ネットワークに出られる検証専用端末を 1 台用意(オフライン レイアウト作成と切り分け専用)。
- 定期的な接続テスト:月 1 回、上記コマンドで疎通を CI 的にチェック(スクリプト化推奨)。
- 証明書運用:ルート/中間の更新と CRL/OCSP 到達の監視を仕組み化。
参考:便利な PowerShell スニペット集(貼って使える)
主要 FQDN の疎通と TLS 検証をまとめて実行
$hosts = @(
"aka.ms",
"visualstudio.microsoft.com",
"download.visualstudio.microsoft.com"
)
foreach ($h in $hosts) {
Write-Host "=== $h ==="
try {
Resolve-DnsName $h -Type A,AAAA | Out-Host
} catch { Write-Warning "DNS 失敗: $h" }
Test-NetConnection $h -Port 443 | Select-Object ComputerName,RemotePort,TcpTestSucceeded | Format-List
try {
$res = Invoke-WebRequest -Uri ("https://{0}" -f $h) -Method Head -UseBasicParsing -TimeoutSec 15
"{0} : {1}" -f $h, $res.StatusCode | Out-Host
} catch { Write-Warning "HTTP/TLS 失敗: $h - $($_.Exception.Message)" }
}
WinHTTP プロキシの取り込みと確認
netsh winhttp show proxy
netsh winhttp import proxy source=ie
netsh winhttp show proxy
ログ フォルダから Visual Studio 関連ログだけを抽出
$tmp = $env:TEMP
Get-ChildItem $tmp -Filter "dd_*.log" | Sort-Object LastWriteTime -Descending | Select-Object -First 20 | ForEach-Object {
Write-Host $_.FullName
}
まとめ
「0 bytes から進まない」現象の大半は DNS 誤解決 と プロキシ/ファイアウォール/SSL 検査が原因です。本記事のコマンド群で疎通を数値化し、ログ(dd_*.log / vslogs.zip)で裏づけを取れば、どこで止まっているかが数分で見えてきます。根本は FQDN ベースの許可と証明書経路の整備。難しい環境でも、オフライン レイアウトを活用すれば導入自体は前へ進められます。ぜひ、チェックリストをチーム内の標準手順に組み込み、次回以降のインストールをスムーズに進めてください。
付録:対策カテゴリ別の実行テーブル
| 対策カテゴリ | 手順・ポイント | 備考 |
|---|---|---|
| ネットワークとセキュリティの確認 | FQDN aka.ms / visualstudio.microsoft.com / download.visualstudio.microsoft.com を許可。 SSL 検査や URL フィルタから上記 FQDN を除外。 別ネットワーク(テザリング/自宅回線)で再現確認。 | IP は変動。FQDN ベース管理が原則。 |
| DNS 解決 | ipconfig /flushdns 実行。 Resolve-DnsName で社内 DNS と公開 DNS を比較。 診断目的で hosts に一時 IP を追加→検証後に削除。 | 固定は厳禁。必ず元に戻す。 |
| インストーラのログ取得 | %TEMP% の dd_*.log を確認。 collect.exe で vslogs.zip を作成。 HTTP ステータス/TLS 例外/名前解決失敗の記録を特定。 | テキスト検索で効率化。 |
| 基本の事前チェック | 対応 OS / ディスク空き / 権限の確認。 管理者として実行、再起動。 最新ブートストラッパーを新規フォルダーに保存。 必要ならオフライン レイアウトで回避。 | 企業環境では特に有効。 |
補足:セキュリティを落とさずに成功率を上げるコツ
- 最小権限の例外:全社的な「ダウンロード許可」ではなく、FQDN 指定で最小限の例外に絞る。
- 監査ログを活用:プロキシ/ゲートウェイのブロックログに aka.ms → download.visualstudio.microsoft.com の 3xx 追従失敗が記録されていないか確認。
- リトライ設計:ネットワークのアイドルタイムアウトが短い場合、分割ダウンロードや時間帯(混雑回避)で改善することがある。
結論:「どの URL に行っているのか」「そこに到達できているのか」「ログはどこか」。この 3 点を具体的なコマンドとチェックリストで押さえれば、Visual Studio 2022 の 0 bytes 問題は高確率で解消できます。ぜひ本記事の手順をそのまま現場の Runbook に落とし込んでご活用ください。

コメント