tis-charlemagne-viescolaire icon

Charlemagne Vie Scolaire

Paquet d’installation silencieuse pour Charlemagne Vie Scolaire

11.5.0.0-6

  • package: tis-charlemagne-viescolaire
  • name: Charlemagne Vie Scolaire
  • version: 11.5.0.0-6
  • categories: Education
  • maintainer: WAPT Team,Tranquil IT, Flavien Schelfaut
  • editor: Aplim
  • locale: all
  • target_os: windows
  • impacted_process: VieScolaire.exe
  • architecture: all
  • signature_date:
  • size: 49.81 Mo
  • homepage : https://www.aplim.fr
  • depends:

package           : tis-charlemagne-viescolaire
version           : 11.5.0.0-6
architecture      : all
section           : base
priority          : optional
name              : Charlemagne Vie Scolaire
categories        : Education
maintainer        : WAPT Team,Tranquil IT, Flavien Schelfaut
description       : Charlemagne VieScolaire
depends           : tis-charlemagne-outils
conflicts         : 
maturity          : PROD
locale            : all
target_os         : windows
min_wapt_version  : 2.1
sources           : https://api.ecoledirecte.com/v3/c/0/download/majcharlemagne.awp?verbe=get&chemin=MiseAJour\V2\&fichier=wVieScolaire.exe
installed_size    : 
impacted_process  : VieScolaire.exe
description_fr    : 
description_pl    : 
description_de    : 
description_es    : 
description_pt    : 
description_it    : 
description_nl    : 
description_ru    : 
audit_schedule    : 
editor            : Aplim
keywords          : 
licence           : 
homepage          : https://www.aplim.fr
package_uuid      : 655779c5-5da0-4cc5-b45e-e8fd3b09e779
valid_from        : 
valid_until       : 
forced_install_on : 
changelog         : 
min_os_version    : 10.0
max_os_version    : 
icon_sha256sum    : 1cda6ba35e0ed632200ff6e08a00ef85a16d9f5a4a62d2667784f2bf817fae9e
signer            : Tranquil IT
signer_fingerprint: 8c5127a75392be9cc9afd0dbae1222a673072c308c14d88ab246e23832e8c6bb
signature_date    : 2025-04-04T16:00:31.000000
signed_attributes : package,version,architecture,section,priority,name,categories,maintainer,description,depends,conflicts,maturity,locale,target_os,min_wapt_version,sources,installed_size,impacted_process,description_fr,description_pl,description_de,description_es,description_pt,description_it,description_nl,description_ru,audit_schedule,editor,keywords,licence,homepage,package_uuid,valid_from,valid_until,forced_install_on,changelog,min_os_version,max_os_version,icon_sha256sum,signer,signer_fingerprint,signature_date,signed_attributes
signature         : ZhvIKDIdRMrCmLkd5N4yn+LMK798z38OtVgRsMPro39BOCcgOqhoIOd3A2bM6z/NUNpJo1EHl09p2yWsMSEpiHATcTH4H+fS4Uj166/cN0i89zYe/eacTGv/v6K+WXbU+4HrFymVVajk6NM3ORZc/Oo0gmOigfIDyw25xGP0m2lAQ5VZvklOP+gWxjLdz1MxP8shRIi2d82AoVx+SwpHhnKLJ/qCJVJPorwpkMInN6SrGXbMBlsBC67al/qRlEXFo7DuXuBOjCnSS00wgV+Dn39IiSmRfvn6qDwtxg59H9A4qT4eu8BICRMKs0kNNj5RHyt2NxtTjGw99zL9E1klzg==

# -*- coding: utf-8 -*-
from setuphelpers import *

# Declaring global variables - Warnings: 1) WAPT context is only available in package functions; 2) Global variables are not persistent between calls
bin_name = "charlemagne_viescolaire.exe"
silent_args = "/S"
desktop_shortcut_name = 'Charlemagne Vie Scolaire'
path_folder = makepath(programfiles32(),'alcuin')
bin_exe = makepath(path_folder, 'VieScolaire.exe') # Edit here the name of the executable

def install():
    
    # Initializing variables
    package_version = control.version.split("-")[0]

    # Installing the package
    print(f"Installing: {bin_name}")
    if force or not isfile(bin_exe) or Version(get_version_from_binary(bin_exe)) < Version(package_version):
        killalltasks(control.impacted_process)
        run(f"{makepath(basedir, bin_name)} {silent_args}")

    if not isfile(bin_exe): 
        error('error %s not found' % bin_exe) 

    bin_version = get_version_from_binary(bin_exe)
    if Version(bin_version) < Version(package_version):
        error('Version file for %s is %s' % (bin_exe,bin_version))
    
    remove_desktop_shortcut(desktop_shortcut_name)

