From 1f773151a646a516fa14b3cb6427d62fb8dccc88 Mon Sep 17 00:00:00 2001 From: nathaninline Date: Tue, 4 Aug 2026 17:16:17 +0200 Subject: [PATCH] v0.7.4 : migrer le dossier depuis le chemin de mise a jour (Windows) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit L'elevation ajoutee en 0.7.3 n'etait jamais atteinte. Elle n'etait cablee que dans `install` et dans l'installeur de mise a jour (double-clic sur l'exe telecharge) ; or les utilisateurs font `ajean update` ou cliquent le bouton de l'interface. restartAfterUpdate ne fait rien sous Windows, et au redemarrage appFirstRun sort avant d'arriver la (l'application se reconnait comme etant deja l'installee). Aucun poste ne migrait donc jamais. postUpdateMigrate est appele apres une mise a jour reussie, cote CLI comme cote UI web. Une hypothese a ete invalidee au passage, et elle changeait tout : on croyait qu'un binaire en cours d'execution empechait de renommer le dossier qui le contient. C'est faux — Windows verrouille le fichier .exe, pas le nom de ses dossiers parents. Verifie sur banc d'essai. La migration peut donc se faire depuis l'application en marche, ce qui rend ce chemin possible. Consequence non anticipee, traitee ici : le binaire installe vit DANS le dossier de donnees. Le renommer deplace donc le programme, et laisse un raccourci du menu Demarrer et une entree de PATH pointant dans le vide. relinkAfterMigration repointe le raccourci, ajoute le nouveau dossier bin au PATH et retire l'ancien. Course de donnees corrigee : retryHomeMigration reinitialisait le cache du dossier resolu sans verrou, alors qu'il est desormais appele depuis un handler HTTP pendant que le serveur sert d'autres requetes. sync.Once est remplace par un RWMutex, et les reinitialisations directes des installeurs Unix passent par resetResolvedHome. --- RELEASE_NOTES.md | 12 ++++-- cmd/ajean/resource_windows_amd64.syso | Bin 7544 -> 7544 bytes cmd/ajean/resource_windows_arm64.syso | Bin 7544 -> 7544 bytes cmd/ajean/versioninfo.json | 6 +-- internal/ajean/run.go | 2 +- internal/ajean/sys_install_darwin.go | 3 +- internal/ajean/sys_install_linux.go | 3 +- internal/ajean/sys_migrate.go | 49 +++++++++++++++++----- internal/ajean/sys_postupdate_other.go | 7 ++++ internal/ajean/sys_postupdate_windows.go | 51 +++++++++++++++++++++++ internal/ajean/sys_update.go | 7 +++- 11 files changed, 117 insertions(+), 23 deletions(-) create mode 100644 internal/ajean/sys_postupdate_other.go create mode 100644 internal/ajean/sys_postupdate_windows.go diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index 0f00ff5..4f63fe3 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -1,10 +1,14 @@ -## Le renommage du dossier se termine tout seul sous Windows +## Le renommage du dossier se fait maintenant à la mise à jour -Jusqu'ici, sur un ordinateur où vous n'êtes pas administrateur, `C:\ProgramData\jean` ne pouvait pas devenir `C:\ProgramData\ajean` : renommer ce dossier demande un droit qu'un compte standard n'a pas. Le renommage restait donc à moitié fait, indéfiniment. +Les versions 0.7.1 à 0.7.3 n'y parvenaient pas sur les postes Windows sans droits administrateur : le code prévu pour demander l'autorisation n'était jamais atteint. Il ne se déclenchait qu'en relançant l'installation ou en retéléchargeant le programme — deux gestes que personne ne fait pour une mise à jour. -L'installation demande désormais l'autorisation Windows nécessaire, le temps du renommage, puis rend la main. La fenêtre apparaît au moment où vous installez ou mettez à jour AJEAN — jamais au démarrage ordinaire, et jamais si elle ne sert à rien : ni quand le dossier porte déjà le bon nom, ni quand vous avez choisi vous-même son emplacement. +`ajean update`, et le bouton de mise à jour de l'interface, s'en chargent désormais. L'autorisation Windows est demandée à ce moment-là, une fois, et le dossier `C:\ProgramData\jean` devient `C:\ProgramData\ajean`. -Refuser cette autorisation est une réponse valable. AJEAN continue alors d'utiliser son dossier actuel, exactement comme avant. Rien n'est perdu, rien n'est bloqué, et la question reviendra à la prochaine installation. +Le raccourci du menu Démarrer et la commande `ajean` sont repointés dans la foulée. Le programme installé vit à l'intérieur du dossier de données : sans cette étape, le déplacement aurait laissé un raccourci mort et une commande introuvable. + +Refuser l'autorisation reste sans conséquence : AJEAN continue sur son dossier actuel, et la question reviendra à la prochaine mise à jour. + +Si vous êtes déjà sur la dernière version et toujours sur l'ancien dossier, la migration se fera à la mise à jour suivante. ## Mise à jour diff --git a/cmd/ajean/resource_windows_amd64.syso b/cmd/ajean/resource_windows_amd64.syso index 4b1f6b3e895398c35c6471715a7d2a2a6b2618a8..cb8da480d60a026ad060c123de7f64abc05d03d8 100644 GIT binary patch delta 35 ocmexi^}}idmn0_(13Lo