manipulation de profil utilisateur

Questions about WAPT Packaging / Requêtes et aides autour des paquets Wapt.
Règles du forum
Règles du forum communautaire
* English support on www.reddit.com/r/wapt
* Le support communautaire en français se fait sur ce forum
* Merci de préfixer le titre du topic par [RESOLU] s'il est résolu.
* Merci de ne pas modifier un topic qui est taggé [RESOLU]. Ouvrez un nouveau topic en référençant l'ancien
* Préciser version de WAPT installée, version complète ET numéro de build (2.2.1.11957 / 2.2.2.12337 / etc.) AINSI QUE l'édition Enterprise / Discovery
* Les versions 1.8.2 et antérieures ne sont plus maintenues. Les seules questions acceptées vis à vis de la version 1.8.2 sont liés à la mise à jour vers une version supportée (2.1, 2.2, etc.)
* Préciser OS du serveur (Linux / Windows) et version (Debian Buster/Bullseye - CentOS 7 - Windows Server 2012/2016/2019)
* Préciser OS de la machine d'administration/création des paquets et de la machine avec l'agent qui pose problème le cas échéant (Windows 7 / 10 / 11 / Debian 11 / etc.)
* Eviter de poser plusieurs questions lors de l'ouverture de topic, sinon il risque d'être ignorer. Si plusieurs sujet, ouvrir plusieurs topic, et de préférence les uns après les autres et pas tous en même temps (ie ne pas spammer le forum).
* Inclure directement les morceaux de code, les captures d'écran et autres images directement dans le post. Les liens vers les pastebin, les bitly et autres sites tierces seront systématiquement supprimés.
* Comme tout forum communautaire, le support est fait bénévolement par les membres. Si vous avez besoin d'un support commercial, vous pouvez contacter le service commercial Tranquil IT au 02.40.97.57.55
cyrilg
Messages : 1
Inscription : 15 déc. 2020 - 13:35

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
Aedenth
Messages : 15
Inscription : 19 sept. 2016 - 09:26

17 déc. 2020 - 14:32

Bonjour,

Quand tu testes ton paquets depuis pyscripter, l'installation se fait dans le contexte de ton utilisateur.

Quand tu lances l'installation sur un autre poste, l'installation se fait en tant qu'utilisateur SYSTEM qui lui n'a pas de profil a proprement parlé.

Si tu n'as qu'un utilisateur sur le poste, il faudrait que tu récupères le nom du dernier profil utilisateur connecté, qu'avec cette donnée tu construises le chemin correct vers C:\users\<users>\Appdata\Roaming\Mozilla\Firefox\profiles.ini et la ça devrait fonctionner.

Je ne suis pas sûr qu'il y ai une fonction dans WAPT pour récupérer le dernier utilisateur authentifié sur une machine.
A voir dans la doc WAPT ou sinon il doit y avoir une clé registre qui contient cette donnée.
Avatar de l’utilisateur
htouvet
Expert WAPT
Messages : 402
Inscription : 16 mars 2015 - 10:48
Contact :

17 déc. 2020 - 14:44

dans setuphelpers :

Code : Tout sélectionner

get_last_logged_on_user()
-> retourne mondomaine\utilisateur

pour un utilisateur local

.\utilisateur

aussi

Code : Tout sélectionner

get_loggedinusers()
retourne une liste ['utilisateur']

Liste des profils de la machine :

Code : Tout sélectionner

 local_users_profiles()
['C:\\Windows\\ServiceProfiles\\LocalService',
 'C:\\Windows\\ServiceProfiles\\NetworkService',
 'C:\\Users\\htouvet',
 'C:\\Users\\user1']
Tranquil IT
Verrouillé