将自定义脚本添加到 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)
运算顺序
安装 Windows 之后(但在登录屏幕显示之前),Windows 安装程序将搜索 %WINDIR%\Setup\Scripts\ 目录中的 Setupcomplete.cmd 文件。
如果找到 SetupComplete.cmd 文件,Windows 安装程序将运行该脚本。 Windows 安装程序将操作记录在 C:\Windows\Panther\UnattendGC\Setupact.log 文件中。
安装程序在执行 SetupComplete.cmd 后不会验证脚本中的任何退出代码或错误级别。
警告
无法重新启动系统和恢复运行 SetupComplete.cmd。 你不应通过添加诸如 shutdown -r 之类的命令来重新启动系统。 这将使系统处于错误状态。
如果计算机在安装过程中加入域,则在完成 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。
其中一些设置在用户上下文中运行,其他设置在系统上下文中运行,具体取决于配置阶段。
添加 Microsoft-Windows-Setup\RunAsynchronousCommand 或 RunSynchronousCommand 以在 Windows 安装程序启动时运行脚本。 这对于设置硬盘分区很有帮助。
将 Microsoft-Windows-Deployment\RunAsynchronousCommand 或 RunSynchronousCommand 添加到 auditUser 配置阶段以运行在 PC 进入审核模式时运行的脚本。 这对于自动化应用安装或测试等任务很有帮助。
添加 Microsoft-Windows-Shell-Setup\LogonCommands\AsynchronousCommand 或 FirstLogonCommands\SynchronousCommand 以在开箱即用体验 (OOBE) 之后但用户看到桌面之前运行。 这对于在用户已经选择了语言之后设置特定于语言的应用或内容特别有用。
请谨慎使用这些脚本,因为长脚本会让用户无法快速到达“开始”屏幕。 对于 Windows 的零售版本,这些脚本存在附加限制。 有关信息,请参阅 OEM 合作伙伴中心上的许可和策略指南。
注意
使用 FirstLogonCommands 添加脚本时,即使使用 Ctrl+Shift+F3 启动到审核模式,也会在下次启动时触发该脚本。 要在不触发这些脚本的情况下启动到审核模式,请添加设置:Microsoft-Windows-Deployment\Reseal\Mode = Audit。
相关主题
Windows 安装技术参考部署自定义映像引导 Windows 到审核模式或 OOBE在 Windows 安装期间将设备驱动程序添加到 Windows