无人值守的 Windows 安装程序隐式应答文件搜索顺序

无人值守的 Windows 安装程序

Windows 安装程序使用无人参与的安装应答文件来自动化 Windows 的在线安装和自定义。此方法对于大规模部署以及在每台计算机的配置中实现一致性和精确性非常有用。

无人值守安装需要创建一个或多个包含安装自定义的应答文件。例如,您可以更改 Internet Explorer 配置或分区和格式化硬盘。有关使用 Windows 系统映像管理器 (Windows SIM) 创建应答文件的信息,请参阅Windows 系统映像管理器技术参考

Windows 安装程序有两种应用应答文件的方法:显式指定应答文件或隐式搜索应答文件。

显式指定应答文件

您可以使用 **setup.exe /unattend:** filename命令明确指定应答文件。

在此示例中,文件名是应答文件的本地或 UNC 路径。有关详细信息,请参阅Windows 安装程序命令行选项

此应答文件用于配置 Windows 安装。因为在安装过程中需要重新启动,所以此应答文件的副本缓存在计算机上。

隐式搜索应答文件

如果未指定应答文件,Windows 安装程序会在多个不同位置隐式搜索应答文件。这些位置包括先前缓存的应答文件、驱动器根目录下的应答文件以及其他位置。下面的隐式应答文件搜索顺序部分列出了有效搜索路径的完整列表。

每次配置阶段启动时,Windows 安装程序都会隐式搜索应答文件。

Windows 安装程序搜索应答文件时有优先顺序。如果在有效位置之一中找到应答文件,则它必须包含有效的配置阶段。如果找到答案文件并且它不包含正在运行的给定配置阶段的设置,则该答案文件将被忽略。

 备注

通常,仅使用名为 Unattend.xml 的应答文件。但是,由于某些应答文件包括磁盘分区等破坏性操作,因此您必须在 windowsPE 和 offlineServicing 配置阶段将 Unattend.xml 文件重命名为 Autounattend.xml。这些阶段在您首次运行 Windows PE 或 Setup.exe 时运行。当您使用 Windows 安装 DVD 启动方法并在 USB 闪存驱动器 (UFD) 或软盘上提供应答文件时,通常会使用 Autounattend.xml 文件。

隐式应答文件搜索顺序

Windows 安装程序根据搜索顺序识别并记录所有可用的应答文件。使用具有最高优先级的应答文件。应答文件经过验证,然后缓存到计算机。在 windowsPE 和 offlineServicing 传递期间,有效的答案文件被缓存到 $Windows.~BT\Sources\Panther 目录中。Windows安装解压到硬盘后,应答文件缓存到%WINDIR%\panther。

下表显示了隐式应答文件搜索顺序。

隐式应答文件搜索顺序
搜索顺序地点描述

1

登记处

HKLM\System\Setup!UnattendFile

指定注册表中指向应答文件的指针。应答文件不需要命名为 Unattend.xml。

2

%WINDIR%\Panther\无人值守

应答文件的名称必须是 Unattend.xml 或 Autounattend.xml。

注意   Windows 安装程序仅在下层安装时搜索此目录。如果 Windows 安装程序从 Windows PE 启动,则不会搜索 %WINDIR%\Panther\Unattend 目录。

3

%WINDIR%\黑豹

Windows 安装程序将应答文件缓存到此位置。

表 2

重要的
不要覆盖这些目录中的应答文件。

4

可移动读/写媒体,按驱动器号顺序,位于驱动器的根目录。

可移动读/写媒体,按驱动器号顺序,位于驱动器的根目录。

应答文件的名称必须是 Unattend.xml 或 Autounattend.xml,并且应答文件必须位于驱动器的根目录下。

5

可移动只读媒体,按驱动器号顺序,位于驱动器的根目录。

可移动只读媒体,按驱动器号顺序,位于驱动器的根目录。

