[RISOLTO] Pacchetto con requisito di percorso assoluto.

Domande sul packaging WAPT / Richieste e assistenza sui pacchetti 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
Bloccato
LMS
Messaggi: 5
Registrazione: 3 giugno 2020 - 11:22

9 giugno 2020 - 17:22

Ciao,

vi aggiorno sul mio primo post: viewtopic.php?f=9&t=2389 , riguardo alla creazione di una stampante.

Lo script suggerito da sfonteneau funziona. Tuttavia, non c'è alcuna configurazione e il mio driver, per impostazione predefinita, sceglie un formato incredibile (8,5 x 11").

Quindi volevo configurarlo, ma queste impostazioni non sono facilmente disponibili (o semplicemente non sono bravo a cercare). Sono riuscito a trovare una soluzione esportando e poi importando una configurazione usando il comando:
- RUNDLL32.EXE PRINTUI.DLL,PrintUIEntry /Ss /n "Schumann copier 5th floor" /a C:\A4-format.dat
- RUNDLL32.EXE PRINTUI.DLL,PrintUIEntry /Sr /n "Schumann copier 5th floor" /a C:\A4-format.dat
Modifica: Nota: Ovviamente, eseguo l'esportazione solo una volta, su una macchina già configurata, per ottenere la configurazione di base. Quindi provo a riprodurre l'importazione con /Sr usando un pacchetto wapt.


Tuttavia, il comando funziona solo durante l'importazione quando abbiamo un percorso assoluto. Il test seguente mi porta a questo Conclusione:
Quando sono nel mio prompt dei comandi in c:> e digito l'opzione /a 'A4-format.dat', l'operazione fallisce e si interrompe, ma con /a 'C:/A4-format.dat' funziona e, controllando le proprietà della stampante, il formato è effettivamente cambiato. Il risultato è lo stesso sia che la finestra del prompt dei comandi venga avviata come amministratore o meno.

La mia domanda è:
- Ho frainteso qualcosa nell'esecuzione di printui.exe? Avete della documentazione su come assegnare direttamente le impostazioni della stampante, invece di affidarsi a un file di configurazione?
- Se ho capito bene, quale soluzione dovrei consigliare?
- C'è una cartella sul computer client, per ogni pacchetto wapt, a cui si potrebbe puntare con un percorso assoluto che quindi non cambierebbe per ogni workstation?
- Dovremmo usare una condivisione di rete per archiviare i file sorgente?
- Un'altra soluzione? (Usare un comando per copiare il file sorgente .dat sulle workstation client, ad esempio in c:/source_wapt/fichier.dat, quindi impostare il nuovo percorso assoluto, così (evitando una configurazione generica, ma utilizzando uno script generico.)
Avatar utente
dcardon
Esperto WAPT
Messaggi: 1908
Registrazione: 18 giugno 2014 - 09:58
Ubicazione: Saint Sébastien sur Loire
Contatto:

9 giugno 2020 - 21:44

Il pacchetto viene decompresso in una directory temporanea con un nome casuale. È possibile recuperare il percorso della directory in cui è stato decompresso utilizzando la variabile `basedir`.
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
LMS
Messaggi: 5
Registrazione: 3 giugno 2020 - 11:22

11 giugno 2020 - 11:06

Grazie, la variabile basedir è fantastica.

Tuttavia, in definitiva, questo non sembra essere il problema principale.

Nel mio script, che ho preso in prestito in gran parte da sfonteneau per la creazione della stampante, ecco le due righe attive:

- Ho installato la stampante "Schumann Copier 5th floor". Funziona senza problemi.
run(ur'rundll32 printui.dll,PrintUIEntry /if /b "%s" /f %s /r "IP_%s" /m "%s" ' % (nameprinter,path_driver,portprint,name_drivers))

