LoginSignup
0
2

More than 1 year has passed since last update.

IISをオフラインでインストールする

Posted at

はじめに

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

参照

バッチ

すべての機能を追加するわけではないですが、例としてバッチを作成しました。  
このバッチでは、Classic ASPの使用を考慮しているため、.NET Framework 3.5をチェックしています。

必要な機能があれば追加して、不要であれば削除またはコメントアウトしてください。

IIS有効化.bat
@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インストールが有効化チェックするだけで済んだのは、本番導入の時に分かったことです。

そのため、せっかく作ったバッチを使用しませんでした。今回記事にして供養することにしました。

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2