DittoReceiver
Paquet d’installation silencieuse pour DittoReceiver
2.1.1.6-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-dittoreceiver-uwp
- name: DittoReceiver
- version: 2.1.1.6-1
- maintainer: WAPT Team,Tranquil IT,Amel FRADJ
- licence: proprietary_restricted,wapt_private
- target_os: windows
- architecture: x64
- signature_date:
- size: 55.94 Mo
package : tis-dittoreceiver-uwp
version : 2.1.1.6-1
architecture : x64
section : base
priority : optional
name : DittoReceiver
categories :
maintainer : WAPT Team,Tranquil IT,Amel FRADJ
description : Destination for mirrored devices, signalling and alerts
depends :
conflicts :
maturity : PREPROD
locale :
target_os : windows
min_wapt_version : 2.3
sources :
installed_size :
impacted_process :
description_fr : Destination pour les appareils en miroir, la signalisation et les alertes
description_pl : Miejsce docelowe dla urządzeń lustrzanych, sygnalizacja i alerty
description_de : Bestimmung für gespiegelte Geräte, Signalisierung und Warnungen
description_es : Destino para dispositivos duplicados, señalización y alertas
description_pt : Destino para dispositivos espelhados, sinalização e alertas
description_it : Destinazione per i dispositivi in mirroring, segnalazione e avvisi
description_nl : Bestemming voor gespiegelde apparaten, signalering en waarschuwingen
description_ru : Назначение для зеркальных устройств, сигнализации и оповещений
audit_schedule :
editor :
keywords :
licence : proprietary_restricted,wapt_private
homepage :
package_uuid : 9660e029-a2fc-4682-824f-20c5d77793c2
valid_from :
valid_until :
forced_install_on :
changelog :
min_os_version : 10.0.18362
max_os_version :
icon_sha256sum : 88065bbd91e1a95373ef5d447e00e917ee8619de675f5998016260a2e5c43aa6
signer : test
signer_fingerprint: b82fc8ef4a4475c0f69ac168176c2bfc58f572eb716c4eadd65e4785c155dd8e
signature_date : 2026-03-10T16:53:28.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 : q2ZGSGJ21TG1yZbvknQ080J5N11V3TcZVdEu/76aINEs9/J+kL/iWO5+3zMIoL5j9I+OUrBqm8r04UMNgfI7SOBuZQl/3B29ay/J7mUT1NHylELYIml0P0vlMi9drbmFVjCnSM8QeeW81fZ4ej56SxPn9z1ySbpOiQW1LfJXwo60N+N2dZ6WVN8T63V9TAT2NUAj2g7wgWg/02XQpoHJCxNyZ6VjMUm63DC6aLz8qdwRFqoWE7nYYF/RlgtkHwSQdY2IQyz7sVPcy1LKfGeZnHQK35ci4PZOlehob6iGQegmbA/TObCR5Gz53OYbzvpNuFQ/WOYA0Qjww8J0cCYPlA==
# -*- coding: utf-8 -*-
from setuphelpers import *
appx_package_name = "Squirrels.DittoReceiver"
appx_dir = makepath(programfiles, "WindowsAppsInstallers")
def install():
# Declare local variables
bin_path = glob.glob(f"DittoReceiver*.msix")[0]
add_appx_cmd = f'Add-AppxProvisionedPackage -Online -PackagePath "{bin_path}" -SkipLicense'
# Installing the UWP application if needed
appxprovisionedpackage = run_powershell(f'Get-AppXProvisionedPackage -Online | Where-Object DisplayName -Like "{appx_package_name}"')
if appxprovisionedpackage is None:
remove_appx(appx_package_name, False)
appxprovisionedpackage = {"Version": "0"}
elif force:
uninstall()
if Version(appxprovisionedpackage["Version"], 4) < Version(control.get_software_version(), 4):
print(f"Installing: {bin_path.split(os.sep)[-1]} ({control.get_software_version()})")
killalltasks(ensure_list(control.impacted_process))
run_powershell(add_appx_cmd, output_format="text")
else:
print(f'{appxprovisionedpackage["PackageName"]} is already installed and up-to-date.')
def uninstall():
print(f"Removing AppX: {appx_package_name}")
remove_appx(appx_package_name)
def audit():
# Declaring local variables
audit_result = "OK"
audit_version = True
appxprovisionedpackage = run_powershell(f'Get-AppXProvisionedPackage -Online | Where-Object DisplayName -Like "{appx_package_name}"')
# Auditing software
if appxprovisionedpackage is None:
print(f"{appx_package_name} is not installed.")
audit_result = "ERROR"
elif audit_version:
if Version(appxprovisionedpackage.get("Version", "0"), 4) < Version(control.get_software_version(), 4):
print(
f'{appxprovisionedpackage["PackageName"]} is installed in version: {appxprovisionedpackage["Version"]} instead of: {control.get_software_version()}.'
)
audit_result = "WARNING"
else:
print(f'{appxprovisionedpackage["PackageName"]} is installed and up-to-date.')
else:
print(f'{appxprovisionedpackage["PackageName"]} is installed.')
return audit_result
def remove_appx(package, default_user=True):
if running_as_admin() or running_as_system():
if default_user:
run_powershell(
f'Get-AppXProvisionedPackage -Online | Where-Object DisplayName -Like "{package}" | Remove-AppxProvisionedPackage -Online -AllUsers',
output_format="text",
)
run_powershell(
r'Get-AppxPackage -Name "%s" -AllUsers | Where-Object {{ -not ($_.NonRemovable) }} | Remove-AppxPackage -AllUsers' % package,
output_format="text",
)
else:
run_powershell(r'Get-AppxPackage -Name "%s" | Where-Object {{ -not ($_.NonRemovable) }} | Remove-AppxPackage' % package, output_format="text")
# -*- coding: utf-8 -*-
from setuphelpers import *
from setupdevhelpers import *
def update_package():
# Declaring local variables
package_updated = False
proxies = get_proxies_from_wapt_console()
if not proxies:
proxies = get_proxies()
url_base = "https://www.airsquirrels.com/ditto/download"
download_url = "https://airsquirrels.com/ditto/download/receiver/windows/msix"
response = requests.get(url_base,allow_redirects=True, proxies=proxies)
# Extract the correct div using bs_find_all
titles = bs_find_all(response.text, "h5", proxies=proxies)
msix_file = None
for title in titles:
if "Ditto Windows Receiver" in title.get_text():
version = title.next_sibling.next_sibling.text
version = version.split(" ")[-1]
latest_bin = "DittoReceiver_" + version + "_x64.msix"
# Downloading latest binaries
print("Download URL is: %s" % download_url)
if not isfile(latest_bin):
print("Downloading: %s" % latest_bin)
wget(download_url, latest_bin, proxies=proxies)
else:
print("Binary is present: %s" % latest_bin)
# Deleting outdated binaries
for f in glob.glob('*.msix'):
if f != latest_bin:
remove_file(f)
# Mettre à jour le package
control.set_software_version(version)
control.save_control_to_wapt()
return package_updated
464a7acf7b3fd9a2bb7e681624db4e500831ab459eb8cc066a309965319aa201 : DittoReceiver_2.1.1.6_x64.msix
01ca7fe94636e5a08fcb73849d3b5df25d51e2c82f4dd1a08f01798b25899819 : WAPT/certificate.crt
c3342d72939e00e1d5062d4b0b599aa19c4e4e597d383e5cdfdffab1a9275269 : WAPT/control
88065bbd91e1a95373ef5d447e00e917ee8619de675f5998016260a2e5c43aa6 : WAPT/icon.png
456b2e13bedcaa31675e0bf496ff0f1aab9348f990107ce77455f1a1f6f7fd11 : luti.json
260d18aae8cb373a40557192bf8a25dfb89ba71f42369e95e1b73be3a6d99a97 : setup.py
f32ce032e29159a413d841210345fce1f7fea7634faf25a501937237a9c1235e : update_package.py