Pagina 1 di 1

manipolazione del profilo utente

Pubblicato: 15 dicembre 2020 - 13:54
di cyrilg
Salve,
sto cercando di installare un pacchetto di aggiornamento di Firefox dalla versione 52.9esr alla 68.9esr.
Il problema è che questo aggiornamento crea un nuovo profilo utente predefinito.
L'idea è di eseguire un backup del file C:\Users\Username\AppData\Roaming\Mozilla\Firefox\profiles.ini in un'altra cartella durante l'installazione (nel mio esempio, C:\temp) e poi ripristinarlo nella sua posizione originale dopo l'installazione, in modo da mantenere l'accesso al profilo utente (contenente segnalibri, password, ecc.).

Per fare ciò, ho: `
from setuphelpers import *

uninstallkey = []

def install():
#copia del file profiles.ini da AppData a c:\Temp
print('salvataggio del file profiles.ini')
filecopyto(user_appdata()+'\Mozilla\Firefox\profiles.ini','c:\Temp')

#terminazione del processo Firefox.exe
print('chiusura di Firefox')
killalltasks("firefox.exe")

#aggiornamento a Firefox 68.9.0esr (32 bit)
print('aggiornamento a Firefox 68.9.0esr (32 bit)')
install_exe_if_needed("Firefox Setup 68.9.0esr.exe",'/s',key='')

.....

Tutto funziona correttamente quando eseguo l'installazione da PyScripter sulla mia macchina di sviluppo (con Windows 10 Pro); Il programma copia correttamente il file profiles.ini da C:\Users\Username\AppData\Roaming\Mozilla\Firefox\ a C:\Temp.

Quando avvio l'installazione del mio pacchetto dalla console su un'altra macchina (server Debian 9, Wapt 1.7.4), ricevo un errore di installazione:
IOError: [Errno 2] Nessun file o directory di questo tipo: u'C:\\Windows\\system32\\config\\systemprofile\\AppData\\Roaming\\Mozilla\\Firefox\\profiles.ini'.

Il file profiles.ini viene cercato nella posizione sbagliata.

Ho provato diversi approcci, incluso l'utilizzo di `
from os import path

appdatapath = path.expandvars('%APPDATA%')
filecopyto(appdatapath+'\Mozilla\Firefox\profiles.ini','c:\Temp')`

, ma il problema persiste: il pacchetto funziona correttamente in locale sulla macchina di sviluppo usando PyScripter, ma ricevo lo stesso errore quando provo a installarlo dalla console su un'altra macchina di test.

C'è un dettaglio che mi sfugge: perché il mio script cerca il file nella posizione corretta quando installo da PyScripter e poi lo cerca in `C:\Windows\system32\config\systemprofile\AppData\Roaming\Mozilla\Firefox` quando lo installo dalla console?

Grazie in anticipo per l'aiuto.
Cordiali saluti,
Cyril G

Re: Manipolazione del profilo utente

Pubblicato: 17 dicembre 2020 - 14:32
di Aedenth
Ciao,

quando testi il ​​tuo pacchetto da PyScripter, l'installazione avviene nel contesto del tuo utente.

Quando esegui l'installazione su un'altra macchina, l'installazione viene effettuata come utente SYSTEM, che non ha un profilo nel senso tradizionale.

Se sulla macchina è presente un solo utente, dovrai recuperare il nome dell'ultimo profilo utente connesso e utilizzare queste informazioni per costruire il percorso corretto a C:\users\

Non sono sicuro che WAPT abbia una funzione per recuperare l'ultimo utente autenticato su una macchina.
Consulta la documentazione di WAPT; in caso contrario, deve esserci una chiave di registro contenente tale informazione.

Re: Manipolazione del profilo utente

Pubblicato: 17 dicembre 2020 - 14:44
di htouvet
in setuphelpers:

Codice: Seleziona tutto

get_last_logged_on_user()
-> restituisce miodominio\utente

per un utente locale

.\utente

Anche

Codice: Seleziona tutto

get_loggedinusers()
restituisce un elenco ['utente']

Elenco dei profili macchina:

Codice: Seleziona tutto

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