mirror of
https://github.com/R0m1k3/Loki.git
synced 2026-10-24 15:38:12 +02:00
MAJ Windows : ne plus echouer sur un ecartement encore verrouille
Le remplacement du binaire renommait l'ancien en un nom FIXE (.old). Si un
processus tournait encore depuis ce .old (mise a jour precedente), le fichier
n'etait ni supprimable ni ecrasable : le renommage sortait en "Acces refuse"
(errno 5), que os.IsPermission rapporte comme un defaut de DROITS. L'UI
affichait donc "droits insuffisants, relance en administrateur", conseil faux :
aucun privilege ne remplace l'image d'un executable en cours d'execution.
- renameAside() ecarte sous un nom UNIQUE (.old-<horodatage>) : le renommage
passe meme si un ancien ecartement est verrouille (verifie sur banc d'essai
avec deux processus vivants)
- les trois endroits qui faisaient la manoeuvre l'utilisent (update, install,
premier lancement), et le menage ramasse le nom fixe herite + les uniques
- message d'erreur : Windows renvoie le meme code pour "droits insuffisants" et
"fichier utilise", les deux causes sont donc nommees
Aussi : la section Cartes graphiques restait affichee avec une seule carte.
L'attribut hidden etait sans effet, .pe-group{display:flex} l'emportant sur la
regle par defaut du navigateur.
This commit is contained in:
1 parent
e57fc0966e
commit
ae38aca9ba
6 files changed
+126
-12
No files matched your search
@@ -170,9 +170,11 @@ func replaceExe(src, dst string) error {
|
||||
if err := copyExe(src, dst); err == nil {
|
||||
return nil
|
||||
}
|
||||
old := dst + ".old"
|
||||
_ = os.Remove(old) // reliquat d'un remplacement précédent
|
||||
if err := os.Rename(dst, old); err != nil {
|
||||
removeOldBinaries(dst) // reliquats des remplacements précédents
|
||||
// Nom unique : un écartement encore verrouillé par un ancien processus ne
|
||||
// doit pas bloquer celui-ci (voir renameAside).
|
||||
old, err := renameAside(dst)
|
||||
if err != nil {
|
||||
return err // ni écrasable ni renommable : on laisse la place en l'état
|
||||
}
|
||||
if err := copyExe(src, dst); err != nil {
|
||||
|
||||
Reference in new issue
Block a user