Sur une machine vierge, le premier lancement du fichier telecharge echouait sur
« open C:\ProgramData\jean\bin\jean.exe: The system cannot find the path
specified » : appFirstRun creait le dossier de donnees mais pas son sous-dossier
bin, cree jusqu'ici par le seul `jean install`. AJEAN demarrait alors depuis le
fichier telecharge, sans installation ni raccourcis.
MkdirAll deplace dans installSelf, donc valable quel que soit l'appelant.
Reproduit puis verifie sur banc d'essai Windows (parcours complet depuis un
dossier de donnees inexistant), + test unitaire.
- si AJEAN tourne, remplacer le binaire ne changeait RIEN a l'ecran (l'ancienne
version restait en memoire) et rien ne le disait. On demande desormais s'il
faut fermer et redemarrer pour appliquer la mise a jour, versions affichees.
- si la version installee est PLUS RECENTE que le fichier lance : avertissement,
aucun remplacement, choix entre demarrer et fermer. Avant, une version plus
ancienne prenait la place sans un mot.
- version installee illisible (binaire anterieur aux ressources de version) :
traitee comme ancienne donc remplacable. La traiter comme egale condamnait ces
installations a ne plus jamais se mettre a jour, en silence.
- raccourcis verifies a chaque demarrage et recrees s'ils manquent, et ranges
dans le dossier « Programmes » du menu Demarrer (ils etaient a la racine, donc
introuvables par la recherche). La desinstallation nettoie les deux endroits.
- les instances en cours sont reperees par CHEMIN complet, jamais par nom
d'image : un taskkill /IM jean.exe emporterait le processus courant.
- Windows : quand AJEAN est deja installe, lancer le fichier telecharge remplace
le binaire installe (s'il est plus recent) puis demarre l'application, sans
message. La 0.6.10 annoncait « vous lancez une copie » puis demarrait quand
meme : une information inactionnable suivie d'un comportement non annonce.
Le refus d'installation est desormais memorise (.install_declined).
- la version du binaire installe est lue dans les ressources du fichier
(VS_VERSIONINFO). L'implementation evidente (executer `jean version` et lire
la sortie) renvoie du VIDE : le binaire est en sous-systeme GUI et n'ecrit pas
dans un tuyau, donc la mise a jour ne se serait jamais faite, en silence.
Piege documente dans le code + deux tests.
- UI : les emplacements passent sous le journal du moteur (clic sur la pastille
d'etat) au lieu d'un bouton isole dans les actions.