Icono de un acceso directo procedente de una DLL

Comparte tu experiencia y pensamientos sobre WAPT aquí / Ven aquí y habla sobre tu experiencia con Wapt, tu opinión y tus deseos
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 se proporciona en este foro
* Por favor, anteponga [RESUELTO] al título del tema si está resuelto.
* Por favor, no edite un tema etiquetado como [RESUELTO]. Abra un nuevo tema haciendo referencia al anterior.
* Especifique la versión de WAPT instalada (1.8.2 / 2.0 / 2.1 / 2.2 / etc.) ASÍ COMO la edición Enterprise / Discovery.
* Especifique el sistema operativo del servidor (Linux / Windows) y la versión (Debian Stretch/Buster - CentOS 7 - Windows Server 2012/2016/2019).
* Especifique el sistema operativo de la máquina de administración/creación de paquetes (Windows 7 / 10)
. * Como en cualquier foro de la comunidad, el soporte es proporcionado voluntariamente por los miembros. Si necesita soporte de ventas, puede comunicarse con el departamento de ventas de Tranquil IT al 02.40.97.57.55
Respuesta
stan
Mensajes: 16
Inscripciones: 26 de mayo de 2025 - 22:16 horas.

17 de abril de 2026 - 14:24

Hola,

¿sería posible añadir un argumento a setuphelpers para las funciones relacionadas con la creación de accesos directos, permitiendo al usuario elegir un icono de DLL y su índice? Por ejemplo: `

create_desktop_shortcut(label="Test", target="ms-settings:network-airplanemode", icon_dll="C:\Windows\System32\imageres.dll", index_dll=100)`

Esto permitiría un icono como este : https://renenyffenegger.ch/development/ ... es-100.png (no es la última versión, pero se entiende la idea :D).

¡Gracias de antemano!

Que tengas un buen día.

Stan
Avatar de usuario
dcardón
Experto en WAPT
Mensajes: 1908
Inscripción: 18 de junio de 2014 - 09:58
Ubicación: Saint Sébastien sur Loire
Contacto :

17 de abril de 2026 - 14:54

Hola Stan,

creo que esto es demasiado específico para integrarlo directamente en la función `create_desktop_shortcut`.

Sin embargo, ¿por qué no añadir una función de extracción de iconos a los setuphelpers para `update_package`? :-)

Ya lo hemos hecho con una solución personalizada en un paquete interno para un cliente. Veré si es algo que se pueda generalizar.

Saludos,

Denis
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
stan
Mensajes: 16
Inscripciones: 26 de mayo de 2025 - 22:16 horas.

17 de abril de 2026 - 15:45

Buen día,

Gracias por su respuesta.
Tras investigar el código de setuphelpers, me di cuenta de que en realidad era bastante simple (o al menos eso supongo).

Si observamos la función de creación de accesos directos (https://www.wapt.fr/apidoc/wapt-2.6/win ... e_shortcut)
Encontramos dos lugares (en las últimas 3 líneas que he comentado) en relación con este índice, supongo que lo único que faltaría es añadir el argumento.

Código: Seleccionar todo

def create_shortcut(path, target='', arguments='', wDir='', icon=''):
    r"""Create a windows shortcut

    Args:
        path (str) : As what file should the shortcut be created?
        target (str): What command should the desktop use?
        arguments (str): What arguments should be supplied to the command?
        wdir (str) : working directory. What folder should the command start in?
        icon (str or list) : filename or (filename, index) (only for file sc)
                              What icon should be used for the shortcut

    Returns:
        None

    >>> create_shortcut(r'c:\\tmp\\test.lnk',target='c:\\wapt\\waptconsole.exe')
    """
    ext = os.path.splitext(path)[1].lower()
    if ext == '.url':
        with open(path, 'w') as shortcut:
            shortcut.write('[InternetShortcut]\n')
            shortcut.write('URL=%s\n' % target)
            shortcut.write('IconFile="%s"\n' % icon)
            shortcut.write('IconIndex=0\n') # ICI
    else:
        winshell.CreateShortcut(path, target, arguments, wDir, (icon, 0), '')# ET ICI 
Todo lo que se necesitaría es esto (?):

Código: Seleccionar todo

def create_shortcut(path, target='', arguments='', wDir='', icon='', index_icon=''):
    r"""Create a windows shortcut

    Args:
        path (str) : As what file should the shortcut be created?
        target (str): What command should the desktop use?
        arguments (str): What arguments should be supplied to the command?
        wdir (str) : working directory. What folder should the command start in?
        icon (str or list) : filename or (filename, index) (only for file sc)
                              What icon should be used for the shortcut

    Returns:
        None

    >>> create_shortcut(r'c:\\tmp\\test.lnk',target='c:\\wapt\\waptconsole.exe')
    """
    ext = os.path.splitext(path)[1].lower()
    index_icon = index_icon if os.path.splitext(icon)[1].lower() == '.dll' else 0 
    if ext == '.url':
        with open(path, 'w') as shortcut:
            shortcut.write('[InternetShortcut]\n')
            shortcut.write('URL=%s\n' % target)
            shortcut.write('IconFile="%s"\n' % icon)
            shortcut.write('IconIndex="%s"\n' % index_icon)
    else:
        winshell.CreateShortcut(path, target, arguments, wDir, (icon, index_icon), '') 
Gracias de antemano !
Respuesta