tis-rsat icon

RSAT

Paquet d’installation silencieuse pour RSAT

2.0-6

Les paquets PREPROD sont des paquets construits via LUTI. Ils restent généralement 5 jours en PREPROD, après quoi un scan VirusTotal est effectué.
Si le paquet réussit ce dernier contrôle, il est promu en PROD et publié sur le store.

package           : tis-rsat
version           : 2.0-6
architecture      : x86
section           : base
priority          : optional
name              : RSAT
categories        : Utilities,System and network
maintainer        : WAPT Team,Tranquil IT,Jimmy PELÉ
description       : The Remote Server Administration Tools (RSAT) is a set of remote administration tools that enable efficient management of Windows servers from a workstation
depends           : 
conflicts         : 
maturity          : PREPROD
locale            : all
target_os         : windows
min_wapt_version  : 2.3
sources           : MVLSC
installed_size    : 
impacted_process  : 
description_fr    : Les Outils d'administration de serveur distant (RSAT) est un ensemble d'outils d'administration à distance permettant de gérer les serveurs Windows à partir d'un poste de travail
description_pl    : Remote Server Administration Tools (RSAT) to zestaw narzędzi do zdalnej administracji, które umożliwiają wydajne zarządzanie serwerami Windows ze stacji roboczej
description_de    : Die Remote Server Administration Tools (RSAT) sind eine Reihe von Remote-Verwaltungstools, die eine effiziente Verwaltung von Windows-Servern von einer Workstation aus ermöglichen
description_es    : Las Herramientas de administración remota de servidores (RSAT) son un conjunto de herramientas de administración remota que permiten una gestión eficaz de los servidores Windows desde una estación de trabajo
description_pt    : As Ferramentas de Administração Remota do Servidor (RSAT) são um conjunto de ferramentas de administração remota que permitem a gestão eficiente de servidores Windows a partir de uma estação de trabalho
description_it    : Remote Server Administration Tools (RSAT) è un insieme di strumenti di amministrazione remota che consentono di gestire in modo efficiente i server Windows da una stazione di lavoro
description_nl    : De Remote Server Administration Tools (RSAT) is een set hulpprogramma's voor beheer op afstand waarmee Windows-servers efficiënt kunnen worden beheerd vanaf een werkstation
description_ru    : Remote Server Administration Tools (RSAT) - это набор инструментов удаленного администрирования, которые позволяют эффективно управлять серверами Windows с рабочей станции
audit_schedule    : 
editor            : Microsoft
keywords          : windows,server,rsat,remote,administration,tools
licence           : wapt_public
homepage          : https://learn.microsoft.com/windows-server/remote/remote-server-administration-tools
package_uuid      : 7ab84de6-56f6-4e74-8507-434879e7680a
valid_from        : 
valid_until       : 
forced_install_on : 
changelog         : 
min_os_version    : 10.0.19041
max_os_version    : 10.0.22000
icon_sha256sum    : a119cfff0858066f225da3f24ef2c784457395f5222f9249c110f675ca116678
signer            : test
signer_fingerprint: b82fc8ef4a4475c0f69ac168176c2bfc58f572eb716c4eadd65e4785c155dd8e
signature_date    : 2025-09-30T09:38:03.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         : Z6axMFFRZthyDyONAuLGrJOmJIzS2E73OsZefXHWxB9HQEAGaP1GQT8nxFzvKU+eW0c0qdmYHayWNCb0+rI+zP3mAC5vE1Sklew8FwY3LQc58gAWICDoehRy467ILoCdZRhlUTxkeBRX+/+V/eUuHI6bQXilGsGbYBgZ5pPGUpBEb3BGYsTzZ5v4BGGL6m4r2CIInXBLublPrCVR7NVrm+PAGOGooBIrGjbAizYHmyWF4LHG8qK2uMX+ahKuL3+BZc6cBhyszxoNeB2C/l0l8q6RyYw/kkDq7AvYX0F2KzLv6hfFB8ScqpKU1/bAEaIYB+bPfFqzPrZ7YbsDmQ1PLw==

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

