tis-wave-phone icon

Wave

Silent install package for Wave

1.35.6-1
Messaging
Messaging

  • package: tis-wave-phone
  • name: Wave
  • version: 1.35.6-1
  • categories: Messaging
  • maintainer: WAPT Team,Tranquil IT
  • editor: Grandstream Networks, Inc.
  • licence: Proprietary
  • locale: all
  • target_os: windows
  • impacted_process: Wave
  • architecture: x64
  • signature_date:
  • size: 127.18 Mo
  • homepage : https://www.grandstream.com/products/ucm-series-ip-pbxs/wave-app

package           : tis-wave-phone
version           : 1.35.6-1
architecture      : x64
section           : base
priority          : optional
name              : Wave
categories        : Messaging
maintainer        : WAPT Team,Tranquil IT
description       : Grandstream Wave is a softphone and unified communications client for Grandstream UCM IP PBX systems, offering calls, video meetings and chat.
depends           : 
conflicts         : 
maturity          : PROD
locale            : all
target_os         : windows
min_wapt_version  : 2.3
sources           : https://fw.gdms.cloud/wave/download
installed_size    : 
impacted_process  : Wave
description_fr    : Grandstream Wave est un softphone et client de communications unifiées pour les IPBX Grandstream UCM, offrant appels, visioconférences et messagerie.
description_pl    : Grandstream Wave to softphone i klient komunikacji zunifikowanej dla central IP Grandstream UCM, oferujący połączenia, wideokonferencje i czat.
description_de    : Grandstream Wave ist ein Softphone und Unified-Communications-Client für Grandstream UCM IP-Telefonanlagen, der Anrufe, Videokonferenzen und Chat bietet.
description_es    : Grandstream Wave es un softphone y cliente de comunicaciones unificadas para las centralitas IP Grandstream UCM, que ofrece llamadas, videoconferencias y chat.
description_pt    : Grandstream Wave é um softphone e cliente de comunicações unificadas para as centrais IP Grandstream UCM, que oferece chamadas, videoconferências e chat.
description_it    : Grandstream Wave è un softphone e client di comunicazioni unificate per i centralini IP Grandstream UCM, che offre chiamate, videoconferenze e chat.
description_nl    : Grandstream Wave is een softphone en unified communications-client voor Grandstream UCM IP-telefooncentrales, met gesprekken, videovergaderingen en chat.
description_ru    : Grandstream Wave представляет собой софтфон и клиент унифицированных коммуникаций для IP-АТС Grandstream UCM, обеспечивающий звонки, видеоконференции и чат.
audit_schedule    : 
editor            : Grandstream Networks, Inc.
keywords          : grandstream,wave,softphone,sip,voip,ucm,telephony,video,conference
licence           : Proprietary
homepage          : https://www.grandstream.com/products/ucm-series-ip-pbxs/wave-app
package_uuid      : ee5e2703-1344-40b2-b655-5ff7023fe923
valid_from        : 
valid_until       : 
forced_install_on : 
changelog         : https://www.grandstream.com/support/firmware/wave-releases
min_os_version    : 
max_os_version    : 
icon_sha256sum    : 5b1da41600bbc7d42d2d15e47c94bfdcc774de452349a093845622daec5aef29
signer            : Tranquil IT
signer_fingerprint: 8c5127a75392be9cc9afd0dbae1222a673072c308c14d88ab246e23832e8c6bb
signature_date    : 2026-09-29T13:12:56.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         : W9ILSHRwvzK6Pv5bBD0RvTHs6eV3B2ntrEhaSE/i3msXHGpLAP4bFRJwkHi2EcmokY8HHw3gaAVroTNsuvCzwp68dKgm65WG/nC2rH/yLv6sVMfmQg1hi63I6BytWVFOmXEKZC8mc5JNU1VloZxCeKlMbS7H9KOXf63qMchtg/hnhpEsbNXL9I0XXXlSdypmFyAvlWR0FGRneLBYMAw4tx7IvYnYDuSdHuvHCjKmZ/42i4q28uQZnC8Y1GFuTYbD4yhYAxWug11YNE0C6WAjFaqmprshV+OxupPRlufZfIANhuYrg3NQlij+pHyVv7MGtGbNOSXhS0DpjKytFmq41A==

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

