Aller au contenu

DeployCenter : de quelques prompts à un outil de déploiement Windows sous WinPE

Un projet né d’une idée mise de côté, relancé par la découverte de Bootimus et développé avec l’aide de ChatGPT puis Codex.

Interface principale de DeployCenter
L’interface principale de DeployCenter.

Il y a parfois des projets qui restent dans un coin de la tête pendant des mois avant de finir par prendre forme. DeployCenter est un peu comme ça.

L’idée de départ remonte à mars 2026. J’avais alors demandé à ChatGPT :

Je souhaite faire un logiciel sous WinPE pour automatiser les installations de Windows à la façon de SCCM. Quel langage me permettrait de le faire facilement avec une interface graphique ?

La réponse m’orientait vers C#. À l’époque, le projet avait finalement été mis de côté. Je ne connaissais pas ce langage et je n’avais pas particulièrement envie de me lancer dans un apprentissage aussi conséquent pour un projet dont je ne savais pas encore exactement ce qu’il allait devenir.

Bootimus, le déclic

Dernièrement, un ami m’a parlé de Bootimus, un serveur de démarrage réseau qui m’a donné envie de remettre le sujet sur la table.

J’avais déjà essayé iVentoy et netboot.xyz. Je ne m’attendais donc plus à grand-chose et je commençais à désespérer de trouver un produit qui me comblerait vraiment.

Puis j’ai découvert Bootimus. Un simple docker run --rm pour le tester, et j’ai commencé à me dire que, peut-être, cette fois, j’avais trouvé quelque chose qui correspondait à ce que je cherchais.

L’interface m’a plu. Mais c’est surtout lorsque j’ai découvert la prise en charge de Secure Boot que j’ai commencé à envisager les choses autrement.

J’avais en tête les difficultés liées à iPXE et à la signature des exécutables nécessaires au démarrage sécurisé. La documentation officielle d’iPXE sur Secure Boot illustre les contraintes particulières de ce mode de démarrage. Je ne pensais pas trouver une solution aussi facilement exploitable dans mon environnement.

J’ai donc préparé un WinPE pour réutiliser mes vieux scripts, écrits environ un an plus tôt. Et, une nouvelle fois, je me suis dit qu’il était temps d’en faire quelque chose de plus propre et de plus automatisé.

Un souvenir de l’Apple II

La semaine dernière, un souvenir m’est revenu : mes premiers développements sur Apple II.

J’avais créé une disquette de démarrage pour que mon père puisse utiliser l’ordinateur de manière guidée. Au démarrage, un menu présentait des choix numérotés. Il suffisait de sélectionner un numéro pour que les instructions correspondantes apparaissent à l’écran.

Finalement, l’idée de DeployCenter n’est pas très éloignée de ce principe : proposer une interface simple, guider l’utilisateur et éviter de devoir retenir une succession de commandes ou de scripts.

J’ai donc demandé une nouvelle fois à ChatGPT :

On pourrait probablement commencer avec seulement des formulaires PowerShell. Peut-être associé à une base de données SQLite qui serait téléchargée au démarrage du WinPE ?

La réponse a été immédiate : un premier script PowerShell avec une interface graphique, une sélection du système d’exploitation, un choix du disque cible et un bouton pour lancer l’installation. Le moteur de déploiement n’était encore qu’un prototype, mais l’idée prenait forme.

C’est ce premier écran qui allait donner naissance à DeployCenter.

ChatGPT, puis Codex

Fenêtre de sélection des sources Windows
La sélection des sources Windows.

Je peux aujourd’hui proposer DeployCenter sans avoir eu à saisir moi-même une seule ligne de code. Le développement a été réalisé avec l’aide de ChatGPT, puis de Codex.

Cela ne signifie pas pour autant que tout s’est fait sans réflexion ni arbitrage. Il a fallu reprendre certaines propositions, imposer des règles de codage, corriger des problèmes et faire évoluer progressivement l’architecture.

Nous avons notamment séparé les fonctionnalités en modules PowerShell, mis en place une interface multilingue, ajouté des thèmes, des profils de partitionnement et des profils Unattend. L’objectif était de ne pas rester avec un gros script difficile à maintenir, mais de construire quelque chose qui puisse évoluer.

DeployCenter sait désormais notamment :

  • détecter le matériel et les disques disponibles ;
  • rechercher des sources Windows ISO, WIM et ESD ;
  • sélectionner une édition de Windows ;
  • appliquer des profils de partitionnement UEFI/GPT ;
  • rechercher et installer des pilotes adaptés au matériel ;
  • configurer le démarrage et l’environnement de récupération WinRE ;
  • journaliser les opérations et proposer un mode de déploiement automatisé en ligne de commande.
Sélection d’une édition Windows
Sélection de l’édition Windows à installer.

L’interface a également été pensée pour pouvoir être personnalisée sans devoir réécrire toute l’application.

Un projet qui doit pouvoir évoluer

L’idée de départ reste la même : commencer avec quelque chose d’utile, puis ajouter ce qui manque au fur et à mesure des besoins.

Il reste évidemment du travail et des améliorations possibles. Je préfère mettre à disposition le projet, permettre à d’autres de le découvrir et voir ce qu’il peut devenir plutôt que d’attendre d’avoir imaginé toutes les fonctionnalités possibles.

Une question reste ouverte : faut-il finalement envisager une version en C# ? Je ne connais pas encore ce langage, mais j’aime bien l’idée de découvrir de nouvelles choses. D’un autre côté, PowerShell a un avantage indéniable dans ce contexte : il permet de modifier rapidement les scripts et de les adapter à l’environnement WinPE.

Pour le moment, je continue donc avec PowerShell. Nous verrons par la suite.

À découvrir

Progression d’un déploiement
La progression du déploiement.
Écran de fin de déploiement
Le résumé en fin de déploiement.
Fin du déploiement avec copie locale
Fin du déploiement avec copie locale des sources et des pilotes.

Découvrir DeployCenter

Le code source est disponible sur Gitea. Vous y trouverez le code, le README, les instructions de mise en place et les éléments nécessaires pour découvrir le fonctionnement du projet.

Voir le projet sur Gitea

N’hésitez pas à le tester, à signaler les problèmes rencontrés ou à proposer des améliorations. L’objectif est justement de pouvoir faire évoluer l’outil au fil des besoins.

Un projet né d’une idée mise de côté, relancé par un outil de démarrage réseau et développé avec l’aide de l’intelligence artificielle. La suite reste à écrire.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Toggle Dark Mode