rsat_capabilities = [
    "Rsat.ActiveDirectory.DS-LDS.Tools~~~~0.0.1.0",
    "Rsat.BitLocker.Recovery.Tools~~~~0.0.1.0",
    "Rsat.CertificateServices.Tools~~~~0.0.1.0",
    "Rsat.DHCP.Tools~~~~0.0.1.0",
    "Rsat.Dns.Tools~~~~0.0.1.0",
    "Rsat.FailoverCluster.Management.Tools~~~~0.0.1.0",
    "Rsat.FileServices.Tools~~~~0.0.1.0",
    "Rsat.GroupPolicy.Management.Tools~~~~0.0.1.0",
    "Rsat.IPAM.Client.Tools~~~~0.0.1.0",
    "Rsat.LLDP.Tools~~~~0.0.1.0",
    "Rsat.NetworkController.Tools~~~~0.0.1.0",
    "Rsat.NetworkLoadBalancing.Tools~~~~0.0.1.0",
    "Rsat.RemoteAccess.Management.Tools~~~~0.0.1.0",
    "Rsat.RemoteDesktop.Services.Tools~~~~0.0.1.0",
    "Rsat.ServerManager.Tools~~~~0.0.1.0",
    "Rsat.Shielded.VM.Tools~~~~0.0.1.0",
    "Rsat.StorageMigrationService.Management.Tools~~~~0.0.1.0",
    "Rsat.StorageReplica.Tools~~~~0.0.1.0",
    "Rsat.SystemInsights.Management.Tools~~~~0.0.1.0",
    "Rsat.VolumeActivation.Tools~~~~0.0.1.0",
    "Rsat.WSUS.Tools~~~~0.0.1.0",
]
# rsat_capabilities_to_install = rsat_capabilities
rsat_capabilities_to_install = [
    "Rsat.ActiveDirectory.DS-LDS.Tools~~~~0.0.1.0",
    "Rsat.BitLocker.Recovery.Tools~~~~0.0.1.0",
    "Rsat.Dns.Tools~~~~0.0.1.0",
    "Rsat.GroupPolicy.Management.Tools~~~~0.0.1.0",
    "Rsat.LLDP.Tools~~~~0.0.1.0",
    "Rsat.RemoteAccess.Management.Tools~~~~0.0.1.0",
]


def install():
    # Declaring local variables
    try:
        rsat_binaries_zip = glob.glob("rsat_*.zip")[0]
        unzip(rsat_binaries_zip, ".")
        rsat_binaries_dir = rsat_binaries_zip.split(".")[0]
    except:
        rsat_binaries_dir = glob.glob("rsat_*")[0]
    rsat_source_path = makepath(os.getcwd(), rsat_binaries_dir)
    app_error = False

    # Installing the package
    with EnsureWUAUServRunning():
        for capability in rsat_capabilities_to_install:
            print("Installing: %s" % capability)
            try:
                run_powershell('Add-WindowsCapability -Online -Name "%s" -LimitAccess -Source "%s"' % (capability, rsat_source_path))
            except:
                print("Installation failed for: %s" % capability)
                app_error = True

    if app_error:
        error("RSAT capabilities to install do not succeed completely. You may need to restart the computer and try again")


def uninstall():
    # Declaring local variables
    app_error = False

    # Uninstalling the package
    print("Uninstalling all RSAT features")
    with EnsureWUAUServRunning():
        for capability in rsat_capabilities:
            print("Uninstalling: %s" % capability)
            try:
                run_powershell('Remove-WindowsCapability -Online -Name "%s"' % capability)
            except:
                print("Uninstallation failed on: %s" % capability)
                app_error = True

    if app_error and not params.get("running_as_luti"):
        error("RSAT capabilities uninstallation do not succeed completely. You may need to restart the computer and try again")


def audit():
    # Manually check in PowerShell: Get-WindowsCapability -online | ? Name -like Rsat* | FT
    print("Showing installed RSAT features:")
    pprint.pprint(run_powershell("Get-WindowsCapability -Online | Where Name -like Rsat* | Where State -Like Installed | Select Name,RestartNeeded"))
    print("Showing NOT installed RSAT features:")
    pprint.pprint(
        run_powershell("Get-WindowsCapability -Online | Where Name -like Rsat* | Where State -NotLike Installed | Select Name,RestartNeeded")
    )
    return "OK"

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