# https://docai.grandstream.com/knowledge-base/how-to-deploy-wave-desktop-clients-in-batches-user-guide/
init_cfg = """\
ServerAddress=https://monentreprise.fr
language=fr-FR
timeFormat=24
dateFormat=MM/DD/YYYY
isLaunchOnSystemStartup=0
enableUpgrade=0
"""


def install():
    bin_name = glob.glob("Wave-*-win-x64.msi")[0]

    install_msi_if_needed(
        bin_name,
        name="Wave",
        min_version=control.get_software_version(),
        killbefore=ensure_list(control.impacted_process),
    )


def session_setup():
    init_cfg_path = makepath(user_appdata, "Wave", "init.cfg")
    ensure_dir(init_cfg_path)

    print(f"Writing: {init_cfg_path}")
    with open(init_cfg_path, "w", encoding="utf-8") as f:
        f.write(init_cfg)

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


def get_manifest_version(manifest_url, proxies):
    manifest = wgets(manifest_url, proxies=proxies)
    if isinstance(manifest, bytes):
        manifest = manifest.decode("utf-8")
    for line in manifest.splitlines():
        if line.startswith("version:"):
            return line.split(":", 1)[1].strip()


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

    base_url = "https://fw.gdms.cloud/wave/desktop/download/ucm"
    update_dict = {
        "windows-x64": ("win64", "latest.yml", "-win-x64.msi"),
        "darwin-x64": ("mac", "latest-mac.yml", "-mac-x64.dmg"),
        "darwin-arm": ("macarm64", "latest-mac.yml", "-mac-arm64.dmg"),
    }
    os_type = control.target_os + "-" + ensure_list(control.architecture)[0]
    feed_dir, manifest_name, bin_suffix = update_dict[os_type]

    current_minor = int(control.get_software_version().split(".")[1])
    for minor in range(current_minor, current_minor + 10):
        url = f"{base_url}/1.0.{minor}.x/{feed_dir}"
        if requests.head(f"{url}/{manifest_name}", proxies=proxies).ok:
            print(f"Found branch: 1.0.{minor}.x")
            branch_url = url

    version = get_manifest_version(f"{branch_url}/{manifest_name}", proxies)
    latest_bin = f"Wave-{version}{bin_suffix}"
    download_url = f"{branch_url}/{latest_bin}"

    # Downloading latest binaries
    print(f"Latest {app_name} version is: {version}")
    print(f"Download URL is: {download_url}")
    if not isfile(latest_bin):
        print(f"Downloading: {latest_bin}")
        wget(download_url, latest_bin, proxies=proxies)
    else:
        print(f"Binary is present: {latest_bin}")

    expected_issuer = "Grandstream Networks, Inc."
    sign_name = waptlicences.check_msi_signature(latest_bin)[0]
    if sign_name != expected_issuer:
        error(f"Bad issuer {sign_name} != {expected_issuer}")

    # Deleting outdated binaries
    for f in glob.glob(f"*.{latest_bin.rsplit('.', 1)[-1]}"):
        if f != latest_bin:
            remove_file(f)

    # 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(version)})")
        package_updated = True
    else:
        print(f"Software version up-to-date ({Version(version)})")
    control.set_software_version(version)
    control.save_control_to_wapt()

    return package_updated

38d056ab130f7bf7c481c12636a4e9959de36561d3dfcbe54c6e3571bc0c1dc3 : WAPT/certificate.crt
c1d5d94c9f2f45032773857f82974d388fbb8304194c79a60fabbabc4ffafe21 : WAPT/control
5b1da41600bbc7d42d2d15e47c94bfdcc774de452349a093845622daec5aef29 : WAPT/icon.png
f68844ee99078c56f87a29d45a350145af74adf7d970701a31a62d3848c0ca60 : Wave-1.35.6-win-x64.msi
21ebcbd42021b269b197d2ac7440c8aa9fb7748e08b5a93bf5bc2da190ec6e72 : luti.json
3110e151af0880995f4349cad029bf27e57fb4a0805379e0a32b4e5aef1209ac : setup.py
d687592513d6bfc2e810b2e2a45267f968d12668f2168019629e5b4a44c6f64f : update_package.py