Hallo,
ich knüpfe an meinen ersten Beitrag an: viewtopic.php?f=9&t=2389 , in dem es um die Erstellung eines Druckers ging.
Das von sfonteneau vorgeschlagene Skript funktioniert. Es gibt jedoch keine Konfigurationsmöglichkeiten, und mein Treiber wählt standardmäßig ein unrealistisches Format (8,5 x 11 Zoll).
Ich wollte ihn daher konfigurieren, aber diese Einstellungen sind nicht leicht zu finden (oder ich bin einfach nicht gut im Suchen). Ich habe schließlich eine Lösung gefunden, indem ich eine Konfiguration exportiert und anschließend mit folgendem Befehl importiert habe:
- RUNDLL32.EXE PRINTUI.DLL,PrintUIEntry /Ss /n "Schumann Kopierer 5. Stock" /a C:\A4-format.dat
- RUNDLL32.EXE PRINTUI.DLL,PrintUIEntry /Sr /n "Schumann Kopierer 5. Stock" /a C:\A4-format.dat
Hinweis: Ich habe den Export natürlich nur einmal auf einem bereits konfigurierten Rechner durchgeführt, um die Basiskonfiguration zu erhalten. Anschließend habe ich versucht, den Import mit /Sr mithilfe des Pakets wapt zu reproduzieren.
Der Befehl funktioniert jedoch beim Import nur mit einem absoluten Pfad. Der folgende Test führt mich zu folgendem Schluss:
Wenn Ich befinde mich in der Eingabeaufforderung unter C:> und gebe die Option /a 'A4-format.dat' ein. Der Vorgang schlägt fehl und wird abgebrochen. Mit /a 'C:/A4-format.dat' funktioniert es hingegen, und die Formatänderung in den Druckereigenschaften ist sichtbar. Das Ergebnis ist unabhängig davon, ob die Eingabeaufforderung als Administrator ausgeführt wird oder nicht.
Meine Fragen:
- Habe ich etwas bei der Ausführung von printui.exe falsch verstanden? Gibt es eine Dokumentation, wie man die Druckereinstellungen direkt zuweist, anstatt eine Konfigurationsdatei zu verwenden?
- Falls ich es richtig verstanden habe, welche Lösung wäre empfehlenswert?
- Gibt es auf dem Client-Computer für jedes WAPT-Paket einen Ordner, auf den mit einem absoluten Pfad verwiesen werden könnte, der sich somit für jede Workstation nicht ändert?
- Sollten wir eine Netzwerkfreigabe zum Speichern der Quelldateien verwenden?
- Gibt es eine andere Lösung? (Ein Befehl zum Kopieren der .dat-Quelldatei auf die Client-Workstations verwenden, z. B. nach C:/source_wapt/fichier.dat, und anschließend den neuen absoluten Pfad festlegen, um eine allgemeine Konfiguration zu vermeiden?) Konfiguration, aber unter Verwendung eines allgemeinen Skripts.)
[GELÖST] Paket mit absoluter Pfadanforderung.
Forumregeln
Community-Forumregeln
* Englischer Support auf www.reddit.com/r/wapt
* Französischer Community-Support ist in diesem Forum verfügbar.
* Bitte kennzeichnen Sie gelöste Themen mit [GELÖST].
* Bitte bearbeiten Sie keine Themen, die mit [GELÖST] markiert sind. Erstellen Sie stattdessen ein neues Thema und verweisen Sie auf das alte.
* Geben Sie die installierte WAPT-Version, die vollständige Versionsnummer und die Build-Nummer (2.2.1.11957 / 2.2.2.12337 / usw.) sowie die Enterprise-/Discovery-Edition an.
* Versionen 1.8.2 und älter werden nicht mehr unterstützt. Fragen zu Version 1.8.2 werden nur beantwortet, wenn sie sich auf ein Upgrade auf eine unterstützte Version (2.1, 2.2 usw.) beziehen.
* Geben Sie das Server-Betriebssystem (Linux/Windows) und die Version (Debian Buster/Bullseye – CentOS 7 – Windows Server 2012/2016/2019) an.
* Geben Sie gegebenenfalls das Betriebssystem des Administrations-/Paketerstellungsrechners und des Rechners mit dem problematischen Agenten an (Windows 7/10/11/Debian 11/etc.).
* Vermeiden Sie es, mehrere Fragen in einem Thema zu stellen, da diese sonst möglicherweise ignoriert werden. Falls mehrere Themen relevant sind, erstellen Sie bitte separate Themen, vorzugsweise nacheinander und nicht gleichzeitig (d. h. vermeiden Sie Spam im Forum).
* Fügen Sie Code-Snippets, Screenshots und andere Bilder direkt in Ihren Beitrag ein. Links zu Pastebin, Bitly und anderen Drittanbieterseiten werden systematisch entfernt.
* Wie in jedem Community-Forum erfolgt die Unterstützung freiwillig durch die Mitglieder. Für kommerziellen Support kontaktieren Sie bitte den Vertrieb von Tranquil IT unter +44 2 40 97 57 55.
Community-Forumregeln
* Englischer Support auf www.reddit.com/r/wapt
* Französischer Community-Support ist in diesem Forum verfügbar.
* Bitte kennzeichnen Sie gelöste Themen mit [GELÖST].
* Bitte bearbeiten Sie keine Themen, die mit [GELÖST] markiert sind. Erstellen Sie stattdessen ein neues Thema und verweisen Sie auf das alte.
* Geben Sie die installierte WAPT-Version, die vollständige Versionsnummer und die Build-Nummer (2.2.1.11957 / 2.2.2.12337 / usw.) sowie die Enterprise-/Discovery-Edition an.
* Versionen 1.8.2 und älter werden nicht mehr unterstützt. Fragen zu Version 1.8.2 werden nur beantwortet, wenn sie sich auf ein Upgrade auf eine unterstützte Version (2.1, 2.2 usw.) beziehen.
* Geben Sie das Server-Betriebssystem (Linux/Windows) und die Version (Debian Buster/Bullseye – CentOS 7 – Windows Server 2012/2016/2019) an.
* Geben Sie gegebenenfalls das Betriebssystem des Administrations-/Paketerstellungsrechners und des Rechners mit dem problematischen Agenten an (Windows 7/10/11/Debian 11/etc.).
* Vermeiden Sie es, mehrere Fragen in einem Thema zu stellen, da diese sonst möglicherweise ignoriert werden. Falls mehrere Themen relevant sind, erstellen Sie bitte separate Themen, vorzugsweise nacheinander und nicht gleichzeitig (d. h. vermeiden Sie Spam im Forum).
* Fügen Sie Code-Snippets, Screenshots und andere Bilder direkt in Ihren Beitrag ein. Links zu Pastebin, Bitly und anderen Drittanbieterseiten werden systematisch entfernt.
* Wie in jedem Community-Forum erfolgt die Unterstützung freiwillig durch die Mitglieder. Für kommerziellen Support kontaktieren Sie bitte den Vertrieb von Tranquil IT unter +44 2 40 97 57 55.
- dcardon
- WAPT-Experte
- Nachrichten: 1953
- Anmeldung: 18. Juni 2014 - 09:58 Uhr
- Ort: Saint Sébastien sur Loire
- Kontakt:
Das Paket wird in ein temporäres Verzeichnis mit einem zufälligen Namen entpackt. Den Pfad zu diesem Verzeichnis können Sie über die Variable `basedir` abrufen.
Denis Cardon – Tranquil IT
Teilen Sie Ihre Erfahrungen auf WAPT! Senden Sie uns Ihre Blog- und Artikel-URLs im „Ihre Meinung des Forums, und wir werden sie auf der WAPT-
Teilen Sie Ihre Erfahrungen auf WAPT! Senden Sie uns Ihre Blog- und Artikel-URLs im „Ihre Meinung des Forums, und wir werden sie auf der WAPT-
Danke, die Variable basedir ist super.
Letztendlich scheint das jedoch nicht das Hauptproblem zu sein.
In meinem Skript, das ich für die Druckererstellung größtenteils von sfonteneau übernommen habe, sind dies die beiden aktiven Zeilen:
Der Drucker „Schumann Copier 5th floor“ wurde installiert. Funktioniert einwandfrei.
run(ur'rundll32 printui.dll,PrintUIEntry /if /b "%s" /f %s /r "IP_%s" /m "%s" ' % (nameprinter,path_driver,portprint,name_drivers))
- Soll die Druckereinstellungen aus der Datei „printer-format.dat“ in den Schumann-Kopierer/Drucker importieren. Funktioniert nicht mit PyScripter.
run(u'printui.exe /Sr /n "Schumann Kopierer 5. Stock" /a /f %s\printer-format.dat' %(basedir))
Ich habe also /f ausprobiert, was nichts änderte, und dann den vollständigen Pfad mit basedir hinzugefügt. Es änderte sich nichts.
Zur Erinnerung: Die direkte Verwendung der Eingabeaufforderung (CMD) mit denselben Dateien und Pfaden funktioniert problemlos. Oder besser gesagt: nicht ganz
Wenn ich das Paket erstelle und in mein lokales Repository hochlade, es anschließend modifiziere und einen Befehl für die Datei printer-format.dat ausführe, erhalte ich die Fehlermeldung „Vorgang konnte nicht abgeschlossen werden“ (beim Import). Nachdem ich die Datei exportiert und überschrieben habe, importiere ich sie erneut, und dann funktioniert es.
Ich vermute, das könnte mit einem Sicherheitsproblem in Windows zusammenhängen. Beim Erstellen meiner Pakete bin ich schon häufiger auf ähnliche Fehler gestoßen. Manchmal finde ich Workarounds, die eher wie Hacks wirken (z. B. mit Batch-Dateien oder PowerShell) als wie echte Lösungen.
Kurz gesagt, ich drehe mich im Kreis und verstehe die zurückgegebenen Fehlercodes nicht. Haben Sie Tipps, wie ich sie besser verstehen kann?
Zu Ihrer Information: Hier ist meine Installationsfunktion:
Hier ist der Fehlercode, der beim Ausführen des Befehls „install“ in PyScripter angezeigt wird:
Da ich nicht weiß, welche Informationen für Sie wirklich wichtig sind, können Sie mir gerne Fragen stellen, falls nötig. Ich veröffentliche bereits viele Beiträge und möchte niemanden abschrecken, der meine Beiträge lesen möchte.
Letztendlich scheint das jedoch nicht das Hauptproblem zu sein.
In meinem Skript, das ich für die Druckererstellung größtenteils von sfonteneau übernommen habe, sind dies die beiden aktiven Zeilen:
Der Drucker „Schumann Copier 5th floor“ wurde installiert. Funktioniert einwandfrei.
run(ur'rundll32 printui.dll,PrintUIEntry /if /b "%s" /f %s /r "IP_%s" /m "%s" ' % (nameprinter,path_driver,portprint,name_drivers))
- Soll die Druckereinstellungen aus der Datei „printer-format.dat“ in den Schumann-Kopierer/Drucker importieren. Funktioniert nicht mit PyScripter.
run(u'printui.exe /Sr /n "Schumann Kopierer 5. Stock" /a /f %s\printer-format.dat' %(basedir))
Ich habe also /f ausprobiert, was nichts änderte, und dann den vollständigen Pfad mit basedir hinzugefügt. Es änderte sich nichts.
Zur Erinnerung: Die direkte Verwendung der Eingabeaufforderung (CMD) mit denselben Dateien und Pfaden funktioniert problemlos. Oder besser gesagt: nicht ganz
Wenn ich das Paket erstelle und in mein lokales Repository hochlade, es anschließend modifiziere und einen Befehl für die Datei printer-format.dat ausführe, erhalte ich die Fehlermeldung „Vorgang konnte nicht abgeschlossen werden“ (beim Import). Nachdem ich die Datei exportiert und überschrieben habe, importiere ich sie erneut, und dann funktioniert es.
Ich vermute, das könnte mit einem Sicherheitsproblem in Windows zusammenhängen. Beim Erstellen meiner Pakete bin ich schon häufiger auf ähnliche Fehler gestoßen. Manchmal finde ich Workarounds, die eher wie Hacks wirken (z. B. mit Batch-Dateien oder PowerShell) als wie echte Lösungen.
Kurz gesagt, ich drehe mich im Kreis und verstehe die zurückgegebenen Fehlercodes nicht. Haben Sie Tipps, wie ich sie besser verstehen kann?
Zu Ihrer Information: Hier ist meine Installationsfunktion:
Code: Alle auswählen
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: Alle auswählen
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
- WAPT-Experte
- Nachrichten: 2322
- Registriert: 10. Juli 2014 - 23:52 Uhr
- Kontakt:
für die Bestellung
Vielleicht muss es im Benutzerkontext ausgeführt werden? Mit Sitzungseinrichtung
Code: Alle auswählen
run(ur'printui.exe /Sr /n "Copieur schumann 5eme etage" /a /f %s\printer-format.dat' %(basedir))
Die Sitzungseinrichtung ist nützlich! Das zeigt mir nur, dass ich mir noch etwas genauer ansehen muss, was wapt alles für mich tun kann.
In diesem Fall bestand zwar ein Zusammenhang, aber kein direkter. Die ausführbare Datei `printui` setzt den Kontext direkt; wir können ihn mit Flags am Ende der importierten Konfigurationsdatei modifizieren. Hier ist also die neue Zeile, die im Benutzerkontext funktioniert und von "def install:" korrekt ausgeführt wird
Und um noch einen Schritt weiterzugehen, stieß ich auf ein Problem: Mein Import würde keine formatierten Daten enthalten, da man Flags benötigt, um anzugeben, was exportiert werden soll. Daher muss man mit Folgendem exportieren:
Und importieren Sie mit:
Wichtig ist, beim Export und Import das "u" zu verwenden, um denselben Kontext zu nutzen.
Hier ist das Thema, das mir geholfen hat:
https://stackoverflow.com/questions/173 ... ompleted-e
In diesem Fall bestand zwar ein Zusammenhang, aber kein direkter. Die ausführbare Datei `printui` setzt den Kontext direkt; wir können ihn mit Flags am Ende der importierten Konfigurationsdatei modifizieren. Hier ist also die neue Zeile, die im Benutzerkontext funktioniert und von "def install:" korrekt ausgeführt wird
Code: Alle auswählen
run(ur'printui.exe /Sr /n "Copieur schumann 5eme etage" /a %s\printer-format.dat u' %(basedir))Code: Alle auswählen
Rundll32.exe printui.dll,PrintUIEntry /Ss /n "Copieur Schumann 5eme etage" /a printer-format.dat c m uCode: Alle auswählen
run(ur'Rundll32.exe printui.dll,PrintUIEntry /Sr /n "Copieur Schumann 5eme etage" /a %s\printer-format.dat c m p r u' %(basedir))Hier ist das Thema, das mir geholfen hat:
https://stackoverflow.com/questions/173 ... ompleted-e
- Sfonteneau
- WAPT-Experte
- Nachrichten: 2322
- Registriert: 10. Juli 2014 - 23:52 Uhr
- Kontakt:
Vielen Dank! Das war sehr hilfreich!
Guten Morgen,
Vielen Dank für den Code zum Bereitstellen und Konfigurieren der Drucker.
Die Bereitstellung funktioniert einwandfrei, aber wenn ich in Pyscripter die Installation zum Testen starte, funktionieren die Druckereinstellungen nur für mein Domänenadministratorkonto (ads samba domain).
Wenn ich jedoch die folgende Befehlszeile manuell in der Benutzersitzung über cmd ausführe
Die Konfiguration wird für meinen Benutzer korrekt angewendet.
Könnte ich eine Einstellung übersehen haben, die dazu führt, dass die Druckerbereitstellung funktioniert, aber nicht die Konfiguration für die Benutzer?
Vielen Dank für Ihr Feedback
Vielen Dank für den Code zum Bereitstellen und Konfigurieren der Drucker.
Die Bereitstellung funktioniert einwandfrei, aber wenn ich in Pyscripter die Installation zum Testen starte, funktionieren die Druckereinstellungen nur für mein Domänenadministratorkonto (ads samba domain).
Wenn ich jedoch die folgende Befehlszeile manuell in der Benutzersitzung über cmd ausführe
Code: Alle auswählen
RUNDLL32 PRINTUI.DLL,PrintUIEntry /Sr /n "Copieur Administratif Etage" /a C:\waptdev\tis-install-printer-Administratif_Etage-wapt\disk1\config-CAE.dat uKönnte ich eine Einstellung übersehen haben, die dazu führt, dass die Druckerbereitstellung funktioniert, aber nicht die Konfiguration für die Benutzer?
Vielen Dank für Ihr Feedback
