[RISOLTO] La sintassi per il nome del file... è errata

Condividi qui i tuoi suggerimenti o problemi riguardanti la console WAPT o l'agente WAPT
Regole del forum
Regole del forum della community
* Supporto in inglese su www.reddit.com/r/wapt
* Supporto della community in francese disponibile su questo forum
* Si prega di anteporre [RISOLTO] al titolo dell'argomento se è stato risolto.
* Si prega di non modificare un argomento contrassegnato con [RISOLTO]. Aprire un nuovo argomento facendo riferimento a quello precedente.
* Specificare la versione di WAPT installata, la versione completa e il numero di build (2.2.1.11957 / 2.2.2.12337 / ecc.) nonché l'edizione Enterprise/Discovery.
* Le versioni 1.8.2 e precedenti non sono più supportate. Le uniche domande accettate relative alla versione 1.8.2 riguardano l'aggiornamento a una versione supportata (2.1, 2.2, ecc.).
* Specificare il sistema operativo del server (Linux/Windows) e la versione (Debian Buster/Bullseye - CentOS 7 - Windows Server 2012/2016/2019).
* Specificare il sistema operativo della macchina di amministrazione/creazione dei pacchetti e della macchina con l'agente problematico, se applicabile (Windows 7/10/11/Debian 11/ecc.).
* Evitare di porre più domande quando si apre una discussione, altrimenti potrebbe essere ignorata. Se ci sono più discussioni, aprirle separatamente, preferibilmente una dopo l'altra e non tutte contemporaneamente (ovvero, non intasare il forum).
* Includere frammenti di codice, screenshot e altre immagini direttamente nel post. I link a Pastebin, Bitly e altri siti di terze parti verranno sistematicamente rimossi.
* Come in qualsiasi forum della community, il supporto è fornito volontariamente dai membri. Se si necessita di supporto commerciale, è possibile contattare il reparto vendite di Tranquil IT al numero 02.40.97.57.55
Empbilly
Messaggi: 79
Registrazione: 15 gennaio 2018 - 20:59

27 settembre 2018 - 17:12

Ho eseguito i test e quando eseguo un comando tramite psexec il risultato è quello mostrato nell'immagine sottostante.

authority nt\system

Immagine

https://ibb.co/iwCjWp (Non so perché l'immagine non venga visualizzata essendo racchiusa nel tag [img])
Avatar utente
dcardon
Esperto WAPT
Messaggi: 1908
Registrazione: 18 giugno 2014 - 09:58
Ubicazione: Saint Sébastien sur Loire
Contatto:

27 settembre 2018 - 17:48

Ciao Elias,
empbilly ha scritto: 27 set 2018 - 17:12 Ho fatto i test e quando eseguo un cmd tramite psexec il risultato è quello mostrato nell'immagine sottostante.

authority nt\system

Immagine

https://ibb.co/iwCjWp (Non so perché l'immagine non venga visualizzata essendo nel tag [img])
Quindi in quel cmd.exe sei "Sistema locale" (è il vero account root su Windows). Ora devi solo eseguire la stessa riga di comando che hai inserito nel tuo

Codice: Seleziona tutto

setup.py
file e verificare se funziona correttamente.

Denis
Denis Cardon - Tranquil IT
Condividi le tue esperienze su WAPT! Inviaci gli URL dei tuoi blog e articoli nella "La tua opinione del forum e li pubblicheremo sul di WAPT
Empbilly
Messaggi: 79
Registrazione: 15 gennaio 2018 - 20:59

27 settembre 2018 - 21:18

dcardon,

Ho contattato l'azienda che ha sviluppato il software e mi è stata fornita un'altra variabile da rimuovere silenziosamente.

Codice: Seleziona tutto

C:\ProgramData\{5F3A4BBA-1519-45F2-9BF7-1E9924E32CAA}>"Surfer(11.1.719)_Installer.exe" REMOVE=TRUE MODIFY=FALSE UNINSTALL=TRUE /s
Quando si esegue questo comando in cmd tramite psexec.exe, un'altra finestra mostra che non è stato trovato alcun file o cartella.

Nella finestra viene visualizzato il messaggio seguente:
C:\Windows\system32\config\systemprofile\Desktop si riferisce a una posizione non disponibile. Potrebbe trovarsi su un disco rigido di questi computer o su una rete. Assicurati che il disco sia inserito correttamente o che tu sia connesso a Internet o alla rete e riprova. Se ancora non riesci a trovarlo, le informazioni potrebbero essere state spostate in un'altra posizione.
Solo dopo aver premuto OK la disinstallazione prosegue.

Il percorso C:\Windows\system32\config\systemprofile esiste, ma "Desktop" no.

Esiste un modo per simulare il clic OK?
Avatar utente
vcardon
Esperto WAPT
Messaggi: 272
Registrazione: 06/10/2017 - 22:55
Posizione: Nantes, Francia

28 settembre 2018 - 15:07

empbilly ha scritto: 27 settembre 2018 - 21:18
C:\Windows\system32\config\systemprofile\Desktop si riferisce a una posizione non disponibile. Potrebbe trovarsi su un disco rigido di questi computer o su una rete. Assicurati che il disco sia inserito correttamente o che tu sia connesso a Internet o alla rete e riprova. Se ancora non riesci a trovarlo, le informazioni potrebbero essere state spostate in un'altra posizione.
Che ne dici di creare una cartella vuota C:\Windows\system32\config\systemprofile\Desktop nello script di installazione?

