Cet article technique écrit par Guillaume Ducroix - Windows Core, Support Specialist - à pour vocation de vous aider dans la résolution d'un problème bien précis. La solution proposée ci-dessous a été utilisée avec succès par un certain nombre de professionnels de l'informatique ayant remonté ce disfonctionnement à notre service de support. Il se peut qu'elle ne réponde pas à votre problématique pour des raisons d'environnement ou de configuration différents. Si vous avez des questions, merci de contacter notre support technique.

Installation automatisée de Windows Vista ou de Windows Server 2008

 

Problématique

Avec la sortie de Windows Vista et de Windows Server 2008, les méthodes d’installation changent radicalement en raison de la mise en œuvre d’un nouveau moteur d’installation (setup.exe) qui s’appuie sur des fichiers de réponse eux aussi totalement revisités.
En raison de ces changements, le temps d’appropriation de ces nouveaux outils entraine un certain délai dans l’élaboration d’installation sans intervention des systèmes Windows Vista ou Windows Server 2008.

Objectif

Cet article a donc pour objectif d’expliquer brièvement le fonctionnement d’une installation et surtout de fournir les éléments de configuration nécessaires pour créer un fichier de réponse permettant une installation complète sans intervention.

 

Quelques notions de base

 

Processus d’installation, scindé en trois grandes étapes :

a. Phase Windows PE : les installations lancées depuis le DVD entrent directement dans cette phase

- Applique les paramétrages identifiés dans le fichier de réponse correspondant à la passe windowsPE

- Configure le disque et les partitions

- Copie l’image du système d’exploitation sur le disque

- Prépare l’environnement de démarrage (BCD)

- Applique les paramétrages, identifiés dans le fichier de réponse, correspondant à la passe offlineServicing

b. Phase Online configuration (ou FirstBoot) : applique la configuration spécifique à la machine cible faisant d’elle une instance unique

- Fournit les options OOBE

- Effectue les tâches finales de nettoyage

- Génère le nom de l’ordinateur, les comptes utilisateurs et mots de passe

- Démarre le bureau

c. Phase Windows Welcome

- Applique les paramétrages, identifiés dans le fichier de réponse, correspondant à la passe oobeSystem

- Applique le contenu des paramétrages définis dans le fichier Oobe.xml file

- Lance Windows Welcome

 

Format du fichier de réponse (reposant désormais sur le standard XML) structuré pour définir les paramétrages propres à chaque étape d’une installation.

Ces paramétrages sont classifiés en « passes » :

- windowsPE :  configure les options Windows PE aussi bien que les options basiques du Setup Windows (configuration disque, clé d’activation, …)

- offlineServicing :  applique les mises à jours à l’image Windows (packages, correctifs, packs de langues, …)

- Specialize :  crée et applique les informations spécifiques au système (paramètres réseau, information de domaine, …)

- Generalize :  permet de configurer les options utilisées par la commande sysprep /generalize, ainsi que les paramètres qui doivent persister sur l’image de référence

- auditSystem :  applique les paramétrages dans le contexte du système avant la première ouverture de session. La passe auditSystem ne s’exécute que si l’on démarre en mode audit.

- auditUser : applique les paramétrages dans le contexte de l’utilisateur après la première ouverture de session. La passe auditUser ne s’exécute que si l’on démarre en mode audit.

- oobeSystem :  applique les paramétrages Windows avant que Windows Welcome démarre

 

Schéma des passes utilisées en fonction de l'installation effectuée
Dans le schéma ci-dessus, nous avons un aperçu des passes utilisées en fonction de l’installation effectuée.

 

 

Comment les fichiers de réponses sont-ils pris en compte ?

Il est possible de spécifier au setup le fichier de réponse que l’on souhaite utiliser ou laisser le setup trouver par lui-même les fichiers de réponse qu’il pourra utiliser.

Pour spécifier explicitement le fichier de réponse qui sera à utiliser, il faut employer la commande setup.exe /unattend:S:\monfichierdereponse.xml. Ce type d’installation nécessite de démarrer à partir d'une image Windows PE depuis laquelle il est nécessaire d’avoir accès à une copie du média d’installation du système d’exploitation ainsi qu’au fichier de réponse. Ces éléments peuvent être situés sur un partage réseau.

Si l’on ne spécifie pas explicitement de fichier de réponse, setup.exe va, par lui-même, en chercher un ou plusieurs qu’il utilisera tout au long de l’installation.

Les chemins de recherche sont les suivants :

- HKLM\System\Setup!UnattendFile (le fichier de réponse n’a pas besoin d’être nommé Unattend.xml)

- %windir%\Panther\Unattend (le fichier de réponse doit être nommé Unattend.xml ou AutoUnattend.xml)

- $Windows.~BT\Sources\Panther et %windir%\Panther

Le Setup met en cache les fichiers dans ces répertoires pour une utilisation ultérieure, ces fichiers ne doivent pas être modifiés ou utilisés manuellement.

- Médias RW, dans l’ordre des lettres de volume (le fichier de réponse doit être nommé Unattend.xml ou AutoUnattend.xml, et doit être situé à la racine du média)

- Médias RO, dans l’ordre des lettres de volume (le fichier de réponse doit être nommé Unattend.xml ou AutoUnattend.xml, et doit être situé à la racine du média )

- %systemdrive% (le fichier de réponse doit être nommé Unattend.xml)

- Passes Windows PE et  offlineServicing : dans le dossier \Sources (le fichier de réponse doit être nommé Unattend.xml)

- Toutes les autres passes : %windir%\System32\Sysprep (le fichier de réponse doit être nommé Unattend.xml)

 

