Añadir scripts de extensibilidad para restablecer el pulsador

Los OEM pueden insertar scripts personalizados que se ejecutan cuando un usuario ejecuta las características de restablecimiento de botón de inserción: Mantenga mis archivos y Quite todo.

Puede usar scripts de extensibilidad o carpetas de aplicación automática para restaurar personalizaciones comunes que no se restauran de otro modo, entre las que se incluyen:

  • Menú Inicio
  • Barra de tareas
  • OOBE
  • personalizaciones de Unattend.xml

Además, los scripts de extensibilidad pueden ayudar a realizar otras tareas, como:

  • Modificación de particiones de datos o utilidad
  • Guardar y restaurar archivos que normalmente no se conservan con la característica Mantener mis archivos .

Nota

Si incluye carpetas de aplicación automática, no debe incluir scripts de extensibilidad. Si incluye carpetas de aplicación automática y scripts de extensibilización, se omitirán las carpetas de aplicación automática.

Acerca de cómo agregar scripts de extensibilidad

Para agregar scripts de extensibilización, debe comprender los conceptos siguientes:

Habilitación de scripts durante la recuperación

Para agregar scripts de extensibilización al restablecimiento de botón de inserción, agregue lo siguiente en la C:\Recovery\OEM carpeta :

  • Un archivo de configuración de restablecimiento de botón de inserción (ResetConfig.xml) que define los scripts que se van a ejecutar.
  • Scripts de extensibilidad
  • Cualquier archivo requerido por los scripts de extensibilidad.

Scripts de extensibilidad

Requisitos:

  • Los scripts tienen el formato de archivos .cmd o .exe.
  • Los scripts no dependen de los componentes opcionales de Windows PE que no están presentes en la imagen de Windows RE predeterminada (winre.wim).
  • Los scripts no dependen de archivos binarios (por ejemplo, archivos .exe o .dll) no presentes en la imagen de Windows RE predeterminada (winre.wim).
  • Los scripts se ejecutan sin mostrar una interfaz gráfica de usuario (GUI).
  • Los scripts completan todas las funciones previstas en un plazo de 5 minutos para cada punto de extensibilidad.
  • El script no debe modificar las letras de unidad. Esto puede provocar un error en la recuperación.
  • El script debe devolver un 0 (cero) si se ejecuta correctamente. Si el restablecimiento del botón de inserción recibe un valor distinto de 0, se producen los pasos siguientes:
    • Si ejecuta la característica Mantener mis archivos : se revierten todos los cambios del sistema. Si el script o el archivo ejecutable se inician desde el menú de configuración del equipo Windows, el sistema se reinicia en Windows. Si el script o el archivo ejecutable se inician desde Windows RE o desde el menú Inicio avanzado, el sistema permanece en Windows RE y muestra un mensaje de error.
    • Si ejecuta la característica Quitar todo : se omite el error. El script o el archivo ejecutable continúa con el paso siguiente en el proceso de restablecimiento y registra el error.

Archivo de configuración de restablecimiento de botón de inserción (ResetConfig.xml)

Agregue un archivo ResetConfig.xml para que apunte a los scripts de extensibilidad de restablecimiento de botón de inserción.

Este archivo debe guardarse con el tipo de archivo UTF-8. No use la codificación ANSI. Por ejemplo: en el Bloc de notas, haga clic en Archivo y, a continuación, haga clic en Guardar como. En el cuadro Codificación , seleccione UTF-8.

Guarde este archivo y cópielo en las imágenes de Windows como C:\Recovery\OEM\ResetConfig.xml.

Puede usar el mismo archivo ResetConfig.xml para configurar Windows para crear medios de recuperación. Para obtener más información, vea Implementar Push-Button restablecer características.

Hay cuatro puntos de extensibilidad que puede usar para apuntar a scripts que se ejecutan cerca del principio y el final de las operaciones Mantener mis archivos o Quitar todo . Para las personalizaciones comunes, normalmente solo necesita un único script, como se muestra en el siguiente script de ejemplo .

Puntos de extensibilidad