- Dovrebbe importare le impostazioni di stampa "printer-format.dat" nella fotocopiatrice/stampante Schumann. Non funziona da PyScripter.
run(u'printui.exe /Sr /n "Fotocopiatrice Schumann 5° piano" /a /f %s\printer-format.dat' %(basedir))
Ho provato con /f, ma non è cambiato nulla, e ho aggiunto il percorso completo con basedir. Non è cambiato nulla.

Tuttavia, come promemoria, non ci sono problemi nell'usare CMD direttamente, con gli stessi file e gli stessi percorsi. O meglio, non proprio:
Quando compilo il pacchetto e lo carico nel mio repository locale, poi provo a modificarlo ed eseguo un comando sul file printer-format.dat, mi dice "Impossibile completare l'operazione" (per l'importazione). Quindi esporto per sovrascrivere il file e lo importo di nuovo, e funziona.

Ho la sensazione che questo possa essere correlato a un problema di sicurezza di Windows. Ho riscontrato molti errori di questo tipo durante la creazione dei miei pacchetti. A volte trovo soluzioni alternative che sembrano più hack (utilizzando file batch o PowerShell) che soluzioni legittime.

In breve, sto girando in tondo e non capisco i codici di errore che vengono restituiti. Hai qualche suggerimento per migliorarne la comprensione?
Per vostra informazione, ecco la mia funzione di installazione:

Codice: Seleziona tutto

def install():

    if iswin64():
        path_driver = r"IT5DSETWin_10110FR\Drivers\PCL6\Win_x64\KOAXTJ__.INF"
        name_drivers = "KONICA MINOLTA C287SeriesPCL"
    else:
        path_driver = r"IT5DSETWin_10110FR\Drivers\PCL6\Win_x86\KOAXTJ__.inf"
        name_drivers = "KONICA MINOLTA C287SeriesPCL"



    # Delete old printer
    run_notfatal('rundll32 printui.dll,PrintUIEntry /n "%s" /dl /q ' % nameprinter)

    # Create port lpr or raw
    createprinterport_raw(portprint)

    # use create lpr if needed
    #createprinterport_lpr(portprint,'qu')

    # Install printer and drivers
    run(ur'rundll32 printui.dll,PrintUIEntry /if /b "%s" /f %s /r  "IP_%s" /m "%s" ' % (nameprinter,path_driver,portprint,name_drivers))

    run(u'printui.exe /Sr /n "Copieur schumann 5eme etage" /a /f %s\printer-format.dat' %(basedir))
Ecco il codice di errore quando eseguo un comando "install" in PyScripter:

Codice: Seleziona tutto

2020-06-11 10:51:51,466 CRITICAL Fatal error in install script: CalledProcessErrorOutput: Command 'printui.exe /Sr /n "Copieur schumann 5eme etage" /a /f c:\\waptdev\\wapt_av-5thFloor-printer-wapt\\printer-format.dat' returned non-zero exit status 1.
Output::
Traceback (most recent call last):
  File "C:\Program Files (x86)\wapt\common.py", line 3800, in install_wapt
    exitstatus = setup.install()
  File "c:\waptdev\wapt_av-5thFloor-printer-wapt\setup.py", line 36, in install
    run(u'printui.exe /Sr /n "Copieur schumann 5eme etage" /a /f %s\printer-format.dat' %(basedir))
  File "C:\Program Files (x86)\wapt\common.py", line 3570, in run
    return ensure_unicode(setuphelpers.run(*arg,**args))
  File "C:\Program Files (x86)\wapt\setuphelpers_windows.py", line 3863, in run
    raise CalledProcessErrorOutput(proc.returncode,cmd,''.join(output))
CalledProcessErrorOutput: Command 'printui.exe /Sr /n "Copieur schumann 5eme etage" /a /f c:\\waptdev\\wapt_av-5thFloor-printer-wapt\\printer-format.dat' returned non-zero exit status 1.
Output:

FATAL ERROR : CalledProcessErrorOutput: Command 'printui.exe /Sr /n "Copieur schumann 5eme etage" /a /f c:\\waptdev\\wapt_av-5thFloor-printer-wapt\\printer-format.dat' returned non-zero exit status 1.
Output:
Exit code:  3
Se non sai quali informazioni potrebbero essere davvero importanti per te, sentiti libero di farmi domande se necessario. Pubblico già molto e non vorrei scoraggiare chi potrebbe essere interessato a leggere i miei post.
Avatar utente
sfontenau
Esperto WAPT
Messaggi: 2312
Registrato: 10 luglio 2014 - 23:52
Contatto:

11 giugno 2020 - 13:43

per l'ordine

Codice: Seleziona tutto

run(ur'printui.exe /Sr /n "Copieur schumann 5eme etage" /a /f %s\printer-format.dat' %(basedir))
Forse deve essere eseguito nel contesto utente? con session-setup
LMS
Messaggi: 5
Registrazione: 3 giugno 2020 - 11:22

11 giugno 2020 - 15:59

La configurazione della sessione è utile! Dimostra solo che dovrò provare un po' di più tutto ciò che wapt può fare per me.

In questo caso, era correlato, ma non direttamente. È l'eseguibile printui che imposta direttamente il contesto; possiamo modificarlo con i flag alla fine del file di configurazione importato. Ecco la nuova riga che funziona nel contesto utente ed è eseguita correttamente da "def install":

Codice: Seleziona tutto

run(ur'printui.exe /Sr /n "Copieur schumann 5eme etage" /a %s\printer-format.dat u' %(basedir))
E in realtà, per andare oltre, stavo per imbattermi in un problema: la mia importazione non conterrebbe dati formattati, perché sono necessari dei flag per specificare cosa si desidera esportare. Quindi bisogna esportare con:

Codice: Seleziona tutto

Rundll32.exe printui.dll,PrintUIEntry /Ss /n "Copieur Schumann 5eme etage" /a printer-format.dat c m u
E importa con:

Codice: Seleziona tutto

run(ur'Rundll32.exe printui.dll,PrintUIEntry /Sr /n "Copieur Schumann 5eme etage" /a %s\printer-format.dat c m p r u' %(basedir))
Ciò che conta è esportare e importare con la "u" per utilizzare lo stesso contesto.

Ecco l'argomento che mi è stato utile:
https://stackoverflow.com/questions/173 ... ompleted-e
Avatar utente
sfontenau
Esperto WAPT
Messaggi: 2312
Registrato: 10 luglio 2014 - 23:52
Contatto:

11 giugno 2020 - 16:16

Grazie mille! Molto utile!
rmaurisso
Messaggi: 4
Registrazione: 12 gennaio 2021 - 17:12

12 gennaio 2021 - 17:29

Buongiorno,
Grazie per il codice per la distribuzione e la configurazione delle stampanti.
La distribuzione funziona correttamente, ma quando avvio l'installazione in Pyscripter per testarla, le impostazioni della stampante funzionano solo per il mio account di amministratore di dominio (dominio ads samba).
Tuttavia, se eseguo manualmente la seguente riga di comando nella sessione dell'utente utilizzando cmd

Codice: Seleziona tutto

RUNDLL32 PRINTUI.DLL,PrintUIEntry /Sr /n "Copieur Administratif Etage" /a C:\waptdev\tis-install-printer-Administratif_Etage-wapt\disk1\config-CAE.dat u
La configurazione si applica correttamente al mio utente.
Forse mi è sfuggita un'impostazione che fa funzionare la distribuzione della stampante ma non la configurazione per gli utenti?
Grazie per il tuo feedback
rmaurisso
Messaggi: 4
Registrazione: 12 gennaio 2021 - 17:12

13 gennaio 2021 - 11:25

Funziona con il contesto utente session_setup :D
. Fantastico! :mrgreen:
Bloccato