tis-dotnet9 icon

.NET Runtime 9

Paquet d’installation silencieuse pour .NET Runtime 9

9.0.12-14
Dependency
Dependency

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-dotnet9
  • name: .NET Runtime 9
  • version: 9.0.12-14
  • categories: Dependency
  • maintainer: WAPT Team,Tranquil IT,Jimmy PELÉ
  • editor: Microsoft
  • licence: opensource_free,cpe:/a:mit:x11_license,wapt_public
  • locale: all
  • target_os: windows
  • architecture: arm64
  • signature_date:
  • size: 171.29 Mo
  • installed_size: 193.11 Mo
  • homepage : https://github.com/dotnet/runtime

package           : tis-dotnet9
version           : 9.0.12-14
architecture      : arm64
section           : base
priority          : optional
name              : .NET Runtime 9
categories        : Dependency
maintainer        : WAPT Team,Tranquil IT,Jimmy PELÉ
description       : The .NET Desktop Runtime enables you to run existing Windows desktop applications. This release includes the .NET Runtime; you don't need to install it separately
depends           : 
conflicts         : 
maturity          : PREPROD
locale            : all
target_os         : windows
min_wapt_version  : 2.3
sources           : https://github.com/dotnet/runtime
installed_size    : 193107342
impacted_process  : 
description_fr    : Le moteur d'exécution .NET Desktop Runtime vous permet d'exécuter des applications de bureau Windows existantes. Cette version inclut le Runtime .NET ; vous n'avez pas besoin de l'installer séparément
description_pl    : Środowisko uruchomieniowe .NET Desktop Runtime umożliwia uruchamianie istniejących aplikacji pulpitu systemu Windows. Ta wersja zawiera środowisko uruchomieniowe .NET; nie trzeba go instalować osobno
description_de    : Mit der .NET Desktop Runtime können Sie vorhandene Windows-Desktop-Anwendungen ausführen. Diese Version enthält die .NET Runtime; Sie brauchen sie nicht separat zu installieren
description_es    : .NET Desktop Runtime le permite ejecutar las aplicaciones de escritorio de Windows existentes. Esta versión incluye .NET Runtime; no es necesario instalarlo por separado
description_pt    : O .NET Desktop Runtime permite-lhe executar aplicações existentes do ambiente de trabalho do Windows. Esta versão inclui o .NET Runtime; não é necessário instalá-lo separadamente
description_it    : Il .NET Desktop Runtime consente di eseguire le applicazioni desktop di Windows esistenti. Questa versione include il .NET Runtime; non è necessario installarlo separatamente
description_nl    : Met de .NET Desktop Runtime kun je bestaande Windows desktopapplicaties uitvoeren. Deze release bevat de .NET Runtime; je hoeft deze niet apart te installeren
description_ru    : .NET Desktop Runtime позволяет запускать существующие приложения для настольных систем Windows. Данный выпуск включает в себя .NET Runtime; устанавливать его отдельно не требуется
audit_schedule    : 
editor            : Microsoft
keywords          : 
licence           : opensource_free,cpe:/a:mit:x11_license,wapt_public
homepage          : https://github.com/dotnet/runtime
package_uuid      : 16023ffb-5058-475d-88b2-fc64d702d9ff
valid_from        : 
valid_until       : 
forced_install_on : 
changelog         : https://github.com/dotnet/core/tree/main/release-notes/9.0
min_os_version    : 6.1
max_os_version    : 
icon_sha256sum    : 1460db9c3885967269ebbc71d898181ab7d1506f3212bafc2df3acc648d43db0
signer            : test
signer_fingerprint: b82fc8ef4a4475c0f69ac168176c2bfc58f572eb716c4eadd65e4785c155dd8e
signature_date    : 2026-01-28T14:20:43.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         : N1h1WourLMqA2w12c6JAqy9mWIcypjBMDqde3qc5HPUtevDYiF062wfviaNUUuUx2MfSSbMh5BGz8dnXdQ4xbwzEYWVag2gZiVL9zz25prVUI1XUSnhS1ZfowK10ay6enoggmcL7SCGBHpJShCgk+Ip24JjLpXQmRfCcfly0zTow4OHKx0Re0ZphG7Nc0b0W0A+nbgl+i0MryMVQHdwjmJHJb6R4RmC3iocpehcxzm4IcY1v+0ScAbyPxDe3Pze18CDw2KuRqnyAV2ZmPbn3Y2i+kJk0yidjSfgMzZ0n0kOGKkedbaZ1Izq5764tEkKkD/b4GK0QiCs+dN0lK/1oDQ==

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

