tis-signal-desktop icon

Signal

Paquet d’installation silencieuse pour Signal

7.86.0-15
Messaging
Messaging

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-signal-desktop
  • name: Signal
  • version: 7.86.0-15
  • categories: Messaging
  • maintainer: WAPT Team,Jimmy PELÉ
  • editor: Signal Foundation,Signal Messenger LLC
  • licence: GPLv3
  • locale: all
  • target_os: windows
  • impacted_process: signal
  • architecture: x64
  • signature_date:
  • size: 185.90 Mo
  • homepage : https://signal.org/

package           : tis-signal-desktop
version           : 7.86.0-15
architecture      : x64
section           : base
priority          : optional
name              : Signal
categories        : Messaging
maintainer        : WAPT Team,Jimmy PELÉ
description       : Signal is a cross-platform encrypted messaging service. It uses the Internet to send one-to-one and group messages, which can include files, voice notes, images and videos.
depends           : 
conflicts         : 
maturity          : PREPROD
locale            : all
target_os         : windows
min_wapt_version  : 2.1
sources           : https://signal.org/download/
installed_size    : 
impacted_process  : signal
description_fr    : Signal permet de communiquer (appels vocaux et vidéo, messages texte ou médias) de façon chiffrée et sécurisée.
description_pl    : Signal to wieloplatformowa usługa szyfrowania wiadomości. Wykorzystuje Internet do wysyłania wiadomości od jednego do drugiego i grupowych, które mogą zawierać pliki, notatki głosowe, obrazy i filmy
description_de    : Signal ist ein plattformübergreifender verschlüsselter Nachrichtendienst. Er nutzt das Internet, um Einzel- und Gruppennachrichten zu versenden, die Dateien, Sprachnotizen, Bilder und Videos enthalten können
description_es    : Signal es un servicio de mensajería encriptada multiplataforma. Utiliza Internet para enviar mensajes uno a uno y en grupo, que pueden incluir archivos, notas de voz, imágenes y vídeos
description_pt    : O sinal é um serviço de mensagens encriptadas multiplataforma. Utiliza a Internet para enviar mensagens individuais e de grupo, que podem incluir ficheiros, notas de voz, imagens e vídeos
description_it    : Signal è un servizio di messaggistica criptata multipiattaforma. Utilizza Internet per inviare messaggi individuali e di gruppo, che possono includere file, note vocali, immagini e video
description_nl    : Signal is een platformonafhankelijke versleutelde berichtendienst. Het gebruikt het internet om één-op-één-berichten en groepsberichten te versturen, die bestanden, spraaknotities, afbeeldingen en video's kunnen bevatten
description_ru    : Signal - это кросс-платформенная служба обмена зашифрованными сообщениями. Он использует Интернет для отправки индивидуальных и групповых сообщений, которые могут включать файлы, голосовые заметки, изображения и видео
audit_schedule    : 
editor            : Signal Foundation,Signal Messenger LLC
keywords          : 
licence           : GPLv3
homepage          : https://signal.org/
package_uuid      : ca6223a0-9de3-483a-bd1e-3cd55e0d4263
valid_from        : 
valid_until       : 
forced_install_on : 
changelog         : 
min_os_version    : 10.0
max_os_version    : 
icon_sha256sum    : 3adb886fd11d1ac878e24c20600a8c65721098a0607e1723638e5719c9805539
signer            : test
signer_fingerprint: b82fc8ef4a4475c0f69ac168176c2bfc58f572eb716c4eadd65e4785c155dd8e
signature_date    : 2026-01-21T23:00:18.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         : lT96/7AxumrFY0k2FFV1UjGg0y6dXsF1KHw9rISzZMZlGcBEWpFucMAG91GqUJ/qR8MIwHR7cT+1s0Eqba4OJ2kpa+u6YAJoTVHZp1UudOhih2f8m6xW4KT4cJpInir0HaDprA76j6fWaOqaoM66eIPrKQ3Qd2I4HY3RwCoLqZqgtoKZVBnRSxlX48inkAkN0cTqR3akMMS8p1I2eu/U8CWmpAFxTIAq0H3qlj61XLy1Ji4+V5fUZTUGUvmKdhTk8g8Oakzx7FEWIl1IwmeBeUDOaUeiZSCux6B1Cf+Zm/OXfFeNyuFwGWSs/0GmVkTNeWd7wwCCdyMGKfCEfuqTAA==

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

app_dir_name = "signal-desktop"
app_user_dir = makepath(user_local_appdata, "Programs", app_dir_name)
app_user_uninstall = makepath(app_user_dir, "Uninstall Signal.exe")
app_user_uninstall_cmd = f'"{app_user_uninstall}" /S'
app_user_updater = makepath(user_local_appdata, "signal-desktop-updater")
app_sys_dir = makepath(programfiles32, app_dir_name)
app_sys_path = makepath(app_sys_dir, "Signal.exe")