La característica Mantener mis archivos se puede resumir en los pasos siguientes:

  1. El equipo arranca en el entorno de recuperación de Windows (Windows RE).
  2. EXTENSIBILITY POINT A (BasicReset_BeforeImageApply): agregue un script aquí para copiar archivos, controladores o configuraciones que no se migran de forma predeterminada cuando el usuario ejecuta la característica Mantener mis archivos .
  3. Las cuentas de usuario, la configuración y los datos se recopilan y se mueven a una ubicación temporal.
  4. Una nueva copia del sistema operativo se construye en una ubicación temporal mediante archivos del Almacén de componentes de Windows.
  5. Las personalizaciones almacenadas en paquetes de aprovisionamiento en C:\Recovery\Customizations se aplican al nuevo sistema operativo.
  6. Los controladores se copian del sistema operativo existente y se insertan en el nuevo sistema operativo.
  7. Las aplicaciones de Windows preinstaladas se restauran desde su ubicación de copia de seguridad.
  8. La configuración crítica del sistema se aplica al nuevo sistema operativo.
  9. El sistema operativo existente se mueve a C:\Windows.old.
  10. El nuevo sistema operativo se mueve a la raíz del volumen del sistema operativo.
  11. EXTENSIBILITY POINT B (BasicReset_AfterImageApply): agregue un script aquí para restaurar archivos de personalización (unattend.xml, layoutmodification.xml) o restaurar archivos y configuraciones de los que es posible que haya realizado una copia de seguridad en el punto de extensibilidad A.
  12. El equipo se reinicia en el nuevo sistema operativo.
  13. Durante el primer arranque, se vuelven a aplicar los datos y la configuración del usuario.

La característica Quitar todo se puede resumir en los pasos siguientes:

  1. El equipo arranca en el entorno de recuperación de Windows (Windows RE).
  2. Las cuentas de usuario, los datos y las aplicaciones de escritorio de Windows instaladas se quitan del volumen del sistema operativo.
  3. Los volúmenes de datos tienen formato (si lo solicita el usuario).
  4. La eliminación de datos se realiza en el sistema operativo y los volúmenes de datos (si lo solicita el usuario).
  5. EXTENSIBILITY POINT C (FactoryReset_AfterDiskFormat): agregue un script aquí para volver a configurar particiones de datos si es necesario. Importante: No modifique la partición de Windows.
  6. Una nueva copia del sistema operativo se construye en una ubicación temporal mediante archivos del Almacén de componentes de Windows.
  7. Las personalizaciones almacenadas en paquetes de aprovisionamiento en C:\Recovery\Customizations se aplican al nuevo sistema operativo.
  8. Los controladores se copian del sistema operativo existente y se insertan en el nuevo sistema operativo.
  9. Las aplicaciones universales de Windows preinstaladas se restauran desde su ubicación de copia de seguridad.
  10. Se quita el sistema operativo existente.
  11. El nuevo sistema operativo se mueve a la raíz del volumen del sistema operativo.
  12. EXTENSIBILITY POINT D (FactoryReset_AfterImageApply): agregue un script aquí para restaurar archivos de personalización (unattend.xml, layoutmodification.xml).
  13. El equipo se reinicia en el nuevo sistema operativo.
  14. Se inicia OOBE.

Ejemplo: Restaurar el menú Inicio, la barra de tareas, la OOBE y las personalizaciones de unattend.xml

A continuación se muestra un script de ejemplo y un archivo ResetConfig.xml de ejemplo que funcionan conjuntamente para restaurar personalizaciones comunes durante el restablecimiento de botón de inserción en Windows 11. Puede probar la recuperación de botón de inserción mediante estos ejemplos. Para probar con estos ejemplos:

  • Guarde lo siguiente en la C:\Recovery\OEM carpeta :
    • Script de ejemplo, CommonCustomizations.cmd
    • El archivo de configuración de restablecimiento de botón de inserción, ResetConfig.xml
    • Copia del archivo de configuración del menú Inicio (LayoutModification.json)
    • Copia del archivo de configuración de la barra de tareas (TaskbarLayoutModification.xml)
    • Copia del archivo unattend.xml

A continuación se muestra un script de ejemplo y un archivo de ejemplo ResetConfig.xml que funcionan conjuntamente para restaurar personalizaciones comunes durante el restablecimiento de botón de inserción en Windows 10. Puede probar la recuperación de botón de inserción mediante estos ejemplos. Para probar con estos ejemplos:

  • Guarde lo siguiente en la C:\Recovery\OEM carpeta :
    • Script de ejemplo, CommonCustomizations.cmd
    • El archivo de configuración de restablecimiento de botón de inserción, ResetConfig.xml
    • Copia del archivo de configuración del menú Inicio (LayoutModification.xml)
    • Copia del archivo de configuración de la barra de tareas (TaskbarLayoutModification.xml)
    • Copia del archivo unattend.xml
  • Copia toda la carpeta OOBE y sus subcarpetas, %WINDIR%\System32\Oobe\Info\ en C:\Recovery\OEM\OOBE\Info.

CommonCustomizations.cmd

Este archivo copia los archivos de personalización de la carpeta Recuperación en el sistema operativo recuperado.