"""
[
  {
   "key":"{0B5020E1-CF85-4FA5-8DD2-CBCFB93ACEA9}",
   "name":"Microsoft .NET Host - 9.0.0 (x64)",
   "version":"72.0.23369",
   "install_date":"2024-12-13 00:00:00",
   "install_location":"",
   "uninstall_string":"MsiExec.exe /X{0B5020E1-CF85-4FA5-8DD2-CBCFB93ACEA9}",
   "publisher":"Microsoft Corporation",
   "system_component":1,
   "win64":true
  },
  {
   "key":"{2638EC94-B0DB-4B3D-9948-85D13BBA0108}",
   "name":"Microsoft .NET Host FX Resolver - 9.0.0 (x64)",
   "version":"72.0.23369",
   "install_date":"2024-12-13 00:00:00",
   "install_location":"",
   "uninstall_string":"MsiExec.exe /X{2638EC94-B0DB-4B3D-9948-85D13BBA0108}",
   "publisher":"Microsoft Corporation",
   "system_component":1,
   "win64":true
  },
  {
   "key":"{996933AF-600E-4B1B-82EC-64D18AEC3219}",
   "name":"Microsoft .NET Runtime - 9.0.0 (x64)",
   "version":"72.0.23369",
   "install_date":"2024-12-13 00:00:00",
   "install_location":"",
   "uninstall_string":"MsiExec.exe /X{996933AF-600E-4B1B-82EC-64D18AEC3219}",
   "publisher":"Microsoft Corporation",
   "system_component":1,
   "win64":true
  },
  {
   "key":"{06DEC9B9-0A81-4E8C-9BE0-3008E1F4F9B8}",
   "name":"Microsoft .NET Host - 9.0.0 (x86)",
   "version":"72.0.23369",
   "install_date":"2024-12-13 00:00:00",
   "install_location":"",
   "uninstall_string":"MsiExec.exe /X{06DEC9B9-0A81-4E8C-9BE0-3008E1F4F9B8}",
   "publisher":"Microsoft Corporation",
   "system_component":1,
   "win64":false
  },
  {
   "key":"{9A1BB4C9-0E9A-4E16-AF28-578656B5632C}",
   "name":"Microsoft .NET Runtime - 9.0.0 (x86)",
   "version":"72.0.23369",
   "install_date":"2024-12-13 00:00:00",
   "install_location":"",
   "uninstall_string":"MsiExec.exe /X{9A1BB4C9-0E9A-4E16-AF28-578656B5632C}",
   "publisher":"Microsoft Corporation",
   "system_component":1,
   "win64":false
  },
  {
   "key":"{C4263979-BE2D-41F5-AB69-D6EE2D5503BD}",
   "name":"Microsoft .NET Host FX Resolver - 9.0.0 (x86)",
   "version":"72.0.23369",
   "install_date":"2024-12-13 00:00:00",
   "install_location":"",
   "uninstall_string":"MsiExec.exe /X{C4263979-BE2D-41F5-AB69-D6EE2D5503BD}",
   "publisher":"Microsoft Corporation",
   "system_component":1,
   "win64":false
  }
]


"""


def install():
    dotnet_version = control.get_software_version().split(".")[0]

    # Installing the software
    silentflags = "/install /quiet /norestart"

    install_exe_if_needed(
        glob.glob("windowsdesktop-runtime-*x86.exe")[0],
        silentflags=silentflags,
        name=f"Microsoft Windows Desktop Runtime - {dotnet_version}.*(x86)",
        min_version="",
        force=True,  # force option, since the version is not easy to check, and the installer will take care of it.
    )
    
    if iswin64() or iswinarm():
        install_exe_if_needed(
            glob.glob("windowsdesktop-runtime-*x64.exe")[0],
            silentflags=silentflags,
            name=f"Microsoft Windows Desktop Runtime - {dotnet_version}.*(x64)",
            min_version="",
            force=True,  # force option, since the version is not easy to check, and the installer will take care of it.
        )
    if iswinarm():
        install_exe_if_needed(
            glob.glob("windowsdesktop-runtime-*arm64.exe")[0],
            silentflags=silentflags,
            name=f"Microsoft Windows Desktop Runtime - {dotnet_version}.*(arm64)",
            min_version="",
            force=True,  # force option, since the version is not easy to check, and the installer will take care of it.
        )

    # Clear uninstallkey to avoid the no-code audit and uninstall
    uninstallkey.clear()


def audit():
    # Declaring local variables
    audit_result = "OK"
    dotnet_version = control.get_software_version().split(".")[0]
    app_check = installed_softwares(name=f"Microsoft Windows Desktop Runtime - {dotnet_version}.*")
    audit_version = True

    # Auditing software
    if not app_check:
        print("%s is not installed" % control.package.split("-", 1)[-1].replace("-", " ").title())
        audit_result = "ERROR"
    elif audit_version:
        for to_audit in app_check:
            if r"ProgramData\Package Cache" in to_audit["uninstall_string"]:
                if Version(to_audit["version"]) < Version(control.get_software_version()):
                    print(f'{to_audit["name"]} is installed in version: {to_audit["version"]} instead of: {control.get_software_version()}.')
                    audit_result = "WARNING"
                else:
                    print("%s is installed and up-to-date." % to_audit["name"])

    return audit_result


