mirror of
https://github.com/R0m1k3/Loki.git
synced 2026-10-16 11:49:43 +02:00
Un process ne peut pas se relancer lui-meme : tant qu'il tourne, il occupe le port et tient son propre dossier de donnees. On delegue donc a un accompagnateur detache — une copie de nous lancee avec une sous-commande interne — qui attend notre disparition, migre pendant cette fenetre, puis relance l'application. C'est cette fenetre qui manquait depuis le debut. Une mise a jour en place laisse AJEAN tourner, donc le dossier tenu, donc le renommage echoue avec « Acces refuse » — que Windows renvoie aussi bien pour un verrou que pour un manque de droits. D'ou des postes bloques sur l'ancien nom malgre 0.7.1 a 0.7.4. Le retour terrain le confirme : la migration n'a abouti qu'en lancant l'exe telecharge, seul chemin qui arretait les instances avant de migrer. installedExePath() est relu APRES la migration avant de relancer : le binaire installe vit dans le dossier de donnees, il change donc de place avec lui, et relancer l'ancien chemin echouerait. Repli sur le binaire courant si la cible a disparu — mieux vaut relancer quelque chose que laisser l'utilisateur sans application. L'attente est bornee a 30 s. Un depassement n'interrompt pas la suite : la migration echouera peut-etre et sera retentee plus tard, alors que rester coince laisserait l'utilisateur sans rien. Verifie de bout en bout sur banc d'essai : l'accompagnateur attend la fermeture du process cible, se termine proprement, et l'application est bien relancee et ressert l'UI.
14 lines
410 B
Go
14 lines
410 B
Go
//go:build !windows
|
|
|
|
package ajean
|
|
|
|
// Pendant non-Windows de sys_restart_windows.go : sous Linux le redemarrage
|
|
// passe par systemd (restartAfterUpdate), qui sait deja relancer proprement un
|
|
// service. Il n'y a pas d'accompagnateur a lancer.
|
|
|
|
const restartArg = "restart-after-update"
|
|
|
|
func scheduleAppRestart() (bool, string) { return false, "" }
|
|
|
|
func cmdRestartAfterUpdate([]string) error { return nil }
|