def uninstall():
    remove_desktop_shortcut(desktop_shortcut_name)
    remove_file(bin_exe)

def audit():
    
    if not isfile(bin_exe):
        print(f"The executable can't be found here : {bin_exe}")
        return "ERROR"

    bin_version = get_version_from_binary(bin_exe)
    package_version = control.version.split("-")[0]

    if Version(bin_version) < Version(package_version):
        print('Version file for %s is %s' % (bin_exe,bin_version))
        return "ERROR"        

    if Version(bin_version) > Version(package_version):
        print('Version file for %s is %s' % (bin_exe,bin_version))
        return "WARNING"

    print("The installation has been done correctly")
    return "OK"

# -*- coding: UTF-8 -*-
from setuphelpers import *
from setupdevhelpers import *
import waptlicences
import json


url = "https://www.aplim.fr/Documentation.aspx/GetDirectoryAndFiles"
targeted_text = "Vie Scolaire"
latest_bin = "charlemagne_viescolaire.exe"

def get_json_file(proxies=None):

    url="https://www.aplim.fr/Documentation.aspx/GetDirectoryAndFiles"

    headers = {
        "accept": "application/json",
        "content-type": "application/json",
        "cache-control": "no-cache",
        "pragma": "no-cache",
        "user-agent": "WAPT"
    }

    try:   
        response = requests.get(url, headers=headers, proxies=proxies)
        response.raise_for_status()
        response = response.json()

        return json.loads(response['d'])
    except:
        error('Unable to get json from aplim website !')

def find_charlemagne_downloads(json_file):
    downloads = next((item['nodes'] for item in json_file if item.get('text') == "Téléchargements"), list())
    charlemagne_item = next((item for item in downloads if item.get('text') == "Charlemagne"), dict())
    return charlemagne_item.get('nodes', list())

def find_charlemagne_software(downloads, targeted_text):
    for download in downloads:
        if targeted_text in download.get('text', ''):
            return download
    return None

def contains_letters(chaine):
    return any(c.isalpha() for c in chaine)

def get_charlemagne_version(text):
    return text.split('-')[-1].strip()

def update_package():
    # Declaring local variables
    package_updated = False
    proxies = get_proxies_from_wapt_console()
    if not proxies:
        proxies = get_proxies()

    app_name = control.name

    charlemagne_downloads = find_charlemagne_downloads(get_json_file(proxies=proxies))
    software = find_charlemagne_software(charlemagne_downloads, targeted_text)
    version = get_charlemagne_version(software['text'])
    
    download_url = software['href']

    print(f"Latest {app_name} version is: {version}")
    print(f"Download url is: {download_url}")

    # Before Aplim set up a bad naming scheme for its applications (Ex: 21.B , 9.2A ...)
    # so we check if this is not the case
    if contains_letters(version):
        print("For the moment, this application cannot be packaged due to incorrect version naming...")
        return package_updated

    for f in glob.glob('*.exe'):
        if Version(get_version_from_binary(f)) < Version(version):
            remove_file(f)

    if not isfile(latest_bin):
        print(f"Downloading: {latest_bin}")
        package_updated = True
        wget(download_url, latest_bin, proxies=proxies)
    else:
        print(f"Binary is present: {latest_bin}")

    expected_issuer = 'Aplim'
    sign_name = waptlicences.check_exe_signing_certificate(latest_bin)[0]
    if sign_name != expected_issuer:
        error(f'Bad issuer {sign_name} != {expected_issuer} ')

    # Changing version of the package
    if Version(version) > Version(control.get_software_version()):
        print(f"Software version updated (from: {control.get_software_version()} to: {version})")
        package_updated = True
    else:
        print(f"Software version up-to-date ({version})")
        
    control.set_software_version(get_version_from_binary(latest_bin))
    control.save_control_to_wapt()

    return package_updated

38d056ab130f7bf7c481c12636a4e9959de36561d3dfcbe54c6e3571bc0c1dc3 : WAPT/certificate.crt
f5132e8f35afde0b244e4f563cd0d2b97977d1742105eb62aaf69a508baafe58 : WAPT/control
1cda6ba35e0ed632200ff6e08a00ef85a16d9f5a4a62d2667784f2bf817fae9e : WAPT/icon.png
36dc66d2da64ebac4749518b0c47ce75258b20bf93b5f92f8b6eb05b5b536b26 : charlemagne_viescolaire.exe
2f1013b450ff014dd2fbdc69a3832cb8fa114c30f337525bd20267003bfe5843 : luti.json
6041daefb9facbe9ccf4463f3548baccce9d54c5e3f29bdaf301a86a6cab9430 : setup.py
dedea89685de54c5bf74c7df0d9b2185e4a8291886d9ceee7d0cea1ddd14fe9c : update_package.py