将自定义脚本添加到 Windows 安装程序

Windows 安装脚本

Setupcomplete.cmd 和 ErrorHandler.cmd 是在 Windows 安装过程期间或安装之后运行的自定义脚本。 这两个脚本可用于安装应用程序或通过使用 cscript/wscript 脚本运行其他任务。

  • %WINDIR%\Setup\Scripts\SetupComplete.cmd:此脚本以本地系统权限运行,并在用户看到桌面后立即启动。 使用 OEM 产品密钥时,此设置被禁用,Enterprise 版和 Windows Server 操作系统除外。
  • %WINDIR%\Setup\Scripts\ErrorHandler.cmd:当安装程序遇到致命错误时,此脚本会自动运行。 它以本地系统权限运行。

安装程序完成后运行脚本 (SetupComplete.cmd)

运算顺序

  1. 安装 Windows 之后(但在登录屏幕显示之前),Windows 安装程序将搜索 %WINDIR%\Setup\Scripts\ 目录中的 Setupcomplete.cmd 文件。

  2. 如果找到 SetupComplete.cmd 文件,Windows 安装程序将运行该脚本。 Windows 安装程序将操作记录在 C:\Windows\Panther\UnattendGC\Setupact.log 文件中。

    安装程序在执行 SetupComplete.cmd 后不会验证脚本中的任何退出代码或错误级别。

    警告

    无法重新启动系统和恢复运行 SetupComplete.cmd。 你不应通过添加诸如 shutdown -r 之类的命令来重新启动系统。 这将使系统处于错误状态。

  3. 如果计算机在安装过程中加入域,则在完成 Setupcomplete.cmd 之前,域中定义的组策略不会应用于计算机。 这是为了确保组策略配置活动不会干扰脚本。

如果 Windows 安装程序遇到致命错误 (ErrorHandler.cmd),则运行脚本

当你同时安装多个系统时,则 ErrorHandler.cmd 很有用。 这有助于你检测 Windows 安装过程中何时发生错误。 当它发生时,安装程序会自动运行一个脚本,该脚本可以包含自定义命令或操作来解决错误的原因。

如果 Windows 安装程序遇到致命错误而无法完成安装,则 Windows 安装程序将在以下目录中搜索命令脚本:%WINDIR%\Setup\Scripts\ErrorHandler.cmd。 根据是否找到脚本,将发生两种操作之一。

  • 如果未找到脚本,将显示一个带有错误文本的对话框。 用户必须在 Windows 安装程序退出之前关闭此对话框。
  • 如果找到脚本,该脚本将同步执行。 不显示任何对话框或错误文本。 ErrorHandler.cmd 脚本完成运行后,Windows 安装程序将退出。

根据 Windows 安装程序的阶段,计算机将回到执行 Windows 安装程序的环境,例如早期版本的操作系统或 Windows 预安装环境 (Windows PE)。

当 Windows 安装程序遇到多个错误并多次运行 ErrorHandler.cmd 脚本时,可能存在一些实例。 为 ErrorHandler.cmd 开发代码时,请确保可以多次运行此脚本。

使用 ErrorHandler.cmd

若要使用 ErrorHandler,你可以执行以下任一操作:

  • 挂载映像,并将其添加到映像,在 %WINDIR%\Setup\Scripts\ErrorHandler.cmd 中。 卸载映像。

    -或-

  • 将 ErrorHandler.cmd 添加到临时文件位置(例如,C:\Temp\ErrorHandler.cmd),然后使用 /m 选项运行 Windows 安装程序。

    Setup /m:C:\Temp
    

    要了解更多信息,请参阅 Windows 安装程序命令行选项

使用无人参与运行脚本

使用这些设置之一创建一个 Unattend.xml 文件以在 Windows 安装程序过程中运行。 这可以与 OEM 产品密钥一起使用。

要运行可以同时启动的服务或命令,请使用 RunAsynchronousCommands。

其中一些设置在用户上下文中运行,其他设置在系统上下文中运行,具体取决于配置阶段。

Windows 安装技术参考部署自定义映像引导 Windows 到审核模式或 OOBE在 Windows 安装期间将设备驱动程序添加到 Windows