[Resuelto] Mover acceso directo del escritorio

Preguntas sobre paquetes WAPT / Solicitudes y ayuda sobre paquetes WAPT.
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.
Bloqueado
Gaelds
Mensajes: 254
Inscripción: 22 de noviembre de 2015 - 08:37

22 de noviembre de 2015 - 8:43 AM

Buen día,

Después de instalar Stellarium, me gustaría mover el acceso directo predeterminado del escritorio a una subcarpeta (tras verificar que ya existe). Desafortunadamente, al ejecutar el comando build-upload, recibo los siguientes mensajes: ERROR FATAL: IOError: [Errno 2] No existe el archivo o directorio...

Aquí está el extracto del código:

Código: Seleccionar todo

if isdir("c:\Users\Public\Desktop\Logiciels\Physique-Chimie\""):
    if isfile("c:\Users\Public\Desktop\Stellarium.lnk"):
        print ('Déplacement du raccourci Stellarium')
        shutil.move("c:\Users\Public\Desktop\Stellarium.lnk","c:\Users\Public\Desktop\Logiciels\Physique-Chimie\Stellarium.lnk")
La carga de compilación funciona si creo el archivo c:\Users\Public\Desktop\Logiciels\Physique-Chimie\Stellarium.lnk en mi PC, pero ¿se puede evitar este tipo de error modificando el código?
Archivos adjuntos
error.jpg
error.jpg (103,07 KB) Visto 5765 veces
Última edición realizada por gaelds el 23 de noviembre de 2015 a las 12:40, editado 1 vez.
Gaelds
Mensajes: 254
Inscripción: 22 de noviembre de 2015 - 08:37

22 de noviembre de 2015 - 9:35 AM

Otro problema es que el acceso directo no se mueve al probar el paquete. ¿Hay algún error en el código? Intenté añadir una pausa de 30 segundos con `time.sleep(30)` antes de empezar a moverlo, pero tampoco funcionó.
Avatar de usuario
htouvet
Experto en WAPT
Mensajes: 436
Inscripción: 16 de marzo de 2015 - 10:48
Contacto :

23 de noviembre de 2015 - 09:07

Agregue caracteres "r" (cadena sin formato) para que Python no interprete el \

Código: Seleccionar todo

if isdir(r"c:\Users\Public\Desktop\Logiciels\Physique-Chimie"):
    if isfile(r"c:\Users\Public\Desktop\Stellarium.lnk"):
        print (u'Déplacement du raccourci Stellarium')
        shutil.move(r"c:\Users\Public\Desktop\Stellarium.lnk",r"c:\Users\Public\Desktop\Logiciels\Physique-Chimie\Stellarium.lnk")
Para mejorar la portabilidad,

Código: Seleccionar todo

if isdir(makepath(common_desktop(),'Logiciels','Physique-Chimie')) and isfile(common_desktop(),'Stellarium.lnk'):
        print(u'Déplacement du raccourci Stellarium')
        shutil.move(makepath(common_desktop(),'Stellarium.lnk'),makepath(common_desktop(),'Logiciels','Physique-Chimie','Stellarium.lnk'))
TI tranquila
Gaelds
Mensajes: 254
Inscripción: 22 de noviembre de 2015 - 08:37

23 de noviembre de 2015 - 09:23

¡Muchas gracias! Lo probaré pronto. ¿El segundo código también debería funcionar en XP?
Gaelds
Mensajes: 254
Inscripción: 22 de noviembre de 2015 - 08:37

23 de noviembre de 2015 - 11:30

Lo siento, parece que no funciona; el acceso directo permanece en el escritorio. ¿Podría ser que el usuario (estudiante) no tenga permisos de escritura en la carpeta de accesos directos la causa del siguiente error?
Imagen
Avatar de usuario
htouvet
Experto en WAPT
Mensajes: 436
Inscripción: 16 de marzo de 2015 - 10:48
Contacto :

23 de noviembre de 2015 - 12:09

El procedimiento `install ext` se ejecutó con la cuenta del sistema. Por lo tanto, no hay problemas de permisos.
La función `shutil.move` asume que el destino no existe.

Así que, debes comprobar que el archivo de destino no existe (`isfile`).
Además, comprueba que la carpeta existe; si no, créala (`mkdirs`).
TI tranquila
Gaelds
Mensajes: 254
Inscripción: 22 de noviembre de 2015 - 08:37

23 de noviembre de 2015 - 12:39

Por fin lo conseguí; el comando `makepath` faltaba en `isfile`. A continuación se muestra el código que funciona en Windows 7 (no probado en XP). No sé si la desinstalación es necesaria..

Código: Seleccionar todo

if iswin64():
 uninstallkey = ["Stellarium_is1"]
 print ("Fermeture de Stellarium")
 killalltasks('Stellarium.exe')
 print('installation de dst-stellarium 64bits')
 run(r'"stellarium-0.14.0-win64.exe" /VERYSILENT')
 print ("Pause de 15sec.")
 time.sleep(15)
 if isdir(makepath(common_desktop(),'Logiciels','Physique-Chimie')) and isfile(makepath(common_desktop(),'Stellarium.lnk')):
    print(u'Déplacement du raccourci Stellarium')
    shutil.move(makepath(common_desktop(),'Stellarium.lnk'),makepath(common_desktop(),'Logiciels','Physique-Chimie','Stellarium.lnk'))
else:
 uninstallkey = ["Stellarium_is1"]
 print ("Fermeture de Stellarium")
 killalltasks('Stellarium.exe')
 print('Installation de dst-stellarium 32bits')
 run(r'"stellarium-0.14.0-win32.exe" /VERYSILENT')
 print ("Pause de 15sec.")
 time.sleep(15)
 if isdir(makepath(common_desktop(),'Logiciels','Physique-Chimie')) and isfile(common_desktop(),'Stellarium.lnk'):
    print(u'Déplacement du raccourci Stellarium')
    shutil.move(makepath(common_desktop(),'Stellarium.lnk'),makepath(common_desktop(),'Logiciels','Physique-Chimie','Stellarium.lnk'))

def uninstall():
 killalltasks('Stellarium.exe')
 print ("Désinstallation de Stellarium")
 if isfile(makepath(common_desktop(),'Logiciels','Physique-Chimie','Stellarium.lnk')):
  remove_file(makepath(common_desktop(),'Logiciels','Physique-Chimie','Stellarium.lnk'))
 if isfile(makepath(common_desktop(),'Stellarium.lnk')):
  remove_file(makepath(common_desktop(),'Stellarium.lnk'))
 return (0);
¡Gracias por su ayuda!
Bloqueado