应答文件的名称必须是 Unattend.xml 或 Autounattend.xml,并且必须位于驱动器的根目录下。

6

windowsPE和offlineServicing通行证:

  • Windows 发行版中的 \Sources 目录

所有其他通行证:

  • %WINDIR%\System32\Sysprep

在windowsPE 和offlineServicing pass 中,应答文件的名称必须是Autounattend.xml。

对于所有其他配置阶段,文件名必须是 Unattend.xml。

7

%系统驱动%

应答文件名必须是 Unattend.xml 或 Autounattend.xml

 备注

由于答案文件在 Windows 安装过程中缓存到计算机中,因此您的答案文件将在两次重新启动之间保留在计算机上。在将计算机交付给客户之前,您必须删除 %WINDIR%\panther 目录中的缓存应答文件。但是,如果您打算在最终用户启动计算机时运行的 oobeSystem 配置阶段中有未处理的设置,请不要删除缓存的应答文件。

应答文件中的敏感数据

安装程序会在当前配置阶段结束时删除缓存应答文件中的敏感数据。

然而,如果答案文件嵌入在比缓存的答案文件更高的优先级位置,则如果嵌入的答案文件与隐式搜索标准匹配,则缓存的答案可能会在每个后续配置通道的开始处被覆盖。例如,如果答案文件嵌入在 %WINDIR%\Panther\Unattend\Unattend.xml 中,则嵌入的答案文件将替换每个配置阶段开始时缓存的答案文件。例如,如果嵌入的应答文件同时指定了 specialize 和 oobeSystem 传递,则为 specialize 传递发现嵌入应答文件、缓存、处理并清除敏感数据。在 oobeSystem 传递期间再次发现嵌入的应答文件并再次缓存。因此,不再清除专业通行证的敏感数据。之前处理过的敏感数据不会再次被清除。除非必须覆盖缓存的应答文件,否则建议将应答文件嵌入在较低优先级的位置。

Microsoft 建议您在将计算机交付给客户之前删除 Windows 安装中的所有应答文件。这包括任何嵌入的应答文件以及缓存的应答文件。但是,如果您打算在最终用户启动计算机时运行的 oobeSystem 配置阶段中有未处理的设置,请不要删除缓存的应答文件。

您可以向 Setupcomplete.cmd 命令脚本添加一个命令,以删除计算机上的任何缓存或嵌入的应答文件。有关详细信息,请参阅向 Windows 安装程序添加自定义脚本

Windows 安装程序在应答文件中注释配置过程

处理配置阶段后,Windows 安装程序会注释缓存的应答文件以指示该阶段已被处理。如果再次输入配置阶段并且在此期间没有替换或更新缓存的应答文件,则不会再次处理应答文件设置。相反,Windows 安装程序将搜索优先级低于缓存的 Unattend.xml 文件的隐式 Unattend.xml 文件。

例如,您可以使用包含 specialize 阶段中的 RunSynchronous 命令的应答文件安装 Windows。在安装期间,specialize pass 运行并执行 RunSynchronous 命令。安装后,运行sysprep /generalize命令。如果没有比缓存的应答文件优先级更高的应答文件,或者应答文件没有明确传递给 Sysprep,则安装程序将在计算机下次启动时运行 specialize。由于缓存的应答文件包含已应用该传递的设置的注释,因此不会执行 RunSynchronous 命令。

隐式应答文件搜索示例

以下示例有助于描述隐式应答文件搜索的行为。

Windows 安装程序会自动发现名为 Autounattend.xml 的应答文件

  1. 创建一个名为 Autounattend.xml 的应答文件,其中包含 windowsPE 传递中的设置。
  2. 将 Autounattend.xml 复制到可移动媒体设备。
  3. 将计算机的 BIOS 配置为从 CD 或 DVD 启动。
  4. 启动 Windows Vista 产品 DVD。
  5. 在 Windows 启动时插入软盘。
    Windows 安装程序启动并自动将 Autounattend.xml 识别为有效的应答文件。由于应答文件使用有效的文件名 (Autounattend.xml),位于有效搜索路径之一(A 的根),并且包含当前配置阶段 (windowsPE) 的有效设置,因此使用该应答文件。
    应答文件被缓存到计算机上。如果在以后的过程中没有发现其他答案文件,则在整个 Windows 安装程序中都会使用缓存的答案文件。

