tis-emacs-portable icon

Emacs

Paquet d'installation silencieuse pour Emacs

31.1-1

Les paquets PREPROD sont des paquets construits via LUTI. Ils restent généralement 5 jours en PREPROD, après quoi un deuxième scan VirusTotal est effectué pour vérifier que le status n'a pas changé.
Si le paquet réussit ce dernier contrôle, il est promu en PROD et publié sur le store.

  • package: tis-emacs-portable
  • name: Emacs
  • version: 31.1-1
  • maintainer: Amel FRADJ
  • licence: Appendix A GNU GENERAL PUBLIC LICENSE
  • target_os: windows
  • architecture: x64
  • signature_date:
  • size: 94.60 Mo
  • homepage : https://www.gnu.org/software/emacs/

package           : tis-emacs-portable
version           : 31.1-1
architecture      : x64
section           : base
priority          : optional
name              : Emacs
categories        : 
maintainer        : Amel FRADJ
description       : Text editor and development environment
depends           : 
conflicts         : 
maturity          : PREPROD
locale            : 
target_os         : windows
min_wapt_version  : 
sources           : https://mirror.cyberbits.eu/gnu/emacs/windows/
installed_size    : 
impacted_process  : 
description_fr    : Éditeur de textes et environnement de développement
description_pl    : Edytor tekstu i środowisko programistyczne
description_de    : Texteditor und Entwicklungsumgebung
description_es    : Editor de texto y entorno de desarrollo
description_pt    : Editor de texto e ambiente de desenvolvimento
description_it    : Editor di testo e ambiente di sviluppo
description_nl    : Teksteditor en ontwikkelomgeving
description_ru    : Текстовый редактор и среда разработки
audit_schedule    : 
editor            : 
keywords          : 
licence           : Appendix A GNU GENERAL PUBLIC LICENSE
homepage          : https://www.gnu.org/software/emacs/
package_uuid      : 91688681-b78f-4413-b6ec-4c5fe6638b58
valid_from        : 
valid_until       : 
forced_install_on : 
changelog         : 
min_os_version    : 
max_os_version    : 
icon_sha256sum    : b410f985f597b26aaa1036b1f579ce1a765c1d8a9efd34f94a5045329bf74c92
signer            : test
signer_fingerprint: b82fc8ef4a4475c0f69ac168176c2bfc58f572eb716c4eadd65e4785c155dd8e
signature_date    : 2026-08-25T09:51:16.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         : SLFoslDxo0h9XvgtWlmjQvo6HIOSS3/MzzdyRR5OazGU3wcKytRSaomstvCWm1+ZvY32QdpevWZ1Xe8Tqm7zT10EmLWWdymc83/24y8vG7Qd6kkAuvq1FEe+5U/uaUiSM5CswFVGIoZEjybdnGyyOvNwVvCLmPshNTUFcX7bHDO1vOZvQqzgh6Xg4Nz6erAU4sBNrJ3tIS1GalNfEyMDzNVXr9AO3vaIqOiqT8Lt5U3Donvpm7ANcQ8YMDeLV1ZojwZpj0J89JmhxMYtqPbRzNjPwKl2E58lO9fkyjL7J8QVFDG7AHm4hg3N9ZMuwcjSry0sEEpcCHT78T/Hb23ZaQ==

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

app_name = "emacs"
app_dir = makepath(programfiles, app_name)

def find_installed_path():
    # Recherche de l'emplacement de l'application installée
    for dirpath, dirnames, filenames in os.walk(app_dir):
        for filename in filenames:
            if filename == "runemacs.exe":  
                return dirpath
    return None

def install():
    bin_name = glob.glob('*.exe')[0]
    app_path = makepath(app_dir, bin_name)
    # Installing software
    killalltasks(ensure_list(control.impacted_process))
    if isdir(app_dir) and force:
        remove_tree(app_dir)
    mkdirs(app_dir)
    filecopyto(bin_name, app_path)
    
    # Running the silent installation
    run(f'"{app_path}" /S')

    # Creating shortcuts
    installed_path = find_installed_path()
    if installed_path:
        create_desktop_shortcut(app_name, target=makepath(installed_path, "runemacs.exe"))
        create_programs_menu_shortcut(app_name, target=makepath(installed_path, "runemacs.exe"))
    else:
        print("Erreur: Impossible de trouver l'emplacement de l'application installée.")

def uninstall():
    # Uninstalling software
    killalltasks(ensure_list(control.impacted_process))
    for uninstall in installed_softwares('emacs'):
        uninstall_string = uninstall.get("uninstall_string", "")
        print(f"Uninstalling emacs: {uninstall_string}")
        run(f"{uninstall_string} --uninstall --uninstall -s")
        wait_uninstallkey_absent(uninstall['key'],max_loop=600)
    if isdir(app_dir):
        remove_tree(app_dir)

    # Removing shortcuts
    remove_desktop_shortcut(app_name)
    remove_programs_menu_shortcut(app_name)

from setuphelpers import *
from setupdevhelpers import *

def update_package():
    # Déclaration des variables locales
    package_updated = False
    proxies = get_proxies()
    if not proxies:
        proxies = get_proxies_from_wapt_console()
    
    base_url = "https://mirror.cyberbits.eu/gnu/emacs/windows/"

    tr = sorted(table_to_list(bs_find(base_url, 'table')))

    latest_dir = max(tr)
        
    latest_url = base_url + latest_dir

    find_all = bs_find_all(latest_url,"a","href")
    for find in find_all:
        if find["href"].endswith(".exe"):
            latest_bin = find["href"].split("/")[-1]
            download_url = latest_url + latest_bin
            version = latest_bin.split("-")[1]
            
    print(f"Dernière version trouvée : emacs-{version}")
    print(f"URL de téléchargement de l'installateur : {download_url}")


    # Supprimer les anciens fichiers installateurs
    for f in glob.glob("*.exe"):
        if f != latest_bin:
            remove_file(f)

    # Télécharger le dernier installateur
    wget(download_url, latest_bin, proxies=proxies)

    # Mettre à jour la version du logiciel dans le fichier de contrôle
    control.set_software_version(version)
    control.save_control_to_wapt()

def table_to_list(table):
        result = []
        for row in table.find_all('tr')[1:]:
            td = row.find_all('td')[1].get_text(strip = True)
            if td.startswith("emacs-"):
                result.append(td)
        return result

01ca7fe94636e5a08fcb73849d3b5df25d51e2c82f4dd1a08f01798b25899819 : WAPT/certificate.crt
48be488992b057dc2db6aac4ef86b2dc1991db667d9185b992b85f23c44ca3b7 : WAPT/control
b410f985f597b26aaa1036b1f579ce1a765c1d8a9efd34f94a5045329bf74c92 : WAPT/icon.png
3d2246766cef85f5bdc2e2da0ec59cab98dc40cf522528bea98441410f00946e : emacs-31.1-installer.exe
eabaa687d2732d8e29d49ee3bf6131771b60fac666a3da49422a7153c82fa8e2 : luti.json
b91dc04bb951a9e6ac1aee6c0db571e8ff56358b1bf68930582caabdf0bcc425 : setup.py
1125401a09b57dd73f395a3750922350a0fa4e3935563ea4034fea4a17a85452 : update_package.py