rem CommonCustomizations.cmd

rem Define %TARGETOS% as the Windows folder (This later becomes C:\Windows) 
for /F "tokens=1,2,3 delims= " %%A in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\RecoveryEnvironment" /v TargetOS') DO SET TARGETOS=%%C

rem Define %TARGETOSDRIVE% as the Windows partition (This later becomes C:)
for /F "tokens=1 delims=\" %%A in ('Echo %TARGETOS%') DO SET TARGETOSDRIVE=%%A

rem Add back Windows settings, Start menu, Taskbar, and OOBE.xml customizations
copy "%TARGETOSDRIVE%\Recovery\OEM\Unattend.xml" "%TARGETOS%\Panther\Unattend.xml" /y
copy "%TARGETOSDRIVE%\Recovery\OEM\LayoutModification.json" "%TARGETOSDRIVE%\Users\Default\AppData\Local\Microsoft\Windows\Shell\LayoutModification.json" /y
copy "%TARGETOSDRIVE%\Recovery\OEM\TaskbarLayoutModification.xml" "%TARGETOS%\OEM\TaskbarLayoutModification.xml" /y
xcopy "%TARGETOSDRIVE%\Recovery\OEM\OOBE\Info" "%TARGETOS%\System32\Oobe\Info\" /s

rem Recommended: Create a pagefile for devices with 1GB or less of RAM.
wpeutil CreatePageFile /path=%TARGETOSDRIVE%\PageFile.sys /size=256

EXIT 0
rem CommonCustomizations.cmd

rem Define %TARGETOS% as the Windows folder (This later becomes C:\Windows) 
for /F "tokens=1,2,3 delims= " %%A in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\RecoveryEnvironment" /v TargetOS') DO SET TARGETOS=%%C

rem Define %TARGETOSDRIVE% as the Windows partition (This later becomes C:)
for /F "tokens=1 delims=\" %%A in ('Echo %TARGETOS%') DO SET TARGETOSDRIVE=%%A

rem Add back Windows settings, Start menu, Taskbar, and OOBE.xml customizations
copy "%TARGETOSDRIVE%\Recovery\OEM\Unattend.xml" "%TARGETOS%\Panther\Unattend.xml" /y
copy "%TARGETOSDRIVE%\Recovery\OEM\LayoutModification.xml" "%TARGETOSDRIVE%\Users\Default\AppData\Local\Microsoft\Windows\Shell\LayoutModification.xml" /y
copy "%TARGETOSDRIVE%\Recovery\OEM\TaskbarLayoutModification.xml" "%TARGETOS%\OEM\TaskbarLayoutModification.xml" /y
xcopy "%TARGETOSDRIVE%\Recovery\OEM\OOBE\Info" "%TARGETOS%\System32\Oobe\Info\" /s

rem Recommended: Create a pagefile for devices with 1GB or less of RAM.
wpeutil CreatePageFile /path=%TARGETOSDRIVE%\PageFile.sys /size=256

EXIT 0

ResetConfig.xml

Nota

En este ejemplo se apunta al mismo script dos veces, por lo que puede ser utilizado por las características Keep my files (Mantener mis archivos ) o Remove everything (Quitar todo ).

<?xml version="1.0" encoding="utf-8"?>
<!-- ResetConfig.xml -->
<Reset>
  <Run Phase="BasicReset_AfterImageApply">
    <Path>CommonCustomizations.cmd</Path>
    <Duration>2</Duration>
  </Run>
  <Run Phase="FactoryReset_AfterImageApply">
    <Path>CommonCustomizations.cmd</Path>
    <Duration>2</Duration>
  </Run>
  <!-- May be combined with Recovery Media Creator
       configurations – insert SystemDisk element here -->
</Reset>

Conservación y recuperación de archivos

Con la característica Mantener mis archivos , puede usar scripts de ejemplo para conservar los archivos que, de lo contrario, se quitarían colocando en una ubicación temporal en la memoria. No se pueden conservar los archivos con la característica Quitar todo .

Puede usar las siguientes ubicaciones para el almacenamiento, si es necesario.

  • Unidad ram de Windows PE (X:). Windows PE crea esta unidad virtual y permanece activa durante el proceso Mantener mis archivos . Puede usarlo con la característica Mantener mis archivos para guardar los datos antes de actualizar la partición y restaurar los datos una vez completada la actualización de la partición. La cantidad de memoria disponible se limita a la cantidad de RAM en el sistema, menos la cantidad de RAM necesaria para las herramientas de Windows RE cuando se expande completamente. Para obtener instrucciones sobre cómo montar Windows RE y determinar el tamaño de archivo totalmente expandido, vea Personalizar Windows RE.

  • Partición OEM designada. Puede dejar espacio adicional en una partición. Por ejemplo, puede dejar espacio en la partición de imagen de recuperación y usar scripts para asignar temporalmente una letra de unidad y, a continuación, guardar archivos en esa partición. Sin embargo, si el usuario usa el medio de recuperación para volver a particionar los discos, es posible que los datos de estas particiones se pierdan durante el proceso de recuperación.

