Windows10にオフライン環境で.NET Framework 1.1 および .NET Framework 3.5をインストールする

# はじめに
Windows 7の延長サポート終了が2020年1月14日となっています。
そのため、既存アプリケーションのWindows 10の検証作業を行っています。
既存アプリケーションの中には、.NET Framework 1.1 を使用しているものがあります。
また、インターネット環境があれば.NET Framework 3.5 のインストールが簡単に出来るのですが、工場などインターネット環境が使用できないオフライン環境だとインストールが面倒なので、ここも少し書いていきます。

先程、調べたらWindows 7で2023年まで延ばせる方法もあるようですが、どちらかというと大企業向けかな。
>2020年1月14日の延長サポート終了後、2023年1月までWindows 7のセキュリティ更新プログラムを受け取ることができるのが、「Windows 7 Extended Security Update（ESU）」というプログラム
[Windows 7のサポートを2023年まで延ばせるって聞いたけど……](https://internet.watch.impress.co.jp/docs/column/win7faq/1180730.html)

# .NET Framework 1.1のインストール
>Windows 8、Windows 8.1、Windows Server 2012、Windows Server 2012 R2、または Windows 10 に .NET Framework 1.1 を手動でインストールすることはできません。 サポート対象から除外されました。 パッケージをインストールしようとすると、「このバージョンの .NET Framework は以前にインストールしたバージョンと互換性がないため、セットアップを続行できません。」というエラー メッセージが表示されます。
[Windows 8、Windows 8.1、または Windows 10 での .NET Framework 1.1 アプリの実行](https://docs.microsoft.com/ja-jp/dotnet/framework/migration-guide/migrating-from-the-net-framework-1-1)

上記サイト(microsoftの.NET Framework移行ガイド)には、そのように書かれているのですが、普通にインストールできました。

下記3つをダウンロードします。
もちろんダウンロード自体はネット環境があるところに行います。

* Microsoft .NET Framework Version 1.1 再頒布可能パッケージ
https://www.microsoft.com/ja-jp/download/details.aspx?id=26

* Microsoft .NET Framework Version 1.1 日本語 Language Pack
https://www.microsoft.com/ja-jp/download/details.aspx?id=20294

* Microsoft .NET Framework 1.1 Service Pack 1
https://www.microsoft.com/ja-jp/download/details.aspx?id=33

## Microsoft .NET Framework Version 1.1 再頒布可能パッケージ
![dotNET1.1Setup1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/14053/35da315e-2edc-7e58-6c44-5c79f78f204f.png)
![dotNET1.1Setup2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/14053/384806db-1949-25a2-8a0f-ec95cad06787.png)
![dotNET1.1Setup3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/14053/4f623f59-55ac-e14a-2a17-902b3ed0da29.png)
![dotNET1.1Setup4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/14053/f3c0b874-d4d1-dd0e-cde8-288fbf0396ad.png)
![dotNET1.1Setup5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/14053/75937571-44c7-3817-3a73-09618f4d6eb4.png)

## Microsoft .NET Framework Version 1.1 日本語 Language Pack
![dotNET1.1Setup6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/14053/55146feb-90cc-db74-69bc-f7d8d466db19.png)
![dotNET1.1Setup7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/14053/a4ec4359-6721-058d-99cb-68134635693c.png)
![dotNET1.1Setup8.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/14053/9a0227ff-e53d-d242-2afd-3730de74bf68.png)
![dotNET1.1Setup9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/14053/09484d65-5d5f-c089-34fb-b647f24fb08e.png)
![dotNET1.1Setup10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/14053/42b0da01-7866-e7cc-5039-40b240a77705.png)

## Microsoft .NET Framework 1.1 Service Pack 1 のインストール
![dotNET1.1Setup11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/14053/cec2a5b8-ea60-c865-d1e4-20d4ef7aa763.png)
![dotNET1.1Setup12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/14053/fa7b7a3b-d7cb-d7b7-4181-1fdf3175ad72.png)
![dotNET1.1Setup13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/14053/f2b558ef-4fb6-1224-3603-140ffa6bb298.png)
![dotNET1.1Setup14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/14053/107ff70d-1546-7678-59ed-79507445d491.png)

## プログラムと機能
![dotNET1.1Setup15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/14053/b4614719-ae3b-a5fa-7aec-acef7733e765.png)

# .NET Framework 3.5のインストール
残念ながらオフライン環境では下記サイトの実行ファイルは使用できません。
Microsoft .NET Framework 3.5 Service Pack 1 (フル パッケージ)
https://www.microsoft.com/ja-jp/download/details.aspx?id=25150

## cabファイルの取得
Windows 10のインストールディスクが必要となります。
今だとISO自体は無料でダウンロードできます。※但し、英語版
[Windows 10 のダウンロード - PC への Windows 10 のインストールをご希望ですか?](https://www.microsoft.com/ja-jp/software-download/windows10)
※ライセンスキーはWindows 10のインストール時にのみ必要ってだけ。

Windows 10 セットアップにて「別のPCのインストールメディアを作成する(USBフラッシュドライブ、DVD、またはISOファイル)」を選択します。自分は使用するメディアでISOファイルを選択しました。ISOファイルができたらマウントします。

【2019/08/27 追記】
64bitOSでWindows 10のインストールディスクの用意が出来ない場合、下記サイトの「こちら(70MB)」からも取得できます。
[Windows 10 (1803) で、.NET Framework 3.5 のオフラインインストールができない](https://itnews.jp/?p=13353)

### 0x800f081fエラー
【2022/07/16 追記】
Windows10 v1903で取得したCABファイルと、Windows 10 v2004で使用すると**0x800f081f**エラーになりました。どうもバージョンの異なるCABファイルを使用すると発生するようです。
バージョンに合わせたISOファイルをダウンロードして、ISOファイルをマウントしてsources/sxsフォルダを取得してください。

https://www.pasoble.jp/windows/10/download-past-version.html

### 32bitの場合
sources/sxsフォルダから、下記ファイルをインストールしたいPCにコピーします。(例 C:\Temp直下)

```
microsoft-windows-netfx3-ondemand-package~31bf3856ad364e35~x86~~.cab
```

### 64bitの場合
sources/sxsフォルダから、下記ファイルをインストールしたいPCにコピーします。(例 C:\Temp直下)
日本語版はja-JPもあります、英語版はありません。

```
microsoft-windows-netfx3-ondemand-package~31bf3856ad364e35~amd64~~.cab
Microsoft-Windows-NetFx3-OnDemand-Package~31bf3856ad364e35~amd64~ja-JP~.cab
```

## インストール
例 C:\Temp直下 に cabファイルをコピーした前提とします。
コマンドプロンプトを管理者権限で起動し、以下コマンドを実施

```
DISM /Online /Enable-Feature /FeatureName:NetFx3 /All /LimitAccess /Source:c:\Temp
```

### 実行結果
```
Microsoft Windows [Version 10.0.17763.503]
(c) 2018 Microsoft Corporation. All rights reserved.

C:\WINDOWS\system32>DISM /Online /Enable-Feature /FeatureName:NetFx3 /All /LimitAccess /Source:c:\Temp

展開イメージのサービスと管理ツール
バージョン: 10.0.17763.1

イメージのバージョン: 10.0.17763.503

機能を有効にしています
[==========================100.0%==========================]
操作は正常に完了しました。

C:\WINDOWS\system32>
```

### 確認
チェックが付いている。
![dotNET3.5Install.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/14053/0a37ace4-6cd4-3c6e-ea91-3131061288d9.png)

一応、レジストリを確認する。
[インストールされている全ての .NET Framework のバージョンを列挙する](https://qiita.com/asterisk9101/items/f13da78b4cb9ab6d3c4b)

```
C:\> for /f "usebackq tokens=*" %k in (`reg query "HKLM\SOFTWARE\Microsoft\NET Framework Setup\NDP"`) do @(reg query "%k" | find "Version")
    Version    REG_SZ    2.0.50727.4927
    Version    REG_SZ    3.0.30729.4926
    Version    REG_SZ    3.5.30729.4926
```

ターゲットフレームワークを .NET Framework 2.0 にした簡易アプリケーションを作成して起動することを確認。
![dotNET2.0App.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/14053/59a85ff8-327a-55f8-f81b-eede7bc2ba11.png)

# 最後に
例えば工場などではインターネット環境を使用できずオフライン環境によるインストールが必要になったりします。
.NET Frameworkのターゲットを変えればほとんど問題なく動作するといっても、やはり検証が必要です。担当や開発した人がいなくなったアプリケーションだと検証が大変です。まだ、.NET Frameworkのターゲットを変えないで動作してくれた方がましだったりします。

そうそう、Windows XP は、.NET Framework 4.0までで改良版の.NET Framework 4.5以降はインストールすることが出来ないんですよね。
[Windows XPや 2000に何故 .NET Framework 4.5が入らないか](http://blog.livedoor.jp/blackwingcat/archives/1707506.html)