def update_package():
    # Declaring local variables
    capabilities_list = [
        "ActiveDirectory",
        "BitLocker",
        "CertificateServices",
        "DHCP",
        "DNS",
        "FailoverCluster",
        "FileServices",
        "GroupPolicy",
        "IPAM",
        "LLDP",
        "NetworkController",
        "NetworkLoadBalancing",
        "RemoteAccess",
        "RemoteDesktop",
        "ServerManager",
        "Shielded",
        "StorageMigrationService",
        "StorageReplica",
        "SystemInsights",
        "VolumeActivation",
        "WSUS",
    ]
    mandatory_files = ["FoDMetadata_", "Conditions", "Neutral"]
    mandatory_capabilities_files = ["~~"]
    # default_lang_list = ["fr-fr", "en-us"]

    # Interacting differently with Luti
    if params.get("running_as_luti"):
        download_url = "http://srvtemplates.ad.tranquil.it/binary_cache/rsat_windows10v2004_x86-multilang.zip"
        latest_bin = "rsat_windows10v2004_x86-multilang.zip"
        sha256 = "6ce3745be4962196c3b2ab3671342cc09c06a75fd7b2a8a737588d70c75c4db3"
        wget(download_url, latest_bin, sha256=sha256)
        return "OK"

    # Asking for iso path
    iso_path = waptguihelper.filename_dialog(
        "Please provide the desired FoD iso file for the requested OS Version - %s" % control.package,
        "",
        "FoD_LoF.ISO",
        "ISO Files|*.ISO",
    )  # os.getcwd()
    # iso_path = r"C:\temp\SW_DVD9_Win_11_21H2_x64_MultiLang_LangPackAll_LIP_LoF_X22-62148.ISO"

    # Asking for langs
    lang_dict = waptguihelper.grid_dialog(
        "You may add or retire langs - Plese respect the shown format", json.dumps([{"lang": "en-us"}, {"lang": "fr-fr"}])
    )  # , waptguihelper.GRT_SELECTED
    lang_list = []
    for l in json.loads(lang_dict):
        lang_list.append(l["lang"])

    if iso_path is None:
        error("Please provide an ISO")

    # Extract with conditions
    conditionnal_include_list = mandatory_capabilities_files + lang_list
    rsat_binaries_zip = "rsat_%s_%s_%s.zip" % (basedir.split(os.path.sep)[-2], basedir.split(os.path.sep)[-1], "_".join(i for i in lang_list))
    rsat_binaries_dir = rsat_binaries_zip.split(".")[0]

    for d in glob.glob("*rsat_*"):
        if isdir(d):
            remove_tree(d)

    for f in glob.glob("*rsat_*.zip"):
        if isfile(f):
            remove_tree(f)

    if Version(control.min_os_version) >= Version(WindowsVersions.Windows11):
        for f in mandatory_files:
            unzip_with_7zip(iso_path, rsat_binaries_dir, "**/*%s*.cab".lower() % f, recursive=True)

        for f in lang_list:
            unzip_with_7zip(iso_path, rsat_binaries_dir, "LanguagesAndOptionalFeatures/**/*%s*.cab".lower() % f, recursive=True)

        for fc in conditionnal_include_list:
            for cap in capabilities_list:
                unzip_with_7zip(iso_path, rsat_binaries_dir, "**/*%s*%s*.cab".lower() % (cap, fc), recursive=True)
    else:
        for f in mandatory_files:
            unzip_with_7zip(iso_path, rsat_binaries_dir, "*%s*.cab".lower() % f, recursive=True)

        for f in lang_list:
            unzip_with_7zip(iso_path, rsat_binaries_dir, "**/*%s*.cab".lower() % f, recursive=True)

        for fc in conditionnal_include_list:
            for cap in capabilities_list:
                unzip_with_7zip(iso_path, rsat_binaries_dir, "*%s*%s*.cab".lower() % (cap, fc), recursive=True)

    print("You may want to create manually a zip called: %s" % rsat_binaries_zip)

01ca7fe94636e5a08fcb73849d3b5df25d51e2c82f4dd1a08f01798b25899819 : WAPT/certificate.crt
4eccc294694d4c5849ccab34aff72be22d28e6b65def6506d57d5a96678e54ba : WAPT/changelog.txt
318a9ac669c329ba5f23c288450bc27726de2adb375a9eaa7f9c448c12bb792e : WAPT/control
a119cfff0858066f225da3f24ef2c784457395f5222f9249c110f675ca116678 : WAPT/icon.png
012c1003385389cebd738c896cd144f636b7848622f9a1507dbc804eb2719912 : luti.json
6ce3745be4962196c3b2ab3671342cc09c06a75fd7b2a8a737588d70c75c4db3 : rsat_windows10v2004_x86-multilang.zip
8fcf1569898e6e3f70d01a87fde5c581ce9edfe571c9b54c556f368d25a1a0e2 : setup.py
900a3f43c7f9ce61d51bcfe67d20917e8da1388876c17492d1997db7998310c5 : update_package.py

2.0-3
max_os_version    : 10.0.22000

2.0-2
First release for min_wapt_version 2.2