def uninstall():
    # Declaring local variables
    dotnet_version = control.get_software_version().split(".")[0]

    for to_uninstall in installed_softwares(name=f"Microsoft Windows Desktop Runtime - {dotnet_version}.*"):
        if r"ProgramData\Package Cache" in to_uninstall["uninstall_string"]:
            print("Removing: %s (%s)" % (to_uninstall["name"], to_uninstall["version"]))
            killalltasks(ensure_list(control.impacted_process))
            run(uninstall_cmd(to_uninstall["key"]) + " /norestart")
            wait_uninstallkey_absent(to_uninstall["key"])
            if isdir(to_uninstall["install_location"]):
                remove_tree(to_uninstall["install_location"])


def iswinarm():
    return platform.machine() =='ARM64'

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


def update_package():
    # Declaring local variables
    package_updated = False
    proxies = get_proxies()
    if not proxies:
        proxies = get_proxies_from_wapt_console()
    dotnet_version = ".".join(control.get_software_version().split(".")[:2])

    architecture = ensure_list(control.architecture)
    if "arm64" in architecture:
        archs = ["x86", "x64", "arm64"]
    elif "x64" in architecture:
        archs = ["x86", "x64"]
    else:
        archs = ["x86"]
        
    url = "https://dotnet.microsoft.com/en-us/download/dotnet/%s" % dotnet_version

    for arch in archs:
        # Getting latest version from official sources
        print("URL used is: %s" % url)
        for bs_search in bs_find_all(url, "a", "data-bi-dlnm", ".NET Release Table Download", proxies=proxies, timeout=10):
            if "runtime-desktop-" in bs_search.get("href", "") and arch in bs_search.get("href", ""):
                download_url_page = "https://dotnet.microsoft.com" + bs_search["href"]
                version = download_url_page.split("/")[-1].split("-")[2]
                break

        for bs_search in bs_find_all(download_url_page, "a", "onclick", "recordManualDownload()"):
            if version in bs_search.get("href", "") and "windowsdesktop-runtime" in bs_search.get("href", ""):
                download_url = bs_search["href"]
                latest_bin = download_url.split("/")[-1]
                break

        # Downloading latest binaries
        print("Latest %s version is: %s" % (control.name, version))
        print("Download URL is: %s" % download_url)
        if not isfile(latest_bin):
            print("Downloading: %s" % latest_bin)
            wget(download_url, latest_bin, proxies=proxies)

        # Checking version from file
        if get_os_name() == "Windows" and "windows" in control.target_os.lower():
            version_from_file = get_version_from_binary(latest_bin)
            if Version(version_from_file, 3) == Version(version, 3):
                print(f"INFO: Binary file version ({version_from_file}) corresponds to online version ({version})")
            else:
                error(f"ERROR: Binary file version ({version_from_file}) do NOT corresponds to online version ({version})")

    # Deleting outdated binaries
    remove_outdated_binaries(version)

    # Changing version of the package
    if Version(version, 4) > Version(control.get_software_version(), 4):
        print("Software version updated (from: %s to: %s)" % (control.get_software_version(), Version(version)))
        package_updated = True
    else:
        print("Software version up-to-date (%s)" % Version(version))
    control.set_software_version(version)
    control.save_control_to_wapt()

    # Validating or not update-package-sources
    return package_updated

01ca7fe94636e5a08fcb73849d3b5df25d51e2c82f4dd1a08f01798b25899819 : WAPT/certificate.crt
b0fc490913a5204dffce5e95395988301c23eb86644a88b556e02a5d81f0dbd8 : WAPT/control
1460db9c3885967269ebbc71d898181ab7d1506f3212bafc2df3acc648d43db0 : WAPT/icon.png
7f89c9a519955cc7366300f23c8af904ce5f7bbd3e23242234bea513d21974d1 : luti.json
1353b5b7aaa41d75f8733d97280fb0bf5cff984c233401b7f89b731895c2ad66 : setup.py
4948c13878fae61d411f3a4807c649a366c7eff00ec56f81272573f857338ea5 : update_package.py
b61bf4ea5a4ad39b8fa6016969639f29e7409d86bfc7fc76d45e8acaa6f2e7a3 : windowsdesktop-runtime-9.0.12-win-arm64.exe
385bb54fdcbff0f771d994d601c0cf0626adb3ff5ee760f7967e3f261e2f21ef : windowsdesktop-runtime-9.0.12-win-x64.exe
f7c18a2aafafb61390716407c242772899230865e5a8cb66823505f9a221f529 : windowsdesktop-runtime-9.0.12-win-x86.exe