Hola,
estoy dando seguimiento a mi primer mensaje: viewtopic.php?f=9&t=2389 , sobre la creación de una impresora.
El script sugerido por sfonteneau funciona. Sin embargo, no hay configuración y mi controlador, por defecto, elige un formato increíble (8.5 x 11").
Así que quería configurarlo, pero estos ajustes no están fácilmente disponibles (o simplemente no soy bueno buscando). Logré encontrar una solución exportando y luego importando una configuración usando el 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
Edición: Nota: Por supuesto, solo realizo la exportación una vez, en una máquina que ya está configurada, para obtener la configuración básica. Luego intento reproducir la importación con /Sr usando un paquete.wapt.
Sin embargo, el comando solo funciona durante la importación cuando tenemos una ruta absoluta. La prueba a continuación me lleva a esto Conclusión:
Cuando estoy en mi símbolo del sistema en c:> y escribo la opción /a 'A4-format.dat', la operación falla y se detiene, pero con /a 'C:/A4-format.dat' funciona, y al comprobar las propiedades de la impresora, el formato efectivamente ha cambiado. El resultado es el mismo tanto si la ventana del símbolo del sistema se inicia como administrador como si no.
Mi pregunta es:
- ¿He entendido mal algo en la ejecución de printui.exe? ¿Tienen alguna documentación sobre cómo asignar directamente la configuración de la impresora, en lugar de depender de un archivo de configuración?
- Si entiendo correctamente, ¿qué solución debería recomendar? -
¿Hay una carpeta en el equipo cliente, para cada paquete wapt, a la que se podría apuntar con una ruta absoluta que, por lo tanto, no cambiaría para cada estación de trabajo?
- ¿Deberíamos usar un recurso compartido de red para almacenar los archivos fuente?
- ¿Otra solución? (Usar un comando para copiar el archivo fuente .dat a las estaciones de trabajo cliente, por ejemplo a c:/source_wapt/fichier.dat, luego establecer la nueva ruta absoluta, evitando así una configuración general, pero utilizando un script general.)
[RESUELTO] Paquete con requisito de ruta absoluta.
Reglas del foro
Reglas del foro de la comunidad
* Soporte en inglés en www.reddit.com/r/wapt
* El soporte de la comunidad en francés está disponible en este foro
* Por favor, anteponga [RESUELTO] al título del tema si está resuelto.
* Por favor, no edite un tema que esté etiquetado como [RESUELTO]. Abra un nuevo tema haciendo referencia al anterior.
* Especifique la versión de WAPT instalada, la versión completa y el número de compilación (2.2.1.11957 / 2.2.2.12337 / etc.), así como la edición Enterprise/Discovery.
* Las versiones 1.8.2 y anteriores ya no son compatibles. Las únicas preguntas aceptadas sobre la versión 1.8.2 están relacionadas con la actualización a una versión compatible (2.1, 2.2, etc.).
* Especifique el sistema operativo del servidor (Linux/Windows) y la versión (Debian Buster/Bullseye - CentOS 7 - Windows Server 2012/2016/2019).
* Especifique el sistema operativo de la máquina de administración/creación de paquetes y de la máquina con el agente problemático, si corresponde (Windows 7/10/11/Debian 11/etc.).
* Evite hacer varias preguntas al abrir un tema, ya que podría ser ignorado. Si hay varios temas, ábralos por separado, preferiblemente uno tras otro y no todos a la vez (es decir, no sature el foro con spam).
* Incluya fragmentos de código, capturas de pantalla y otras imágenes directamente en la publicación. Los enlaces a Pastebin, Bitly y otros sitios de terceros serán eliminados sistemáticamente.
* Como en cualquier foro comunitario, el soporte es proporcionado voluntariamente por los miembros. Si necesita soporte comercial, puede comunicarse con el departamento de ventas de Tranquil IT al 02.40.97.57.55.
Reglas del foro de la comunidad
* Soporte en inglés en www.reddit.com/r/wapt
* El soporte de la comunidad en francés está disponible en este foro
* Por favor, anteponga [RESUELTO] al título del tema si está resuelto.
* Por favor, no edite un tema que esté etiquetado como [RESUELTO]. Abra un nuevo tema haciendo referencia al anterior.
* Especifique la versión de WAPT instalada, la versión completa y el número de compilación (2.2.1.11957 / 2.2.2.12337 / etc.), así como la edición Enterprise/Discovery.
* Las versiones 1.8.2 y anteriores ya no son compatibles. Las únicas preguntas aceptadas sobre la versión 1.8.2 están relacionadas con la actualización a una versión compatible (2.1, 2.2, etc.).
* Especifique el sistema operativo del servidor (Linux/Windows) y la versión (Debian Buster/Bullseye - CentOS 7 - Windows Server 2012/2016/2019).
* Especifique el sistema operativo de la máquina de administración/creación de paquetes y de la máquina con el agente problemático, si corresponde (Windows 7/10/11/Debian 11/etc.).
* Evite hacer varias preguntas al abrir un tema, ya que podría ser ignorado. Si hay varios temas, ábralos por separado, preferiblemente uno tras otro y no todos a la vez (es decir, no sature el foro con spam).
* Incluya fragmentos de código, capturas de pantalla y otras imágenes directamente en la publicación. Los enlaces a Pastebin, Bitly y otros sitios de terceros serán eliminados sistemáticamente.
* Como en cualquier foro comunitario, el soporte es proporcionado voluntariamente por los miembros. Si necesita soporte comercial, puede comunicarse con el departamento de ventas de Tranquil IT al 02.40.97.57.55.
- dcardón
- Experto en WAPT
- Mensajes: 1908
- Inscripción: 18 de junio de 2014 - 09:58
- Ubicación: Saint Sébastien sur Loire
- Contacto :
El paquete se descomprime en un directorio temporal con un nombre aleatorio. Puede recuperar la ruta del directorio donde se descomprimió usando la variable `basedir`.
Denis Cardon - Tranquil IT
¡Comparte tus experiencias en WAPT! Envíanos las URL de tus blogs y artículos en la "Tu opinión del foro y los publicaremos en el de WAPT
¡Comparte tus experiencias en WAPT! Envíanos las URL de tus blogs y artículos en la "Tu opinión del foro y los publicaremos en el de WAPT
-
Sistema de gestión del aprendizaje (LMS)
- Mensajes: 5
- Inscripción: 3 de junio de 2020 - 11:22
Gracias, la variable basedir es genial.
Sin embargo, en última instancia, ese no parece ser el problema principal.
En mi script, que en gran parte tomé prestado de sfonteneau para la creación de la impresora, aquí están las dos líneas activas:
- Instalé la impresora "Schumann Copier 5th floor". Funciona sin problemas.
run(ur'rundll32 printui.dll,PrintUIEntry /if /b "%s" /f %s /r "IP_%s" /m "%s" ' % (nombreimpresora,ruta_controlador,puertoimprimir,nombre_controladores))
Se supone que importa la configuración de impresora "printer-format.dat" a la fotocopiadora/impresora Schumann. No funciona desde PyScripter.
run(u'printui.exe /Sr /n "Copiadora Schumann 5.º piso" /a /f %s\printer-format.dat' %(basedir))
Así que probé con /f, que no cambió nada, y agregué la ruta completa con basedir. Nada cambió.
Sin embargo, como recordatorio, no hay ningún problema al usar CMD directamente, con los mismos archivos y las mismas rutas. O mejor dicho, no del todo:
Cuando compilo el paquete y lo subo a mi repositorio local, intento modificarlo y ejecuto un comando en el archivo printer-format.dat, aparece el mensaje "no se pudo completar la operación" (para la importación). Así que exporto para sobrescribir el archivo, lo importo de nuevo y funciona.
Tengo la sensación de que esto podría estar relacionado con un problema de seguridad de Windows. He encontrado muchos errores similares al crear mis paquetes. A veces encuentro soluciones alternativas que parecen más trucos (usando archivos por lotes o PowerShell) que soluciones legítimas.
En resumen, estoy dando vueltas y no entiendo los códigos de error que me devuelven. ¿Tienes algún consejo para mejorar mi comprensión?
Para su información, aquí está mi función de instalación:
Aquí está el código de error cuando ejecuto un comando "instalar" en PyScripter:
Si no sabes qué información podría ser realmente importante para ti, no dudes en preguntarme si lo necesitas. Ya publico mucho y no quiero desanimar a quienes podrían querer leer mis publicaciones.
Sin embargo, en última instancia, ese no parece ser el problema principal.
En mi script, que en gran parte tomé prestado de sfonteneau para la creación de la impresora, aquí están las dos líneas activas:
- Instalé la impresora "Schumann Copier 5th floor". Funciona sin problemas.
run(ur'rundll32 printui.dll,PrintUIEntry /if /b "%s" /f %s /r "IP_%s" /m "%s" ' % (nombreimpresora,ruta_controlador,puertoimprimir,nombre_controladores))
Se supone que importa la configuración de impresora "printer-format.dat" a la fotocopiadora/impresora Schumann. No funciona desde PyScripter.
run(u'printui.exe /Sr /n "Copiadora Schumann 5.º piso" /a /f %s\printer-format.dat' %(basedir))
Así que probé con /f, que no cambió nada, y agregué la ruta completa con basedir. Nada cambió.
Sin embargo, como recordatorio, no hay ningún problema al usar CMD directamente, con los mismos archivos y las mismas rutas. O mejor dicho, no del todo:
Cuando compilo el paquete y lo subo a mi repositorio local, intento modificarlo y ejecuto un comando en el archivo printer-format.dat, aparece el mensaje "no se pudo completar la operación" (para la importación). Así que exporto para sobrescribir el archivo, lo importo de nuevo y funciona.
Tengo la sensación de que esto podría estar relacionado con un problema de seguridad de Windows. He encontrado muchos errores similares al crear mis paquetes. A veces encuentro soluciones alternativas que parecen más trucos (usando archivos por lotes o PowerShell) que soluciones legítimas.
En resumen, estoy dando vueltas y no entiendo los códigos de error que me devuelven. ¿Tienes algún consejo para mejorar mi comprensión?
Para su información, aquí está mi función de instalación:
Código: Seleccionar todo
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))Código: Seleccionar todo
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
- Experto en WAPT
- Mensajes: 2312
- Registrado: 10 de julio de 2014 - 23:52
- Contacto :
para el pedido
¿Quizás sea necesario ejecutarlo en el contexto del usuario? con configuración de sesión
Código: Seleccionar todo
run(ur'printui.exe /Sr /n "Copieur schumann 5eme etage" /a /f %s\printer-format.dat' %(basedir))
-
Sistema de gestión del aprendizaje (LMS)
- Mensajes: 5
- Inscripción: 3 de junio de 2020 - 11:22
¡La configuración de la sesión es útil! Esto demuestra que necesito explorar un poco más todo lo que wapt puede hacer por mí.
En este caso, estaba relacionado, pero no directamente. Es el ejecutable printui el que establece directamente el contexto; podemos modificarlo con indicadores al final del archivo de configuración importado. Así que aquí está la nueva línea que funciona en el contexto del usuario y se ejecuta correctamente desde "def install:"
Y, de hecho, para ir más allá, me iba a encontrar con un problema: mi importación no contendría datos formateados, porque se necesitan indicadores para especificar qué se quiere exportar. Así que hay que exportar con:
Y importar con:
Lo importante es exportar e importar con la "u" para utilizar el mismo contexto.
Aquí está el tema que me ayudó:
https://stackoverflow.com/questions/173 ... completado-e
En este caso, estaba relacionado, pero no directamente. Es el ejecutable printui el que establece directamente el contexto; podemos modificarlo con indicadores al final del archivo de configuración importado. Así que aquí está la nueva línea que funciona en el contexto del usuario y se ejecuta correctamente desde "def install:"
Código: Seleccionar todo
run(ur'printui.exe /Sr /n "Copieur schumann 5eme etage" /a %s\printer-format.dat u' %(basedir))Código: Seleccionar todo
Rundll32.exe printui.dll,PrintUIEntry /Ss /n "Copieur Schumann 5eme etage" /a printer-format.dat c m uCódigo: Seleccionar todo
run(ur'Rundll32.exe printui.dll,PrintUIEntry /Sr /n "Copieur Schumann 5eme etage" /a %s\printer-format.dat c m p r u' %(basedir))Aquí está el tema que me ayudó:
https://stackoverflow.com/questions/173 ... completado-e
- Sfonteneau
- Experto en WAPT
- Mensajes: 2312
- Registrado: 10 de julio de 2014 - 23:52
- Contacto :
¡Muchas gracias! ¡De mucha ayuda!
Buen día,
Gracias por el código para implementar y configurar las impresoras.
La implementación funciona bien, pero en Pyscripter cuando inicio la instalación para probar, la configuración de la impresora solo funciona para mi cuenta de administrador de dominio (dominio samba de anuncios).
Sin embargo, si ejecuto manualmente la siguiente línea de comando en la sesión del usuario usando cmd
La configuración se aplica correctamente para mi usuario.
¿Es posible que haya pasado por alto una configuración que hace que la implementación de la impresora funcione pero no la configuración para los usuarios?
Gracias por tus comentarios
Gracias por el código para implementar y configurar las impresoras.
La implementación funciona bien, pero en Pyscripter cuando inicio la instalación para probar, la configuración de la impresora solo funciona para mi cuenta de administrador de dominio (dominio samba de anuncios).
Sin embargo, si ejecuto manualmente la siguiente línea de comando en la sesión del usuario usando cmd
Código: Seleccionar todo
RUNDLL32 PRINTUI.DLL,PrintUIEntry /Sr /n "Copieur Administratif Etage" /a C:\waptdev\tis-install-printer-Administratif_Etage-wapt\disk1\config-CAE.dat u¿Es posible que haya pasado por alto una configuración que hace que la implementación de la impresora funcione pero no la configuración para los usuarios?
Gracias por tus comentarios
