機能の更新中のカスタム アクションの実行

概要

IT 担当者は、機能の更新中および機能の更新後に独自のカスタム アクション スクリプトを実行することで、機能の更新をカスタマイズできます。 カスタム アクションは Windows 10 バージョン 1803 以降で使用できます。

カスタム アクションの実行

カスタム アクションについて

カスタム アクションは、機能の更新プロセス中に実行される .cmd スクリプトです。 これらは、機能の更新の次の 4 つのフェーズで実行できます。

  1. プレインストール フェーズ: このフェーズはセットアップの開始時のものですが、事前の互換性チェックが行われます。 このフェーズ中のアクションは preinstall.cmd で指定されます。 スクリプトが失敗した場合、機能の更新は失敗します。
  2. プレコミット フェーズ: このフェーズは、機能の更新が適用され、システムが再起動される前に行われます。 このフェーズ中のアクションは precommit.cmd で指定されます。 スクリプトが失敗した場合、機能の更新は失敗します。
  3. アンインストール後フェーズ: このフェーズは、ユーザーが機能の更新のアンインストールを開始した後に実行されます。 このフェーズ中のアクションは postuninstall.cmd で指定されます。 postuninstall.cmd は、Windows 10 バージョン 2004 の新機能です。
  4. 完了: このフェーズは、セットアップの完了後に行われます。 機能の更新が失敗した場合、またはロールバックする必要がある場合は、failure.cmd を使用してカスタム操作を実行したり、以前のカスタム スクリプトのアクションを元に戻したりできます。 機能の更新が成功した場合、success.cmd を使用して機能の更新後のアクションを実行できます。 success.cmd は、Windows 10 バージョン 2004 の新機能です。

カスタム アクションは、Windows セットアップによってインストールされる機能の更新中に実行されます。 一部のWindows機能更新プログラムは、毎月の品質更新プログラムを介してインストールされ、後で 「有効化パッケージ」 を介して有効になります。これは、Windows機能をアクティブ化する小型で簡単にインストールできる 「マスタースイッチ」 です。 たとえば、Windows 10 バージョン 2004 から Windows 10 バージョン 20H2 に更新します。 カスタム アクションは、有効化パッケージによってインストールされた機能の更新ではサポートされていません。

カスタム アクション フォルダーの構造

カスタム アクション スクリプトは、スクリプトを単一のアップグレードで実行するか、将来のすべてのアップグレードで実行するかに応じて、%windir%\System32\update\ のサブフォルダーから実行されます。 Windows セットアップは、次の場所でこれらのスクリプトを自動的に検索し、存在する場合は実行します。

フォルダー 説明
%windir%\System32\update\run Windows セットアップでは、これらのフォルダー内のスクリプトを移行するため、将来のアップグレードで実行されます。
%windir%\System32\update\runonce このフォルダー内のスクリプトは 1 回のアップグレードでのみ実行され、将来のアップグレードでは移行されません。
%windir%\System32\update\run\<GUID>

%windir%\System32\update\runonce\<GUID>
実行する各スクリプトを明確に識別するために、一意の GUID を作成します。 この GUID を使用して、run フォルダーと runonce フォルダー内のフォルダーに名前を付けます。
%windir%\System32\update\run\<GUID>\reflectdrivers

%windir%\System32\update\runonce\<GUID>\reflectdrivers
このフォルダー内のブートに不可欠なドライバーが反映されます。 reflectdrivers フォルダーには、必要な暗号化ドライバーのセットのみが含まれていることを確認します。 必要以上のドライバーがあると、アップグレード シナリオに悪影響を与える可能性があります。 反映済みのドライバーの詳細については、「デバイス ドライバー」を参照してください。

更新が失敗した場合、またはロールバックする必要がある場合は、failure.cmd スクリプトを使用してカスタム操作を実行したり、以前のカスタム スクリプトのアクションを元に戻したりできます。 スクリプトが失敗した場合、更新は失敗します。

カスタム アクション スクリプトの場所と例

スクリプトの場所

次の表は、カスタム アクションを実行するためのファイルのフォルダー パス構造を示しています。

実行 (スクリプトは移行されます) 一度だけ実行 (スクリプトは移行されません)
%windir%\System32\update\run\<GUID>\preinstall.cmd %windir%\System32\update\runonce\<GUID>\preinstall.cmd
%windir%\System32\update\run\<GUID>\precommit.cmd %windir%\System32\update\runonce\<GUID>\precommit.cmd
%windir%\System32\update\run\<GUID>\postuninstall.cmd %windir%\System32\update\runonce\<GUID>\postuninstall.cmd
%windir%\System32\update\run\<GUID>\success.cmd %windir%\System32\update\runonce\<GUID>\success.cmd
%windir%\System32\update\run\<GUID>\failure.cmd %windir%\System32\update\runonce\<GUID>\failure.cmd
%windir%\System32\update\run\<GUID>\reflectdrivers\example1.inf %windir%\System32\update\runonce\<GUID>\reflectdrivers\example2.inf
%windir%\System32\update\run\<GUID>\reflectdrivers\example1.sys %windir%\System32\update\run\<GUID>\reflectdrivers\example2.sys

ファイルのパスと名前の例

シナリオ ファイルの場所の例
スクリプト デプロイ データ %windir%\system32\update\
移行ディレクトリ
移行されるスクリプト %windir%\system32\update\run\
移行されないスクリプト %windir%\system32\update\runonce\
GUID を使用したフォルダー パス %windir%\system32\update\run\6971CB27-6F59-43CD-A764-969EE9BBCC1C\
GUID を使用したスクリプトの名前
%windir%\system32\update\run\6971CB27-6F59-43CD-A764-969EE9BBCC1C\preinstall.cmd
%windir%\system32\update\run\6971CB27-6F59-43CD-A764-969EE9BBCC1C\precommit.cmd
%windir%\system32\update\run\6971CB27-6F59-43CD-A764-969EE9BBCC1C\postuninstall.cmd
%windir%\system32\update\run\6971CB27-6F59-43CD-A764-969EE9BBCC1C\failure.cmd
%windir%\system32\update\run\6971CB27-6F59-43CD-A764-969EE9BBCC1C\success.cmd
%windir%\system32\update\runonce\6971CB27-6F59-43CD-A764-969EE9BBCC1C\preinstall.cmd
%windir%\system32\update\runonce\6971CB27-6F59-43CD-A764-969EE9BBCC1C\precommit.cmd
%windir%\system32\update\runonce\6971CB27-6F59-43CD-A764-969EE9BBCC1C\postuninstall.cmd
%windir%\system32\update\runonce\6971CB27-6F59-43CD-A764-969EE9BBCC1C\failure.cmd
%windir%\system32\update\runonce\6971CB27-6F59-43CD-A764-969EE9BBCC1C\success.cmd
反映済みのドライバー フォルダー %windir%\system32\update\run\6971CB27-6F59-43CD-A764-969EE9BBCC1C\reflectdrivers\