Emacs
Silent install package for Emacs
31.1-2
Preprod packages are packages built on LUTI.
They remain in PREPROD usually for 5 days, after which a second VirusTotal scan is performed to verify that the status has not changed.
If the package passes this last check, it is promoted to PROD and published on the store.
- package: tis-emacs-portable
- name: Emacs
- version: 31.1-2
- maintainer: Amel FRADJ
- licence: Appendix A GNU GENERAL PUBLIC LICENSE
- target_os: windows
- architecture: x64
- signature_date:
- size: 57.70 Mo
- homepage : https://www.gnu.org/software/emacs/
package : tis-emacs-portable
version : 31.1-2
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 : e132914f-d02a-407e-b131-4084ca547a6a
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-09-18T12:27:24.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 : OwW/7rJYm04GSSNdukorf6mZNa5N0gCRPIkOOemrnWW4ZlhTOIbXLqikRv0Nazzld2ThDpj7EvX38Lv+5U34EgxAPV5FEthNUkMq0Htgm4UuNgPY8As7rmUZTAigYS4CylwdlniIlacn2bSF7s5STROOy4Kc/dmsbsHebGZipsuHxQbL8nXBJOexLn1RgEZhpbcCsZkh9kh12Ymbc/UHlP0PhnmNykFOsH6/MT/OvcJfjYhJeJDdGWC4x1zh5OUrqFejd74PU+odHowU0hkq8dbF9W6cwRHW7FI+jZKD1xYiAqxz9QIByzclwnK2vD0AN2nNM2oykH4CroE7WFWomw==
# -*- 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].split("_")[0]
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
0ef94dcc90afd14ea2ec8eee5a6663b4c7bb0b342e439a2a05b13182b9284e8f : WAPT/control
b410f985f597b26aaa1036b1f579ce1a765c1d8a9efd34f94a5045329bf74c92 : WAPT/icon.png
463f279d025aec463057278fd009856f11cf7946ed7dd62c9a0ec16459e87216 : emacs-31.1_1-installer.exe
7451033a5c3c1f5adae39fb98e6e5548c6a6889b6099014c8ff9d823c3d45cac : luti.json
b91dc04bb951a9e6ac1aee6c0db571e8ff56358b1bf68930582caabdf0bcc425 : setup.py
fb6e28d9cb917d567cfff4b82350915bf9d443960da712a37bf1132e3d9ae8b0 : update_package.py