Ce dépôt est mon fork de schmaldeo/DS4Windows (ma version : 4.0.0, basée sur la 3.9.9, la dernière de schmaldeo, qui a arrêté le projet en mars 2026).
Toutes les commandes se lancent depuis la racine du dépôt : C:\serveurs\DS4Windows.
- SDK .NET 10 (déjà installé sur mon PC). Vérifier avec :
Il faut une ligne
dotnet --list-sdks
10.0.xxx. Sinon, télécharger le SDK .NET 10 sur https://dotnet.microsoft.com/download/dotnet/10.0 (le projet est passé de .NET 8 à .NET 10 en octobre 2026, le support de .NET 8 s'arrêtant le 10 novembre 2026). - Git.
- Pas besoin de Visual Studio (mais on peut ouvrir
DS4WindowsWPF.slnavec si on veut).
dotnet build DS4Windows/DS4WinWPF.csproj -c Release -p:Platform=x64- Durée : environ 15 secondes.
- Résultat :
DS4Windows\bin\x64\Release\net10.0-windows\DS4Windows.exe - Les « warnings » (avertissements) sont normaux, seules les erreurs comptent.
- Le dossier
bin\est ignoré par Git, il ne sera jamais commité.
Fermer DS4Windows avant de recompiler, sinon les fichiers sont verrouillés.
dotnet publish DS4Windows/DS4WinWPF.csproj -c Release -r win-x64 --self-contained false -p:Platform=x64 -o C:/Programmes/DS4Windows- Crée (ou met à jour) le dossier
C:\Programmes\DS4Windows(~12 Mo) avecDS4Windows.exe. - C'est l'équivalent du zip officiel.
- Fermer DS4Windows avant (y compris l'icône près de l'horloge).
- Variante pour un PC sans .NET installé : remplacer
--self-contained falsepar--self-contained true(le dossier fait alors ~150 Mo mais marche partout).
Alternative au dossier copié à la main : un installeur classique avec désinstallation, raccourci menu Démarrer et entrée dans « Applications installées ».
Prérequis (une seule fois) : Inno Setup 6.
winget install --id JRSoftware.InnoSetup -e --source winget --scope userPuis, à chaque nouvelle version :
powershell -ExecutionPolicy Bypass -File installer\build.ps1- Résultat :
installer\Output\DS4Windows_<version>_x64_Setup.exe(~5 Mo). La version est lue dansDS4Windows\DS4WinWPF.csproj(<Version>). - Variante qui embarque .NET (pour un PC sans .NET 10) : ajouter
-SelfContained. - Le même script produit aussi
DS4Windows_<version>_x64.zip(version portable) etSHA256SUMS.txt(empreintes des fichiers), dansinstaller\Output\. installer\publish\etinstaller\Output\sont ignorés par Git.- Le script de l'installeur est
installer\DS4Windows.iss. Ne jamais changer sonAppId: c'est lui qui permet d'installer une nouvelle version par-dessus l'ancienne.
Ce que fait l'installeur :
- Installe par défaut pour l'utilisateur courant, sans droits admin
(
%LOCALAPPDATA%\Programs\DS4Windows), ou pour tous dansProgram Filesau choix. - Ferme proprement DS4Windows s'il tourne (via
DS4Windows.exe -command shutdown). - Prévient si le .NET 10 Desktop Runtime manque, et propose d'installer les pilotes si ViGEmBus est absent.
- Si « Lancer au démarrage » était activé, redirige ce raccourci vers la copie installée.
- Lancé par la mise à jour automatique (
/SILENT /UPDATE=1), relance DS4Windows à la fin. Une installation silencieuse sans/UPDATE=1(déploiement) ne lance rien. - Pose un fichier
DS4Windows.installedà côté de l'exe : une copie installée range toujours ses réglages dans%APPDATA%\DS4Windows, sans poser la question au premier lancement. - La désinstallation retire aussi le lancement au démarrage et demande si on veut supprimer les profils (Non par défaut).
L'installeur n'est pas signé : Windows SmartScreen peut afficher « Windows a protégé votre ordinateur » sur un autre PC → « Informations complémentaires » → « Exécuter quand même ».
- Fermer l'ancien DS4Windows (et le retirer du démarrage de Windows s'il y était).
- Lancer
C:\Programmes\DS4Windows\DS4Windows.exe. - Profils et réglages :
- S'ils étaient dans
%APPDATA%\DS4Windows, ils sont retrouvés automatiquement. - Si l'ancienne version était en mode portable (fichiers à côté de l'ancien
.exe), copier dans le nouveau dossier :Profiles.xml,Auto Profiles.xml,Actions.xmlet le dossierProfiles\.
- S'ils étaient dans
- Pilotes : ViGEmBus (obligatoire) et HidHide (conseillé, évite les doubles entrées
dans les jeux). S'ils manquent : onglet Paramètres → lien « Installer les pilotes »
(« Controller/Driver Setup » en anglais).
Des installeurs sont aussi dans le dossier
extras\du dépôt. - Démarrage auto : onglet Paramètres → cocher « Lancer au démarrage ».
- Faire un raccourci vers
C:\Programmes\DS4Windows\DS4Windows.exe(bureau / menu Démarrer).
La vérification de mises à jour interroge mon dépôt (
Baba0bab/DS4Windows, release marquée « Latest »). Si une version plus récente existe, l'appli affiche ses notes, et « Oui » :
- copie installée par l'installeur (fichier
DS4Windows.installedà côté de l'exe) : téléchargeDS4Windows_<version>_x64_Setup.exedans%TEMP%\DS4Windows_update, vérifie son empreinte avec leSHA256SUMS.txtde la release, lance l'installation silencieuse (mêmes dossier, mode « pour moi / pour tous » et options qu'avant) puis se ferme ; l'installeur relance DS4Windows à la fin. Une installation dansProgram Filesaffiche la demande de droits admin de Windows. Journal de l'installation :%TEMP%\DS4Windows_update\install.log;- copie portable (zip, dossier copié à la main) ou échec (fichier absent de la release, empreinte différente, réseau) : un message explique pourquoi, puis la page de la release s'ouvre dans le navigateur.
# 1. Modifier le code, puis tester :
dotnet build DS4Windows/DS4WinWPF.csproj -c Release -p:Platform=x64
# 2. Enregistrer mes modifications dans Git :
git add -A
git commit -m "Description de ma modification"
git push origin master
# 3. Mettre à jour ma version installée :
dotnet publish DS4Windows/DS4WinWPF.csproj -c Release -r win-x64 --self-contained false -p:Platform=x64 -o C:/Programmes/DS4WindowsLa branche principale s'appelle
master(pasmain).
Deux dépôts distants (« remotes ») sont configurés :
| Nom | Adresse | Rôle |
|---|---|---|
origin |
https://github.com/Baba0bab/DS4Windows | Mon fork : je pousse mes modifs ici |
upstream |
https://github.com/schmaldeo/DS4Windows.git | Projet d'origine : je récupère ses modifs |
Vérifier avec git remote -v. Si upstream manque (ex. après un nouveau clone) :
git remote add upstream https://github.com/schmaldeo/DS4Windows.gitgit fetch upstream
git merge upstream/master
git push origin master- Si Git signale un conflit (on a modifié les mêmes lignes) : ouvrir les fichiers
indiqués, garder la bonne version entre les marqueurs
<<<<<<<,=======,>>>>>>>, puis :git add -A git commit
- Alternative sans terminal : bouton « Sync fork » sur la page GitHub de mon fork,
puis
git pullen local.
Remplacer l'adresse d'upstream par celle du nouveau fork (qui doit être un fork de
schmaldeo, pour garder un historique commun) :
git remote set-url upstream https://github.com/AUTEUR/DS4Windows.git- Faire des modifications ciblées, ne pas reformater/déplacer du code inutilement.
- Fusionner régulièrement plutôt qu'une grosse fois tous les six mois.
- Utiliser
merge(pasrebase) surmaster, puisque la branche est poussée sur GitHub.
C'est ce que l'appli consulte pour proposer une mise à jour : le tag donne le numéro
(v4.1.1 → 4.1.1) et la description de la release sert de notes de version.
- Mettre le numéro dans
DS4Windows\DS4WinWPF.csproj(<Version>,<AssemblyVersion>,<FileVersion>) et ajouter la section correspondante en haut deDS4Windows\Changelog.md. - Committer et pousser (
git push origin master). - Construire :
powershell -ExecutionPolicy Bypass -File installer�uild.ps1 - Créer la release avec ses fichiers (le tag est créé sur
master) :gh release create v4.1.1 --repo Baba0bab/DS4Windows --title "DS4Windows 4.1.1" --notes-file notes.md installer/Output/DS4Windows_4.1.1_x64_Setup.exe installer/Output/DS4Windows_4.1.1_x64.zip installer/Output/SHA256SUMS.txtnotes.md: copier la section de la version depuisChangelog.md.
- Garder les noms de fichiers produits par
build.ps1et toujours joindreSHA256SUMS.txt:ds4w.batet la mise à jour automatique retrouvent les fichiers d'après le numéro de version, et la mise à jour refuse un installeur dont l'empreinte n'est pas dans ce fichier. - Une version construite avec
-SelfContainedne se met à jour qu'avecDS4Windows_<version>_x64_selfcontained_Setup.exe: le joindre aussi à la release si quelqu'un utilise cette variante (sinon la page de la release s'ouvre). - Une release « pre-release » n'est jamais proposée aux utilisateurs : pratique pour tester.
- Le tag doit toujours commencer par
vsuivi d'un numéroX.Y.Z.
| Problème | Solution |
|---|---|
error MSB3027 / fichier verrouillé |
Fermer DS4Windows (icône près de l'horloge) et relancer |
| L'appli ne démarre pas | Installer le « .NET 10 Desktop Runtime » x64 |
| Manette détectée deux fois en jeu | Installer/configurer HidHide |
| Pas de manette virtuelle Xbox | Installer ViGEmBus (Paramètres → « Installer les pilotes », ou dossier extras\) |
| Repartir d'une compilation propre | Supprimer DS4Windows\bin et DS4Windows\obj, puis recompiler |