Estos scripts de ejemplo conservan los archivos de registro de Windows. Guarde estos scripts en la C:\Recovery\OEM carpeta .

Ejemplo de ResetConfig.xml que conserva los archivos

<?xml version="1.0" encoding="utf-8"?>
<!-- ResetConfig.xml -->
   <Reset>
      <Run Phase="BasicReset_BeforeImageApply">
         <Path>SaveLogFiles.cmd</Path>
         <Duration>4</Duration>
      </Run>      
      <Run Phase="BasicReset_AfterImageApply">
         <Path>RetrieveLogFiles.cmd</Path>
         <Duration>2</Duration>
      </Run>
      <!-- May be combined with Recovery Media Creator
       configurations – insert SystemDisk element here -->
   </Reset>

Script de extensibilidad de ejemplo que conserva los archivos

SaveLogFiles.cmd: guarda los archivos de registro en una carpeta temporal en la memoria.

:rem == SaveLogFiles.cmd

:rem == 1. Use the registry to identify the location of
:rem       the new operating system and the primary hard
:rem       drive. For example, 
:rem       %TARGETOS% may be defined as C:\Windows
:rem       %TARGETOSDRIVE% may be defined as C:
for /F "tokens=1,2,3 delims= " %%A in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\RecoveryEnvironment" /v TargetOS') DO SET TARGETOS=%%C

for /F "tokens=1 delims=\" %%A in ('Echo %TARGETOS%') DO SET TARGETOSDRIVE=%%A

:rem == 2. Copy old Windows logs to a temporary folder in memory
mkdir X:\Temp
xcopy %TARGETOS%\Logs\*.* X:\temp\OldLogs /cherkyi

EXIT 0

Script de extensibilidad de ejemplo que recupera archivos

RetrieveLogFiles.cmd: recupera los archivos guardados en memoria por el script SaveLogFiles.cmd.

:rem == RetrieveLogFiles.cmd

:rem == This sample script retrieves the files that 
:rem    were saved in memory by 
:rem    SaveLogFiles.cmd,
:rem    and adds them back to the system.

:rem == 1. Use the registry to identify the location of
:rem       the new operating system and the primary drive.
:rem        
:rem       %TARGETOS% is the Windows folder 
:rem          (This later becomes C:\Windows)
:rem       %TARGETOSDRIVE% is the Windows partition 
:rem          (This later becomes C:)
for /F "tokens=1,2,3 delims= " %%A in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\RecoveryEnvironment" /v TargetOS') DO SET TARGETOS=%%C
for /F "tokens=1 delims=\" %%A in ('Echo %TARGETOS%') DO SET TARGETOSDRIVE=%%A

:rem == 2. Copy the old logs to the new OS 
:rem       at C:\Windows\OldLogs
mkdir %TARGETOS%\OldLogs
xcopy X:\Temp\OldLogs\* %TARGETOS%\OldLogs /cherkyi

EXIT 0

Método alternativo: copiar scripts después de la implementación

Poco tiempo después de que el usuario complete la configuración rápida, los scripts de recuperación se mueven de la C:\Recovery\OEM carpeta a la partición de recuperación, en R:\RecoveryImage\.

En el improbable caso de que se use el restablecimiento del botón de inserción antes de que se haya realizado esta operación, es posible que estos scripts no se ejecuten. Para evitar esa posibilidad, puede copiar los archivos de recuperación directamente en la partición de recuperación, R:\RecoveryImage\ una vez implementada la imagen.

Pasos siguientes

Ahora que ha personalizado la experiencia de restablecimiento de botón de inserción, puede implementar la imagen de recuperación para el restablecimiento de botón de inserción (Install.wim) en la partición de imagen de recuperación.

Para copiar el script diskpart, el archivo de ResetConfig.xml y la imagen de recuperación de restablecimiento del botón de inserción (install.wim) en la partición de imagen de recuperación del equipo de destino, siga las instrucciones del tema Implementar Push-Button Restablecer características .

Introducción al reseteo con botón

Crear medios para ejecutar Push-Button restablecer características

Implementación de características de restablecimiento de Push-Button

Opciones de Command-Line de REAgentC

Referencia XML de ResetConfig