Installateur Windows pour une app Go ou Rust (depuis n'importe quel OS)
Compilez un programme Go ou Rust pour Windows depuis n'importe quel OS, intégrez une icône, masquez la console des apps graphiques et empaquetez le .exe unique (et ses ressources) dans un Setup.exe avec raccourcis et désinstalleur.
Mis à jour le 31 octobre 2026 · 4 min de lecture
Go et Rust produisent tous deux un .exe statique unique pour Windows depuis un Mac ou une machine Linux, et c'est en grande partie ce qui fait leur attrait pour les outils de bureau. Les utilisateurs s'attendent malgré tout à installer ce .exe plutôt qu'à le laisser dans Téléchargements. Ce guide passe en revue les options de compilation qui comptent et explique comment transformer le binaire en Setup.exe sans toucher à Windows avant la phase de test.
Go
Compilez pour Windows en définissant la cible dans l'environnement :
GOOS=windows GOARCH=amd64 go build -ldflags "-s -w" -o MyApp.exe .
-s -wsupprime les tables de symboles et les informations de débogage, ce qui réduit la taille du binaire.- Pour une app graphique (Fyne, Wails, Walk, un webview), ajoutez
-H windowsguidans-ldflagsafin qu'aucune fenêtre de console ne s'ouvre :-ldflags "-s -w -H windowsgui". - Utilisez
GOARCH=386pour une version 32 bits etarm64pour Windows sur ARM.
Icône et informations de version. Go n'offre aucun moyen intégré d'incorporer une icône Windows. go-winres génère un fichier de ressources .syso à partir d'une courte description JSON et de votre .ico ; placez le .syso dans le paquet et go build le prend en compte. Sans lui, le .exe affiche l'icône générique, mais les raccourcis créés par l'installateur utiliseront quand même l'icône que vous envoyez.
Rust
Sous Windows, la cible par défaut suffit :
cargo build --release
Depuis macOS ou Linux, visez la chaîne d'outils GNU, qui compile pour Windows une fois MinGW installé :
rustup target add x86_64-pc-windows-gnu
cargo build --release --target x86_64-pc-windows-gnu
cargo-xwin est une alternative qui cross-compile pour la cible MSVC.
- Pour une app graphique, ajoutez
#![windows_subsystem = "windows"]en tête demain.rspour supprimer la fenêtre de console. - Pour incorporer une icône et des informations de version, utilisez le crate
winresouembed-resourcedepuisbuild.rsavec un fichier.rcqui référenceapp.ico. - Définissez
opt-level = "z",lto = trueetstrip = truedans le profil release pour obtenir un binaire plus petit.
Que faut-il envoyer
Un .exe seul : envoyez-le directement à ExeTup, sans zip. L'installateur lui donne un emplacement dans Program Files (ou par utilisateur), des raccourcis et un désinstalleur.
Un .exe accompagné de ressources (un modèle de configuration, des ressources web pour une app webview, un dossier data/) : regroupez-les dans un zip en respectant l'arborescence que le programme attend à l'exécution, puis envoyez le zip. Vous pouvez aussi envoyer le .exe et ajouter les fichiers supplémentaires à l'étape « Autres fichiers » ; dans les deux cas, ils se retrouvent à côté du programme.
Saisissez ensuite le nom, la version et l'éditeur, choisissez la portée et l'architecture, envoyez le .ico et lancez la compilation. Testez le résultat sous Windows ; consultez les options pour tester sans PC Windows.
Outils en ligne de commande
Les installateurs sont conçus pour les apps de bureau, mais un outil CLI en profite aussi : un emplacement connu, une entrée de désinstallation et un déploiement silencieux avec /S pour les équipes informatiques. Deux réserves :
- L'installateur n'ajoute pas le dossier au
PATH. Indiquez le dossier d'installation aux utilisateurs, ou faites en sorte que l'outil propose de s'y ajouter au premier lancement. - Les installations par utilisateur vont dans
%LOCALAPPDATA%\Programs\MyApp, accessible sans droits d'administrateur.
Pour les outils destinés aux développeurs, des manifestes winget ou scoop conviendront peut-être mieux à votre public qu'un installateur ; ils peuvent pointer vers le même .exe signé.
Remarques
- Heuristiques antivirus. Les binaires Go et Rust fraîchement compilés, non signés et liés statiquement déclenchent parfois les analyseurs heuristiques. Un installateur qui place le programme dans Program Files aide un peu ; la signature de code aide beaucoup. Consultez le guide SmartScreen.
- Pas de runtime, pas de prérequis. Les deux langages intègrent leur runtime au binaire. L'installateur livre le binaire tel quel.
- Mises à jour. Un nouvel installateur avec un numéro de version supérieur remplace les fichiers sur place.
Questions fréquentes
Puis-je envoyer uniquement le .exe ?
Oui. Un .exe seul est accepté tel quel, et l'installateur fournit quand même des raccourcis, un désinstalleur et l'entrée dans les Paramètres Windows.
Ai-je besoin de Windows pour créer l'installateur ?
Non. Compilez le binaire sur votre OS, envoyez-le, et ExeTup compile l'installateur dans le cloud. Windows ne sert qu'à tester le résultat.
Pourquoi mon app graphique Go ouvre-t-elle une fenêtre de console noire ?
Compilez avec -ldflags "-H windowsgui". En Rust, ajoutez #![windows_subsystem = "windows"] à main.rs.
Comment mettre mon icône sur le .exe lui-même ?
Incorporez-la comme ressource Windows : go-winres pour Go, le crate winres ou embed-resource pour Rust. Envoyez le même .ico dans ExeTup pour l'installateur et les raccourcis.
Guides associés
- Créer un installateur Windows depuis un Mac ou LinuxVos options pour produire un Setup.exe quand vous développez sous macOS ou Linux, de la compilation croisée NSIS à une build entièrement dans le navigateur, et comment tester le résultat sans posséder de PC Windows.
- Transformer un .exe en installateur Windows (exe vers Setup.exe)Comment convertir un simple .exe, ou un dossier qui en contient un, en véritable installateur Windows avec raccourcis et désinstallateur, sans écrire de script d'installation.
- Installation silencieuse d'un Setup.exe : /S, dossier et déploiementComment lancer un Setup.exe basé sur NSIS en mode silencieux avec /S, choisir le dossier avec /D=, désinstaller sans interface et déployer l'installateur avec Intune, PDQ ou un script.