DittoReceiver
Paquet d’installation silencieuse pour DittoReceiver
2.1.0.12-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.0.12-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.0.12-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 : e252ef3f-cf87-43d6-8469-54b570c8dc38
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-01-05T11:24:45.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 : UIOtcZWfFyGEwhBYAhdi57wyEpaidiNtFZXzSRxg4VnzbML96/oi3LohIdAVeaeB3y5Np5lmXSQtPmK3Gy/tVGA7U41e3bt5onRCqpbVD17byC1mFg3PwfaZkEs1YT70iuVokHMONy9AfNcworw1hrU/SELAx8zVAsZFQMl+DCEVPX7f6hUeMPZLwjPTQXIb+fE+Re01XtS7K0n+urh97wPgWtGfoT6iWgS4JJe65qRM6vPLmG+v0hXcBKx6aiiFLMsYF3Z5qykxrHPnCCqeK41v8x7HnfPMyxJo+qcQd3Yg6McSpSPky+tNk2uLTdzbScPBhWfasSchMjhEMXgv7w==
# -*- 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
1764b876167d7562d0c5b4ef6d3b7a0f8eef6d632d58589f0457e3596bb2f68a : DittoReceiver_2.1.0.12_x64.msix
01ca7fe94636e5a08fcb73849d3b5df25d51e2c82f4dd1a08f01798b25899819 : WAPT/certificate.crt
f39d957b2771742419048ecab8ee73c97b665bb0ed38d9d11290f9978ec2cc4c : WAPT/control
88065bbd91e1a95373ef5d447e00e917ee8619de675f5998016260a2e5c43aa6 : WAPT/icon.png
7e39f9dfb02355befee44b21c88739d44e62c36b52bb04768908ecf6d910130e : luti.json
260d18aae8cb373a40557192bf8a25dfb89ba71f42369e95e1b73be3a6d99a97 : setup.py
f32ce032e29159a413d841210345fce1f7fea7634faf25a501937237a9c1235e : update_package.py