Bonjour,
Je fais suite à mon premier sujet : viewtopic.php?f=9&t=2389 , concernant la création d'une imprimante.
Le script proposé par sfonteneau fonctionne. Cependant il n'y a pas de config , et mon pilote, par défaut , choisi un format incroyable (8 1/2 11").
Je voulais donc configurer, mais ces réglages ne cours pas les rues (ou je ne suis pas doué pour chercher). J'ai quand même trouvé mon bonheur avec l'export puis l'import d'une config, avec la commande :
- RUNDLL32.EXE PRINTUI.DLL,PrintUIEntry /Ss /n "Copieur schumann 5eme etage" /a C:\A4-format.dat
- RUNDLL32.EXE PRINTUI.DLL,PrintUIEntry /Sr /n "Copieur schumann 5eme etage" /a C:\A4-format.dat
Edit: NB: Bien sûr, je ne réalise l'export qu'une fois, sur un poste déjà configuré, pour avoir la base de la conf souhaitée. C'est ensuite l'import, avec /Sr, que j'essaye de reproduire avec un package wapt.
Cependant, la commande ne marche, à l'import, que lorsque nous avons un chemin absolu. Le test ci-dessous me fait arriver à cette conclusion :
Lorsque sur mon cmd, je me trouves à c:> et je tape l'option /a 'A4-format.dat' , l'opération est en échec et arretée, mais avec /a 'C:/A4-format.dat' ça marche et en vérifiant dans les propriété de l'imprimante, le format a bien changé. Résultat identique que l'on ai lancé la fenêtre cmd en admin ou non.
Ma question est :
- Ai-je mal compris un truc dans l'exécution de printui.exe ? Auriez-vous des docs pour directement affecter les paramètres de l'imprimante, plutôt que d'être dépendant d'un fichier de conf ?
- Si j'ai bien compris, quelle solution préconiser ?
- Il existe un dossier sur l'ordinateur client, pour chaque package wapt, sur lequel il serait possible de pointer avec un chemin absolu qui ne changerait donc pas pour chaque poste ?
- Faudrait-il plutôt utiliser un partage réseau pour y mettre les sources ?
- Autre solution ? (utiliser une commande pour copier la source du .dat sur les postes clients, par exemple dans c:/source_wapt/fichier.dat, Puis, mettre le nouveau chemin absolu, et ainsi pas de config générale, mais un script général.)
[RESOLU] Package avec nécessité de chemin absolu.
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
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
- dcardon
- Expert WAPT
- Messages : 1717
- Enregistré le : 18 juin 2014 - 09:58
- Localisation : Saint Sébastien sur Loire
- Contact :
le paquet est dézippé dans un répertoire temporaire avec un nom random. Vous pouvez récupérer le chemin du répertoire où il est dézippé à travers la variable basedir.
Denis Cardon - Tranquil IT
Communiquez autour de vous sur WAPT! Envoyez nous vos url de blog et d'articles dans la catégorie votre avis du forum, nous les mettrons en avant sur le site WAPT
Communiquez autour de vous sur WAPT! Envoyez nous vos url de blog et d'articles dans la catégorie votre avis du forum, nous les mettrons en avant sur le site WAPT
Merci, top la variable basedir.
Cependant, finalement, ça ne semble pas être le problème principal.
Dans mon script, que j'ai grandement piqué à sfonteneau pour al création de l'imprimante, voici les deux lignes actives:
- Installe l'imprimante "Copieur schumann 5eme etage". Marche sans aucun soucis.
run(ur'rundll32 printui.dll,PrintUIEntry /if /b "%s" /f %s /r "IP_%s" /m "%s" ' % (nameprinter,path_driver,portprint,name_drivers))
- Est censé importer les paramètres d'imprimante "printer-format.dat" dans l'imprimante copieur schumann. Ne marche pas depuis PyScripter.
run(u'printui.exe /Sr /n "Copieur schumann 5eme etage" /a /f %s\printer-format.dat' %(basedir))
J'ai donc essayé un /f qui n'a rien changé , et ajouté le chemin complet avec basedir. Rien ne change.
Pourtant pour rappel, aucun soucis en passant par le CMD directement, avec les même fichiers, les même chemins. Ou en vérité pas tout à fait :
- Lorsque je build le package et le pousse sur mon dépot local, puis cherche à le modifier, et alors exécute un cmd vers le printer-format.dat, ça me dit "impossible de terminer l'opération" (pour l'import). Du coup j'exporte pour écraser le fichier, et import à nouveau, et là ça marche.
J'ai comme l'impression que ce serait plus rapport à un problème de sécurité windows ? J'ai jusqu'à présent eu beaucoup d'erreur de ce genre en créant mes package. Desfois je trouves des workaround qui font plus penser à de la bidouille (passer par du batch, powershell ) qu'à un fix légit.
Bref je tournes en rond, et comprends rien aux code erreur retournés. D'ailleurs, auriez-vous des tips pour améliorer la comrpéhension de ces dernier ?
Voici à titre informatif ma fonction install :
Voici le code d'erreur quand j'exécute un "install" dans PyScripter:
Ne sachatn pas quels informations peuvent vraiment être importante pour vous, n'hésitez pas à me relancer au besoin sur certains points. Je flood déjà beaucoup, j'aimerai pas repousser les gens qui auraient voulu me lire^^.
Cependant, finalement, ça ne semble pas être le problème principal.
Dans mon script, que j'ai grandement piqué à sfonteneau pour al création de l'imprimante, voici les deux lignes actives:
- Installe l'imprimante "Copieur schumann 5eme etage". Marche sans aucun soucis.
run(ur'rundll32 printui.dll,PrintUIEntry /if /b "%s" /f %s /r "IP_%s" /m "%s" ' % (nameprinter,path_driver,portprint,name_drivers))
- Est censé importer les paramètres d'imprimante "printer-format.dat" dans l'imprimante copieur schumann. Ne marche pas depuis PyScripter.
run(u'printui.exe /Sr /n "Copieur schumann 5eme etage" /a /f %s\printer-format.dat' %(basedir))
J'ai donc essayé un /f qui n'a rien changé , et ajouté le chemin complet avec basedir. Rien ne change.
Pourtant pour rappel, aucun soucis en passant par le CMD directement, avec les même fichiers, les même chemins. Ou en vérité pas tout à fait :
- Lorsque je build le package et le pousse sur mon dépot local, puis cherche à le modifier, et alors exécute un cmd vers le printer-format.dat, ça me dit "impossible de terminer l'opération" (pour l'import). Du coup j'exporte pour écraser le fichier, et import à nouveau, et là ça marche.
J'ai comme l'impression que ce serait plus rapport à un problème de sécurité windows ? J'ai jusqu'à présent eu beaucoup d'erreur de ce genre en créant mes package. Desfois je trouves des workaround qui font plus penser à de la bidouille (passer par du batch, powershell ) qu'à un fix légit.
Bref je tournes en rond, et comprends rien aux code erreur retournés. D'ailleurs, auriez-vous des tips pour améliorer la comrpéhension de ces dernier ?
Voici à titre informatif ma fonction install :
Code : Tout sélectionner
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))
Code : Tout sélectionner
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
- sfonteneau
- Expert WAPT
- Messages : 2084
- Enregistré le : 10 juil. 2014 - 23:52
- Contact :
pour la commande
Il faut peu être l'executer en context utilisateur ? avec le session-setup
Code : Tout sélectionner
run(ur'printui.exe /Sr /n "Copieur schumann 5eme etage" /a /f %s\printer-format.dat' %(basedir))
Utile le session-setup! comme quoi il va falloir que je vérifie un peu plus tout ce que wapt peut faire pour moi.
En l'occurence c'était en rapport mais pas directement ça. C'est l'exe printui qui fixe directement le contexte, on peut le modifier avec des flag à la fin du fichier de conf importé. Aussi voila la nouvelle ligne qui fonctionne en contexte utilisateur et qui s'exécute correctement depuis le "def install:"
Et en vérité pour aller plus loin, j'allais avoir un soucis, à savoir que mon import n'allait rien contenir en format, car pareil il faut des flag pour préciser ce que l'on souhaite exporter lors de l'export. Du coup il faut exporter avec :
Et importer avec :
Ce qui est important est d'exporter et d'importer avec le "u" pour utiliser le même contexte.
Voici le sujet qui m'a aidé:
https://stackoverflow.com/questions/173 ... ompleted-e
En l'occurence c'était en rapport mais pas directement ça. C'est l'exe printui qui fixe directement le contexte, on peut le modifier avec des flag à la fin du fichier de conf importé. Aussi voila la nouvelle ligne qui fonctionne en contexte utilisateur et qui s'exécute correctement depuis le "def install:"
Code : Tout sélectionner
run(ur'printui.exe /Sr /n "Copieur schumann 5eme etage" /a %s\printer-format.dat u' %(basedir))
Code : Tout sélectionner
Rundll32.exe printui.dll,PrintUIEntry /Ss /n "Copieur Schumann 5eme etage" /a printer-format.dat c m u
Code : Tout sélectionner
run(ur'Rundll32.exe printui.dll,PrintUIEntry /Sr /n "Copieur Schumann 5eme etage" /a %s\printer-format.dat c m p r u' %(basedir))
Voici le sujet qui m'a aidé:
https://stackoverflow.com/questions/173 ... ompleted-e
- sfonteneau
- Expert WAPT
- Messages : 2084
- Enregistré le : 10 juil. 2014 - 23:52
- Contact :
Merci beaucoup ! très utile !
Bonjour,
Merci pour le code pour le déploiement et la configuration des imprimantes.
Le déploiement fonctionne bien mais dans Pyscripter lorsque je lance l'installation pour tester, le paramétrage de l'imprimante ne fonctionne que pour mon compte admin du domaine (domaine ads samba).
Par contre si je lance manuellement la ligne de commande suivante dans la session de l’utilisateur avec cmd
La configuration s'applique bien pour mon utilisateur.
Est ce que j'aurai loupé un paramètre qui fait que le déploiement de l'imprimante fonctionne mais pas la configuration pour les utilisateurs ?
Merci pour votre retour
Merci pour le code pour le déploiement et la configuration des imprimantes.
Le déploiement fonctionne bien mais dans Pyscripter lorsque je lance l'installation pour tester, le paramétrage de l'imprimante ne fonctionne que pour mon compte admin du domaine (domaine ads samba).
Par contre si je lance manuellement la ligne de commande suivante dans la session de l’utilisateur avec cmd
Code : Tout sélectionner
RUNDLL32 PRINTUI.DLL,PrintUIEntry /Sr /n "Copieur Administratif Etage" /a C:\waptdev\tis-install-printer-Administratif_Etage-wapt\disk1\config-CAE.dat u
Est ce que j'aurai loupé un paramètre qui fait que le déploiement de l'imprimante fonctionne mais pas la configuration pour les utilisateurs ?
Merci pour votre retour