はじめに
Windows 10には、IISが最初からインストールされていません。
IISをインストールしようと「コントロールパネル」の「プログラムと機能」にある「Windows の機能の有効化または無効化」の「インターネットインフォメーションサービス」の階層から必要な機能チェックしてインストールとするとWindows Updateが必要な旨のメッセージが出ます。
しかしながら、今回はオフライン環境でインストールを行いたいのです。
環境
- Windows 10 Enterprise 評価版 64 ビット エディション
- VirtualBox 6.1.34
- Mac Book Pro(2.3 GHz 8コアIntel Core i9) Monterey 12.4
Windows 10 IoT版(LTSC)であれば、Windows Update不要でIISがオフラインでインストールできます。
オフライン環境でIISインストール
展開イメージのサービスと管理(DISM.exe)は、Windows イメージを提供および準備するために使用できるコマンドライン ツールです。このDISMコマンドを使うことによりオフラインでIISインストールことが出来ます。
IIS機能一覧
Windows 10版になります。
Windows Server 2016と比較した場合、機能数が同じですが表示順番に違いがありました。
インターネットインフォメーションサービス
FTP サーバー:IIS-FTPServer
FTP Service:IIS-FTPSvc
FTP 拡張:IIS-FTPExtensibility
Web 管理ツール
IIS 6 管理互換
IIS 6 WMI互換:IIS-WMICompatibility
IIS 6 スクリプトツール:IIS-LegacyScripts
IIS 6 管理コンソール:IIS-LegacySnapIn
IIS 6 メタベースおよびIIS6構成との互換 :IIS-Metabase
IIS 管理コンソール:IIS-ManagementConsole
IIS 管理サービス:IIS-ManagementService
IIS 管理スクリプトおよびツール:IIS-ManagementScriptingTools
World Wide Webサービス
HTTP共通機能
HTTPエラー:IIS-HttpErrors
HTTPリダイレクト:IIS-HttpRedirect
WebDAV発行:IIS-WebDAV
ディレクトリの参照:IIS-DirectoryBrowsing
既定のドキュメント:IIS-DefaultDocument
静的なコンテンツ:IIS-StaticContent
アプリケーション開発機能
.NET Extensibility 4.8:IIS-NetFxExtensibility45
.NET 拡張機能 3.5:IIS-NetFxExtensibility
Application Initialization:IIS-ApplicationInit
ASP:IIS-ASP
ASP.NET 3.5:IIS-ASPNET
ASP.NET 4.8:IIS-ASPNET45
CGI:IIS-CGI
ISAPIフィルタ:IIS-ISAPIFilter
ISAPI拡張:IIS-ISAPIExtensions
WebSocket プロトコル:IIS-WebSockets
サーバー側インクルード:IIS-ServerSideIncludes
セキュリティ
IIS クライアント証明書のマッピング証明:IIS-IISCertificateMappingAuthentication
IP セキュリティ:IIS-IPSecurity
SSL 証明書の集中サポート:IIS-CertProvider
URL 承認:IIS-URLAuthorization
Windows 認証:IIS-WindowsAuthentication
クライアント証明書のマッピング認証:IIS-ClientCertificateMappingAuthentication
ダイジェスト認証:IIS-DigestAuthentication
基本認証:IIS-BasicAuthentication
要求のフィルタリング:IIS-RequestFiltering
パフォーマンス機能
静的なコンテンツの圧縮:IIS-HttpCompressionStatic
動的なコンテンツの圧縮:IIS-HttpCompressionDynamic
状態と診断
HTTP ログ:IIS-HttpLogging
ODBC ログ:IIS-ODBCLogging
カスタム ログ:IIS-CustomLogging
トレース:IIS-HttpTracing
ログ ツール:IIS-LoggingLibraries
要求の監視:IIS-RequestMonitor
インターネットインフォメーションサービスのホスト可能なWebコア:IIS-HostableWebCore
参照
- 【2019年版】コマンドラインからWindows 10の機能を有効・無効にする
- 「Disable-WindowsOptionalFeature」コマンドレットで指定するWindows 10の機能リスト
バッチ
すべての機能を追加するわけではないですが、例としてバッチを作成しました。
このバッチでは、Classic ASPの使用を考慮しているため、.NET Framework 3.5をチェックしています。
必要な機能があれば追加して、不要であれば削除またはコメントアウトしてください。
@echo off
cd /d %~dp0
openfiles > NUL 2>&1
IF %ERRORLEVEL% EQU 0 goto Admin
echo 管理者権限で実行してください。
pause
exit
:Admin
rem .NET Framework 3.5の存在確認
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 .NET Framework 3.5がインストール済み
echo.
) else (
echo .NET Framework 3.5を先にインストールしてください。
echo.
pause
exit
)
rem ------------------------------------------------------------------------------
rem IISの機能有効化
rem
echo IISの機能を有効化しています。
echo.
dism /online /enable-feature /all /featurename:IIS-WMICompatibility
dism /online /enable-feature /all /featurename:IIS-LegacyScripts
dism /online /enable-feature /all /featurename:IIS-LegacySnapIn
dism /online /enable-feature /all /featurename:IIS-Metabase
dism /online /enable-feature /all /featurename:IIS-ManagementConsole
dism /online /enable-feature /all /featurename:IIS-ManagementService
dism /online /enable-feature /all /featurename:IIS-ManagementScriptingTools
dism /online /enable-feature /all /featurename:IIS-HttpErrors
dism /online /enable-feature /all /featurename:IIS-DirectoryBrowsing
dism /online /enable-feature /all /featurename:IIS-DefaultDocument
dism /online /enable-feature /all /featurename:IIS-StaticContent
dism /online /enable-feature /all /featurename:IIS-NetFxExtensibility45
dism /online /enable-feature /all /featurename:IIS-NetFxExtensibility
dism /online /enable-feature /all /featurename:IIS-ApplicationInit
dism /online /enable-feature /all /featurename:IIS-ASP
dism /online /enable-feature /all /featurename:IIS-ASPNET
dism /online /enable-feature /all /featurename:IIS-ASPNET45
dism /online /enable-feature /all /featurename:IIS-ISAPIFilter
dism /online /enable-feature /all /featurename:IIS-ISAPIExtensions
dism /online /enable-feature /all /featurename:IIS-WindowsAuthentication
dism /online /enable-feature /all /featurename:IIS-RequestFiltering
dism /online /enable-feature /all /featurename:IIS-HttpCompressionStatic
dism /online /enable-feature /all /featurename:IIS-HttpLogging
rem ----- 終了処理
echo.
echo IISの機能有効化が完了しました。
pause
exit
.NET Framework 3.5のインストール
Windows 10では、単純にDISMコマンドを使用しただけでは、.NET Framework 3.5をオフラインでインストールできません。ISOファイルから必要なCABファイルを用意する必要があります。
Windows 10 IoT版(LTSC)であれば、最初から.NET Framework 3.5が有効になっています。
最後に
Windows 10 IoT版のインストール準備のために、仮想環境でWindows 10の通常版で導入検証をしていたのですが、.NET Framework 3.5のオフラインインストールでの0x800f081fエラーやIISのオフラインインストールでつまずくなどして、調査に時間がかかってしまいました。
Windows 10 IoT版が最初から.NET Framework 3.5が有効だったり、IISインストールの有効化チェックするだけで済んだのは、本番導入の時に分かったことです。
そのため、せっかく作ったバッチを使用しませんでした。今回記事にして供養することにしました。