在预定义的搜索路径中按优先顺序发现答案文件

  1. 使用前一方案中的步骤安装带有应答文件的 Windows。用于安装 Windows 的应答文件缓存到系统的 %WINDIR%\Panther 目录中。

  2. 将 Unattend.xml 文件复制到 %WINDIR%\System32\Sysprep 目录。
    此应答文件在通用传递中具有设置。

  3. 运行sysprep /generalize命令以创建参考映像。
    由于 %WINDIR%\System32\Sysprep 目录位于隐式搜索路径中,因此找到了复制到此目录的应答文件。但是,用于安装 Windows 的应答文件仍缓存在计算机上,并包含通用化阶段的设置。此缓存的应答文件的优先级高于复制到 Sysprep 目录中的应答文件。使用缓存的应答文件。

 备注

Sysprep 可以作为命令行工具或 GUI 工具运行。如果将 Sysprep 作为 GUI 工具运行,则可以选中Generalize复选框。

复制
To use the new answer file, copy it to a directory of a higher precedence than the cached answer file or you can specify the answer file by using the **/unattend** option. For example:  

    sysprep /generalize /unattend:C:\MyAnswerFile.xml

应答文件必须包含有效的配置阶段

  1. 将 Unattend.xml 文件复制到软盘。
    Unattend.xml 文件仅包含针对 auditSystem 和 auditUser 配置阶段的设置。
  2. 在已安装的 Windows 操作系统上,运行sysprep /generalize /oobe命令。
    即使应答文件在隐式搜索路径之一中可用,Unattend.xml 文件也被忽略,因为它不包含通用配置阶段的有效阶段。

 

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 TypeScript 中,当我们导入一个 JavaScript 模块时,因为缺乏类型声明文件(.d.ts),TypeScript 无法了解该模块的类型信息。此时,TypeScript 会隐式将该导入模块的类型标注为 `any`。 将一个变量的类型标注为 `any`,意味着 TypeScript 将对该变量的类型检查放松,允许它接受任何类型的值,且不会对其进行类型检查和类型推断。这通常发生在一些旧的 JavaScript 代码中,或者是一些没有类型声明文件的第三方库。 由于 `any` 类型的变量可以接受任何类型的值,它会绕过 TypeScript 的类型检查。这导致我们无法在编译期间捕获到潜在的类型错误,增加了代码出错的风险。 为了解决找不到模块声明文件隐式拥有 `any` 的问题,我们可以尝试以下几种方法: 1. 安装对应的类型声明文件:如果是使用第三方库,可以通过安装该库的类型声明文件(通常以 "@types/库名" 的形式发布在 npm 上)来解决问题。安装后,TypeScript 将能够正确地推断出导入模块的类型信息,而不再默认为 `any`。 2. 创建自定义的类型声明文件:如果无法找到对应的类型声明文件,或者是自己编写的 JavaScript 代码没有提供类型定义,我们可以手动创建一个类型声明文件(以 .d.ts 结尾),并在文件中使用 `declare module` 来声明该模块的类型。通过编写这个声明文件,我们可以告诉 TypeScript 导入模块的类型信息,从而解决隐式 `any` 的问题。 总而言之,当遇到无法找到模块声明文件的情况时,TypeScript 会默认将该模块的类型标注为 `any`,即弱类型。为了避免潜在的类型错误,我们应该尽量安装或编写对应的类型声明文件,来建立起正确的类型推断和类型检查。这样可以提高代码质量,减少错误发生的可能性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值