Windows10用の.NET Framework 3.5のインストーラーは存在していない?!
.NET Frameworkアプリケーションの中には刷新が進まず、まだまだ.NET Framework 3.5を必要とするものがあるようで、Windows8.1/7はインストーラーを使ってインストールしますが、Windows10の場合、.NET Framework 3.5をインストールしたくてもWindows10用の.NET Framework 3.5のインストーラーは存在していないようです。
検索しまくってもWindows10用のインストーラーが見当たらなかったので、仮にWindows7/8.1用のインストーラーを使ったインストールを試しましたが、エラーになりインストールができませんでした。
このような現象に遭遇して「何とかしてインストールしてやろう」「何回かやればいけんるだろう」とチャレンジするものの「なんで?なんで?入らない?」ともがいて悩んでいる方が多いのではないでしょうか?
そもそもWindows10ではインストールするものではなく有効化するもの
Windows10で.NET Framework 3.5を使えるようにするにはインストーラーからのインストールでなく、「Windowsの機能の有効化または無効化」から.NET Framework 3.5を有効にすることで、必要なファイルがダウンロードされインストールされます。
グループポリシーの設定を変更しないと有効化に失敗する
しかし、Windows10のバージョンによっては上記の有効化がすんなりとうまくいく場合もあるのですが、環境によって普通に画面に従ってもエラーで失敗することがありありました。私の場合、Windows 10 Enterprise 2016 LTSBで何度やっても有効化に失敗しました。
このような場合、解決方法の例として「予めグループポリシーの設定を行う」という面倒くさい方法で解決できることが分かリました。その面倒くさい具体的な方法は以下のページに書いていますので参考にしてください。(オンラインでインストールしたいときはこちらが参考になります。)
その方法を取り入れてインストールに成功するもののオンラインではコンポーネントのダウンロードに時間がかかったりして、なかなかインストールが終わらないことがありました。
そこでサクッとオフラインでインストール(有効化)
そこで、時間をかけずにDISMコマンドからサクッとオフライン状態でインストールする方法を見つけたのでメモ。
やることは2つだけ!
.NET Framework 3.5 をオフラインでサクッとインストール(有効化)するために行うことは以下の2つだけです。
- .cabファイルの用意
- コマンドの実行
この二つだけで、手こずりまくった.NET Framework 3.5の有効化が拍子抜けするくらいサクッと終わります。
まずはインストールメディアからSXSフォルダを探す
Windows10のインストールメディアから 「SXS」というフォルダを探し取り出します。この中に「microsoft-windows-netfx3-ondemand-package.cab」というファイルがあるのですが、これに.NET Framework 3.5 が格納されています。
SXSフォルダの場所
例えば、Windows10のインストールメディアが入ったドライブが「Dドライブ」だったとしたら、以下の階層にあります。
- D:\sources\sxs
Windows10のバージョンによっては、SXSフォルダに入ってるcabファイルの名前や数が異なっている場合がありますが、netfx3という文字列が含まれたcabファイルが必要です。
32bitの場合
microsoft-windows-netfx3-ondemand-package~31bf3856ad364e35~x86~~.cab
64bitの場合
microsoft-windows-netfx3-ondemand-package~31bf3856ad364e35~amd64~~.cab Microsoft-Windows-NetFx3-OnDemand-Package~31bf3856ad364e35~amd64~ja-JP~.cab
※cabファイルOSのビット数が合うものを使用してください。64bit版のWindows10はファイル名の一部にamd64
とあるcabファイルを使用します。32bit版の場合はx86
とあるcabファイルを使用します。このどちらも記載がない物もあります。
このSXSフォルダば場所を覚えておくか、Cドライブ直下などに適当なフォルダを作ってコピーします。
インストールメディアが無い場合
Windows10のインストールメディアがない場合は以下のページ↓からツールをダウンロードしてインストールメディアを作成することができます。
コマンドを実行してインストール
管理者としてコマンドプロンプトを起動し、以下のコマンドを入力すればサクッとインストールできます。(SXSフォルダがEドライブにある場合の例)
DISM /Online /Enable-Feature /FeatureName:NetFx3 /All /LimitAccess /Source:E:\sources\sxs
PowerShellの場合
Enable-WindowsOptionalFeature -Online -FeatureName NetFx3 -All -Source E:\sources\sxs -LimitAccess
エラー:0x800f081fが出たら!?
対処1:グループポリシーを変更して再実行してみる
万が一、以下のように0x800f081fというエラーが出たらグループポリシーを変更して再度チャレンジしてみてください。
その方法は以下のページ↓を参考にしてみてください。
この画面の開き方は上記のページ↑に記載があります。
対処2:Windows10のバージョンにあったCABファイルを使う
(2020/06/29追記)このページは投稿した時点のWindows10 v1903(ビルド18362)の環境で説明していますが、最近リリースされたばかりのWindows 10 v2004環境で試す機会があり、v1903のインストールメディアから取り出したsxsフォルダ内のCABファイルを使うとエラー:0x800f081fが出ました。バージョンの異なるCABファイルを使うとダメな場合があるみたいです。
そこで、改めてWindiws10 v2004のインストールメディアから取り出したmicrosoft-windows-netfx3-ondemand-package~31bf3856ad364e35~amd64~~.cab
(ファイル名は同じ)を使用したところ正常に有効化できたので、もしもエラー:0x800f081fが出た場合はOSのバージョンやビット数が合っていないかもしれませんので、合わせてから再度チャレンジしてみてください。
ちなみに、Windows10のインストールメディアを簡単に用意したいときは以下のページを参考に「Microsoft Windows and Office ISO Download Tool」というフリーソフトを使うと、いろいろなバージョンのWindows10のISOファイルをゲットできます。
本当にインストール(有効化)できているか確認
Windowsの機能と有効化でチェックが勝手に入っていた!
「Windowsの機能の有効化または無効化」を開いてみたところ「.NET Framework 3.5(.NET 2.0及び3.0を含む)」のところにチェックが入っていました。
.NETフォルダも存在している!
C:\Windows\Microsoft.NET\Frameworkのフォルダを開くと、「v3.5」というフォルダが増えていました。
レジストリにも登録があった!
レジストリエディタ(regedit)を起動し、「HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP」を確認したら「v3.5」というキーが作成されていました。
これバッチリです。
バッチファイルで自動化
.NET Framework 3.5の存在確認とインストール実行を行うBATファイルを作ってみました。コピーしたsxsフォルダと同じ階層に置いて使います。PowerShell版はまた今度。
@echo off echo. echo .NET Framework 3.5 をインストールします。 echo. pause echo. echo 既にインストールされていないか確認しています。 echo. set REGROOT=HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NET Framework Setup\NDP\v3.5 reg query "%REGROOT%" >nul 2>&1 echo. if %ERRORLEVEL% equ 0 ( echo 既にインストール済みなので処理を終了します。 echo. goto END ) else ( echo インストールを開始します。 echo. goto POLICYENABLE ) :POLICYENABLE echo ローカルセキュリティポリシーを変更しています。 echo. set POLICYREG=HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\Servicing reg add %POLICYREG% /v UseWindowsUpdate /t REG_DWORD /d 2 /f >nul echo. :INSTALL echo .NET Framework 3.5 をインストールしています。 echo. DISM /Online /Enable-Feature /FeatureName:NetFx3 /All /LimitAccess /Source:"%~dp0sxs" echo. echo 変更したレジストリを削除します。 echo. reg delete %POLICYREG% /f >nul echo. echo 以下のバージョンがインストールされました。 reg query "%REGROOT%" /v Version echo. :END pause exit
以下よりこのバッチファイルと必要なcabファイル(Windows 10 v1903 64bit用)をセットでダウンロードできます。
(v1909やそれ以下のバージョンでも使えるかもしれませんが、v2004ではエラー:0x800f081fが出て失敗します。2020/06/29追記)
管理者として実行
バッチファイルはダブルクリックではなく「管理者として実行」してください。
インストールしている様子
バッチファイルを実行してインストールが正常に行えている様子です。
バッチファイル実行時に以下の画面が出たら
上記のバッチファイルを実行しようとしたときに以下の 「WindowsによってPCが保護されました」 という画面が表示されたら [詳細情報] をクリックしてください。
↓ すると [実行] ボタンが表示されるので、クリックするとバッチファイルで実行されます。
オンラインでインストールしたいとき
オフラインではなく、オンラインで.NET Framework 3.5を有効化したいときは以下を参考にしてください。
参考サイト