def install():
    # Specific app values
    package_version = control.get_software_version()
    bin_zip_string = f"signal-desktop-win-x64-{package_version}.zip"

    killalltasks(control.get_impacted_process_list())

    # Installing the package
    if isdir(app_sys_dir):
        remove_tree(app_sys_dir)

    unzip(bin_zip_string, makepath(programfiles32))
    create_programs_menu_shortcut("Signal", app_sys_path)


def uninstall():

    # Uninstalling the package
    if isdir(app_sys_dir):
        remove_tree(app_sys_dir)
    remove_programs_menu_shortcut("Signal")


def session_setup():
    print("Disabling: auto update check")
    if isdir(app_user_updater):
        remove_tree(app_user_updater)

    print("Uninstalling from user environnement if installed")
    if isfile(app_user_uninstall):
        print("Running " + app_user_uninstall_cmd)
        run(app_user_uninstall_cmd)
    remove_user_programs_menu_shortcut("Signal")

# -*- coding: utf-8 -*-
from setuphelpers import *
from waptutils import create_recursive_zip
import waptlicences
import re

app_dir_name = "signal-desktop"
seven_zip_path = makepath(programfiles, "7-Zip", "7z.exe")

def read_file(filepath):
    with open(filepath, 'r', encoding='utf-8') as file:
        content = file.read()
    return content

def find_version(filename):
    version = re.search('version: .*', read_file(filename)).group(0)
    return version.split(':')[-1].strip()


def make_portable_install(latest_bin):

    archive_filename = latest_bin.replace('.exe', '.zip')
    print("Generate zip file with .exe file")

    if isdir(app_dir_name):
        remove_tree(app_dir_name)
    mkdirs(app_dir_name)

    try:
        # Unzip the exe file
        run(f'"{seven_zip_path}" e {latest_bin} -o{app_dir_name}')

        # Remove useless files extracted
        files_to_delete = ("nsExec.dll", "nsis7z.dll", "nsProcess.dll", "SpiderBanner.dll", "StdUtils.dll", "System.dll", "WinShell.dll")
        for file in files_to_delete:
            remove_file(makepath(app_dir_name, file))

        # Unzip the archive app-64.7z inside the extracted .exe
        app_7zip = makepath(app_dir_name, "app-64.7z")
        run(f'"{seven_zip_path}" x {app_7zip} -o{app_dir_name}\\')
        remove_file(app_7zip)

        # Make the zip file
        create_recursive_zip(archive_filename, app_dir_name, target_root=app_dir_name)

    except:
        error("Unabled to generate the zip file !")

    # Delete the folder
    remove_tree(app_dir_name)

    # Deleting outdated zip file
    for f in glob.glob("*.zip"):
        if f != archive_filename:
            remove_file(f)

    print("The zip file is correctly generated !")


def update_package():
    print("Download/Update package content from upstream binary sources")

    # Declaring local variables
    package_updated = False
    proxies = get_proxies_from_wapt_console()
    if not proxies:
        proxies = get_proxies()
    app_name = control.name

    os_dict_yaml = { 'windows' : 'latest', 'darwin' : 'latest-mac' }
    yaml_download = f"https://updates.signal.org/desktop/{os_dict_yaml[control.target_os]}.yml"
    yaml_file = 'latest.yml'

    print(f"Downloading the yaml file: {yaml_download}")
    wget(yaml_download, yaml_file, proxies=proxies)

    # WAPT for the moment as no yaml parser
    # This part can be improved in the future
    version = find_version(yaml_file)

    latest_bin = f"signal-desktop-win-x64-{version}.exe"
    url_dl = f"https://updates.signal.org/desktop/{latest_bin}"

    print(f"Latest {app_name} version is: {version}")
    print(f"Download URL is: {url_dl}")

    # Downloading latest binaries
    if not isfile(latest_bin):
        print("Downloading: " + latest_bin)
        wget(url_dl, latest_bin, proxies=proxies)
    else:
        print(f"Binary is present: {latest_bin}")

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

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

    make_portable_install(latest_bin)

    # 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()

    # Deleting all binaries
    for f in glob.glob("*.exe"):
        remove_file(f)
    
    remove_file(yaml_file)

    # Validating update-package-sources
    return package_updated

01ca7fe94636e5a08fcb73849d3b5df25d51e2c82f4dd1a08f01798b25899819 : WAPT/certificate.crt
03f0cae6622e5be1ca2d46fa924d396d6c3d0ea4569bf9d24728bc763717e6b1 : WAPT/control
3adb886fd11d1ac878e24c20600a8c65721098a0607e1723638e5719c9805539 : WAPT/icon.png
eb7a30579af1cd1a72121ab37e7b7cf9faab07f28e9827b2e21778e3d83adf07 : luti.json
2393e0d5d737c0950066ddd9ad1479638de64b8e2881d8adf170963f8cc4c8c8 : setup.py
0db20656fa11cd1964a114af5bfbb355648250bdbbdec91d3387f4e1746b37eb : signal-desktop-win-x64-7.86.0.zip
8ecd59b09bed222ae4eeb065654c02a3a84d250561699c5416de63be978324ce : update_package.py