Aller au contenu

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 -w supprime 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 windowsgui dans -ldflags afin qu'aucune fenêtre de console ne s'ouvre : -ldflags "-s -w -H windowsgui".
  • Utilisez GOARCH=386 pour une version 32 bits et arm64 pour 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 de main.rs pour supprimer la fenêtre de console.
  • Pour incorporer une icône et des informations de version, utilisez le crate winres ou embed-resource depuis build.rs avec un fichier .rc qui référence app.ico.
  • Définissez opt-level = "z", lto = true et strip = true dans 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