Comment automatiser une installation ?

Le fichier de réponse suivant identifie les réponses qui doivent être fournies pour installer Windows Vista SP1 sans intervention manuelle (pour Windows Vista SP1 Enterprise Edition AMD64 US-English). Cet exemple fonctionne également pour Windows Server 2008.

Attention, un fichier de réponse pour Windows Vista ou pour Windows Server 2008 doit toujours être validé par Windows System Image Manager.

<?xml version="1.0" encoding="utf-8"?>

<unattend xmlns="urn:schemas-microsoft-com:unattend">

    <settings pass="windowsPE">

        <component name="Microsoft-Windows-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="https://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

            <DiskConfiguration>

                <Disk wcm:action="add">

                    <CreatePartitions>

                        <CreatePartition wcm:action="add">

                           <Order>1</Order>

                            <Type>Primary</Type>

                            <Extend>true</Extend>

                        </CreatePartition>

                    </CreatePartitions>

                    <ModifyPartitions>

                        <ModifyPartition wcm:action="add">

                            <Active>true</Active>

                            <Format>NTFS</Format>

                            <Label>System</Label>

                            <Letter>C</Letter>

                            <Order>1</Order>

                            <PartitionID>1</PartitionID>

                        </ModifyPartition>

                    </ModifyPartitions>

                    <DiskID>0</DiskID>

                    <WillWipeDisk>true</WillWipeDisk>

                </Disk>

                <WillShowUI>OnError</WillShowUI>

            </DiskConfiguration>

            <ImageInstall>

                <OSImage>

                    <InstallFrom>

                        <MetaData wcm:action="add">

                            <Key>/IMAGE/INDEX</Key>

                            <Value>1</Value>

                        </MetaData>

                    </InstallFrom>

                    <InstallTo>

                        <DiskID>0</DiskID>

                        <PartitionID>1</PartitionID>

                    </InstallTo>

                    <WillShowUI>OnError</WillShowUI>

                </OSImage>

            </ImageInstall>

            <UserData>

                <AcceptEula>true</AcceptEula>

               <FullName>Mon nom</FullName>

                <Organization>Ma Société</Organization>

            </UserData>

        </component>

        <component name="Microsoft-Windows-International-Core-WinPE" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="https://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

            <SetupUILanguage>

                <UILanguage>en-US</UILanguage>

            </SetupUILanguage>

            <InputLocale>040C:0000040C:</InputLocale>

            <SystemLocale>en-US</SystemLocale>

            <UILanguage>en-US</UILanguage>

            <UserLocale>en-US</UserLocale>

        </component>

    </settings>

    <settings pass="specialize">

        <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="https://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

            <ComputerName>MACHINE1</ComputerName>

            <RegisteredOrganization>Mon nom</RegisteredOrganization>

            <RegisteredOwner>Ma société</RegisteredOwner>

            <TimeZone>Romance Standard Time</TimeZone>

            <StartPanelOff>true</StartPanelOff>

        </component>

        <component name="Microsoft-Windows-International-Core" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="https://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

            <InputLocale>040C:0000040C</InputLocale>

            <UILanguage>en-US</UILanguage>

            <SystemLocale>en-US</SystemLocale>

            <UserLocale>en-US</UserLocale>

        </component>

    </settings>

    <settings pass="oobeSystem">

        <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="https://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

            <AutoLogon>

                <Password>

                    <Value>UABhAHMAcwB3AG8AcgBkADAAMABQAGEAcwBzAHcAbwByAGQA</Value>

                    <PlainText>false</PlainText>

                </Password>

                <Domain>.</Domain>

               <Username>TempUser</Username>

                <Enabled>true</Enabled>

                <LogonCount>999</LogonCount>

            </AutoLogon>

            <OOBE>

                <HideEULAPage>true</HideEULAPage>

                <NetworkLocation>Work</NetworkLocation>

                <ProtectYourPC>1</ProtectYourPC>

                <SkipUserOOBE>true</SkipUserOOBE>

            </OOBE>

            <RegisteredOrganization>Mon nom</RegisteredOrganization>

            <RegisteredOwner>Ma Société</RegisteredOwner>

            <TimeZone>Romance Standard Time</TimeZone>

            <StartPanelOff>true</StartPanelOff>

            <UserAccounts>

                <LocalAccounts>

                    <LocalAccount wcm:action="add">

                        <Password>

                            <Value>UABhAHMAcwB3AG8AcgBkADAAMABQAGEAcwBzAHcAbwByAGQA</Value>

                           <PlainText>false</PlainText>

                        </Password>

                        <Description>TempUser</Description>

                        <Name>TempUser</Name>

                        <Group>Administrators</Group>

                       <DisplayName>TempUser</DisplayName>

                    </LocalAccount>

                </LocalAccounts>

            </UserAccounts>

        </component>

        <component name="Microsoft-Windows-International-Core" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="https://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

            <InputLocale>040C:0000040C</InputLocale>

            <SystemLocale>en-US</SystemLocale>

            <UILanguage>en-US</UILanguage>

            <UserLocale>en-US</UserLocale>

        </component>

    </settings>

    <cpi:offlineImage cpi:source="catalog:e:/materials/os/catalogs/install_windows vista enterprise_sp1_amd64.clg" xmlns:cpi="urn:schemas-microsoft-com:cpi" />

</unattend>

 

Pour aller plus loin…

Pour personnaliser plus avant les installations de Windows Vista ou Windows Server 2008, il est possible de se référer à la documentation fournie avec le Kit d'installation automatisée (AIK) pour Windows Vista SP1 et Windows Server 2008 qui est disponible gratuitement sur le site de téléchargement de Microsoft.