Page 1 sur 1

[RESOLU] Paquet DSN-CTL

Posté : 25 juin 2024 - 16:37
par gaelds
Bonjour, pour ceux qui auraient besoin d'installer le logiciel DSN-CTL dans leur service compta. J'ai créé un paquet qui fonctionne chez moi.
"DSN-CTL L'outil de contrôle DSN-CTL est proposé en utilisation libre aux petits déclarants, mais soumis à licence spécifique et redevance annuelle d'utilisation dans les autres cas (entreprises de plus de 20 salariés ou multi-établissements, tiers-déclarants, éditeurs de logiciel ...)."
https://dsn-ctl.fr/

Code : Tout sélectionner

# -*- coding: utf-8 -*-
from setuphelpers import *
 # Détection du nom de l'exécutable à la racine du paquet
binary_name = glob.glob("DSN*.EXE")[0]
 # Détection du nom de l'application en supprimant le .exe à la fin de la chaine, exemple 'DSN-CTL-V24R01'
app_name = binary_name.split(".exe")[0] 
parts = app_name.split("-")
soft_name = "-".join(parts[:2]) # utile pour rechercher les versions installées
# répertoire d'installation
app_dir = makepath(programfiles32, app_name)
# répertoire de l'exécutable
app_dir_binaries = app_dir

def install():
    #  Uninstalling existing versions
    print(r'Suppression de toutes les versions installées de %s' %soft_name)
    for soft in installed_softwares(soft_name): 
        old_version = soft['key']
        print(r'Désinstallation de %s' %old_version)
        run(WAPT.uninstall_cmd(soft['key']))

    # Installing the software
    print(r"Installation de %s" %binary_name)
    install_exe_if_needed(binary_name,
        silentflags='/VERYSILENT /SUPPRESSMSGBOXES /NORESTART',
        key='%s_is1' %app_name,
        min_version=control.get_software_version()
    )
    # Create shortcut on public desktop
    create_desktop_shortcut(app_name, target=makepath(app_dir_binaries,binary_name))

def uninstall():
    print(r'Suppression des raccourcis %s sur le bureau Public' %app_name)
    for filename in glob.glob(makepath(r"%s\%s*" %(common_desktop(),soft_name))):
        print(r'Suppression de %s' %filename)
        os.remove(filename)

def audit():
    if isfile(makepath(app_dir_binaries,binary_name)):
        return("OK")
    else:
        return("Erreur : %s est introuvable !" %binary_name)
            
def update_package():
    """ You can do a CTRL F9 in pyscripter to update the package """
    import re,requests,glob

    url = 'https://dsn-ctl.fr/%s.exe' %app_name
    filename = '%s.exe' %app_name

    if not isfile(filename):
        print(r'Downloading  %s from %s'%(filename,url))
        wget(url,filename)

    exes = glob.glob('*.exe')
    for fn in exes:
        if fn != filename:
            remove_file(fn)

    # updates control version from filename, increment package version.
    control = PackageEntry().load_control_from_wapt ('.')
    version_dsn =  get_version_from_binary(filename)
    # Changing version of the package
    control.version = "%s-%s" % (version_dsn, int(control.version.split("-")[-1]) + 1)
    control.save_control_to_wapt()
    print("Changing package version to: %s in WAPT\\control" % control.version)

    if __name__ == '__main__':
      update_package()
       

Re: Paquet DSN-CTL

Posté : 04 juil. 2024 - 15:17
par dcardon
Bonjour Gaël,

Amel s'est occupé du paquet. Il est désormais dispo sur le store. Merci pour la contribution :-)

Je passe le topic en résolu.

Denis