manipulation de profil utilisateur
Posté : 15 déc. 2020 - 13:54
Bonjour,
Je cherche à faire un paquet de mise à jour de Firefox 52.9esr vers Firefox 68.9esr.
Le problème est que cette montée en version provoque la création d'un nouveau profil utilisateur par défaut.
L'idée est donc de sauvegarder le fichier C:\Users\NomUtilisateur\Appdata\Roaming\Mozilla\Firefox\profiles.ini dans un autre dossier le temps de l'installation (dans mon exemple, dans C:\temp) pour le remettre à sa place en fin d'installation, afin de conserver l'accès au profil utilisateur (contenant les marques pages, les mots de passe...).
Pour cela, j'ai
from setuphelpers import *
uninstallkey = []
def install():
#copie du fichier profiles.ini de AppData vers c:\Temp
print('sauvegarde du fichier profiles.ini')
filecopyto(user_appdata()+'\Mozilla\Firefox\profiles.ini','c:\Temp')
#on tue le processus Firefox.exe
print('fermeture de Firefox')
killalltasks("firefox.exe")
#mise a jour vers Firefox68.9.0esr (32bits)
print('mise à jour vers Firefox68.9.0esr (32bits)')
install_exe_if_needed("Firefox Setup 68.9.0esr.exe",'/s',key='')
.....
Tout se passe bien quand je lance mon install depuis PyScripter sur mon poste de dev (sous Windows10Pro), il me copie bien le fichier profiles.ini de C:\Users\NomUtilisateur\Appdata\Roaming\Mozilla\Firefox\ vers C:\Temp.
Quand je lance l'installation de mon paquet depuis la console vers un autre poste (serveur Debian 9, Wapt 1.7.4), j'ai une erreur à l'installation :
IOError: [Errno 2] No such file or directory: u'C:\\Windows\\system32\\config\\systemprofile\\AppData\\Roaming\\Mozilla\\Firefox\\profiles.ini'
Il cherche le fichier profiles.ini au mauvais endroit.
J'ai essayé de diverses façons, notamment en essayant d'utiliser
from os import path
appdatapath = path.expandvars('%APPDATA%')
filecopyto(appdatapath+'\Mozilla\Firefox\profiles.ini','c:\Temp')
mais toujours pareil : le paquet fonctionne bien en local sur le poste de dev depuis PyScripter, mais j'ai la même erreur quand je cherche à lancer l'installation du paquet depuis la console sur un autre poste de test.
Il y a une subtilité qui m'échappe : pourquoi mon script va chercher mon fichier au bon endroit quand je lance l'install depuis PyScripter, et le cherche dans C:\Windows\system32\config\systemprofile\AppData\Roaming\Mozilla\Firefox quand je lance l'install depuis la console ?
En vous remerciant par avance pour votre réponse.
Cordialement.
Cyril G
Je cherche à faire un paquet de mise à jour de Firefox 52.9esr vers Firefox 68.9esr.
Le problème est que cette montée en version provoque la création d'un nouveau profil utilisateur par défaut.
L'idée est donc de sauvegarder le fichier C:\Users\NomUtilisateur\Appdata\Roaming\Mozilla\Firefox\profiles.ini dans un autre dossier le temps de l'installation (dans mon exemple, dans C:\temp) pour le remettre à sa place en fin d'installation, afin de conserver l'accès au profil utilisateur (contenant les marques pages, les mots de passe...).
Pour cela, j'ai
from setuphelpers import *
uninstallkey = []
def install():
#copie du fichier profiles.ini de AppData vers c:\Temp
print('sauvegarde du fichier profiles.ini')
filecopyto(user_appdata()+'\Mozilla\Firefox\profiles.ini','c:\Temp')
#on tue le processus Firefox.exe
print('fermeture de Firefox')
killalltasks("firefox.exe")
#mise a jour vers Firefox68.9.0esr (32bits)
print('mise à jour vers Firefox68.9.0esr (32bits)')
install_exe_if_needed("Firefox Setup 68.9.0esr.exe",'/s',key='')
.....
Tout se passe bien quand je lance mon install depuis PyScripter sur mon poste de dev (sous Windows10Pro), il me copie bien le fichier profiles.ini de C:\Users\NomUtilisateur\Appdata\Roaming\Mozilla\Firefox\ vers C:\Temp.
Quand je lance l'installation de mon paquet depuis la console vers un autre poste (serveur Debian 9, Wapt 1.7.4), j'ai une erreur à l'installation :
IOError: [Errno 2] No such file or directory: u'C:\\Windows\\system32\\config\\systemprofile\\AppData\\Roaming\\Mozilla\\Firefox\\profiles.ini'
Il cherche le fichier profiles.ini au mauvais endroit.
J'ai essayé de diverses façons, notamment en essayant d'utiliser
from os import path
appdatapath = path.expandvars('%APPDATA%')
filecopyto(appdatapath+'\Mozilla\Firefox\profiles.ini','c:\Temp')
mais toujours pareil : le paquet fonctionne bien en local sur le poste de dev depuis PyScripter, mais j'ai la même erreur quand je cherche à lancer l'installation du paquet depuis la console sur un autre poste de test.
Il y a une subtilité qui m'échappe : pourquoi mon script va chercher mon fichier au bon endroit quand je lance l'install depuis PyScripter, et le cherche dans C:\Windows\system32\config\systemprofile\AppData\Roaming\Mozilla\Firefox quand je lance l'install depuis la console ?
En vous remerciant par avance pour votre réponse.
Cordialement.
Cyril G