Se lo script di disinstallazione del software vuole rimuovere un file o una cartella e si blocca perché non trova il file, perché non crearlo e basta?.

WAPT è spesso utile per correggere problemi con gli script di installazione/rimozione di software commerciali.

Vincenzo
Vincent CARDON
Tranquillo IT
Avatar utente
dcardon
Esperto WAPT
Messaggi: 1908
Registrazione: 18 giugno 2014 - 09:58
Ubicazione: Saint Sébastien sur Loire
Contatto:

28 settembre 2018 - 15:24

Ciao Elias,
empbilly ha scritto: 27 settembre 2018 - 21:18 Ho contattato l'azienda che ha sviluppato il software e mi è stata fornita un'altra variabile da rimuovere silenziosamente.

Codice: Seleziona tutto

C:\ProgramData\{5F3A4BBA-1519-45F2-9BF7-1E9924E32CAA}>"Surfer(11.1.719)_Installer.exe" REMOVE=TRUE MODIFY=FALSE UNINSTALL=TRUE /s
Quando si esegue questo comando in cmd tramite psexec.exe, un'altra finestra mostra che non è stato trovato alcun file o cartella.

Nella finestra viene visualizzato il messaggio seguente:
C:\Windows\system32\config\systemprofile\Desktop si riferisce a una posizione non disponibile. Potrebbe trovarsi su un disco rigido di questi computer o su una rete. Assicurati che il disco sia inserito correttamente o che tu sia connesso a Internet o alla rete e riprova. Se ancora non riesci a trovarlo, le informazioni potrebbero essere state spostate in un'altra posizione.
Solo dopo aver premuto OK la disinstallazione prosegue.

Il percorso C:\Windows\system32\config\systemprofile esiste, ma "Desktop" no.

Esiste un modo per simulare il clic OK?
Come ha detto Vincent in precedenza, creare in anticipo la cartella C:\Windows\system32\config\systemprofile\Desktop probabilmente risolverà il problema. Lo script di disinstallazione probabilmente tenta di rimuovere un'icona copiata durante l'installazione per fare un po' di pulizia, ma fallisce miseramente perché l'utente "Sistema locale" non ha una cartella del genere (C:\Windows\system32\config\systemprofile\ è il valore di %USERPROFILE% per "Sistema locale"). E questo spiega perché funzionava quando lo faceva in un contesto utente.

Nel tuo caso la disinstallazione non è riuscita perché le finestre pop-up venivano visualizzate sul buffer grafico non visibile del "Sistema locale".

Ora capisci perché usare

Codice: Seleziona tutto

psexec -i -s cmd.exe
è un buon modo per verificare il comportamento del programma di installazione.

La cosa migliore sarebbe che lo sviluppatore correggesse il suo script di installazione/disinstallazione!

Saluti,

Denis
Denis Cardon - Tranquil IT
Condividi le tue esperienze su WAPT! Inviaci gli URL dei tuoi blog e articoli nella "La tua opinione del forum e li pubblicheremo sul di WAPT
Empbilly
Messaggi: 79
Registrazione: 15 gennaio 2018 - 20:59

28 settembre 2018 - 19:29

Ciao vcardon e dcardon!! Grazie per tutto l'aiuto!!!

Funziona!!! :D

Non avevo pensato di creare la cartella per poi rimuoverla in seguito. 8-)

La sceneggiatura finale:

Codice: Seleziona tutto

# -*- coding: utf-8 -*-
from setuphelpers import *
import os

uninstallkey = []

destdir = makepath(programfiles, "Golden Software", "Surfer 11")
exefile = "Surfer.exe"
inidir = "%s\\AppData\\Gradient.ini" % destdir
pstools = makepath(programfiles, "mspstools")

error_env = os.environ['WINDIR']
error_path = r'%s\system32\config\systemprofile\Desktop' % error_env

def install():
    if not os.path.isdir(error_path):
        os.makedirs(error_path)
    if os.path.exists(error_path):
        print("%s was success created!" % error_path)
    print('Uninstalling old versions of surfer...')
    for soft in installed_softwares("Surfer"):
        try:
            cmd = WAPT.uninstall_cmd(soft['key'])
            if isinstance(cmd,list) and len(cmd) == 1:
                cmd = cmd[0]
                if destdir and not 'UNINSTALL=YES' in cmd:
                    cmd = cmd + ' UNINSTALL=YES' + ' /s'
                    run(cmd)
            else:
                if not destdir and 'UNINSTALL=YES' in cmd:
                    run(cmd)
        except ValueError:
            pass
    print('Uninstalling old versions of Surfer completed!')
    print('Installing Surfer...')
    install_msi_if_needed('surfer.msi')
    if os.path.exists(destdir):
        filecopyto("Gradient.ini", "%s\\AppData" % destdir)
    if os.path.exists(inidir):
        print("Gradient.ini copied to the folder %s\\AppData" % destdir)
Se hai qualcosa da migliorare nello script, te ne sarei grato. Sto programmando in Python e non conosco ancora le best practice. Grazie!
Bloccato