Teams-Paket und Funktion „Meeting-Erlebnis“

Fragen zu WAPT-Paketen / Anfragen und Hilfe bezüglich WAPT-Paketen.
Forumregeln
Community-Forumregeln
* Englischer Support auf www.reddit.com/r/wapt
* Französischer Community-Support ist in diesem Forum verfügbar.
* Bitte kennzeichnen Sie gelöste Themen mit [GELÖST].
* Bitte bearbeiten Sie keine Themen, die mit [GELÖST] markiert sind. Erstellen Sie stattdessen ein neues Thema und verweisen Sie auf das alte.
* Geben Sie die installierte WAPT-Version, die vollständige Versionsnummer und die Build-Nummer (2.2.1.11957 / 2.2.2.12337 / usw.) sowie die Enterprise-/Discovery-Edition an.
* Versionen 1.8.2 und älter werden nicht mehr unterstützt. Fragen zu Version 1.8.2 werden nur beantwortet, wenn sie sich auf ein Upgrade auf eine unterstützte Version (2.1, 2.2 usw.) beziehen.
* Geben Sie das Server-Betriebssystem (Linux/Windows) und die Version (Debian Buster/Bullseye – CentOS 7 – Windows Server 2012/2016/2019) an.
* Geben Sie gegebenenfalls das Betriebssystem des Administrations-/Paketerstellungsrechners und des Rechners mit dem problematischen Agenten an (Windows 7/10/11/Debian 11/etc.).
* Vermeiden Sie es, mehrere Fragen in einem Thema zu stellen, da diese sonst möglicherweise ignoriert werden. Falls mehrere Themen relevant sind, erstellen Sie bitte separate Themen, vorzugsweise nacheinander und nicht gleichzeitig (d. h. vermeiden Sie Spam im Forum).
* Fügen Sie Code-Snippets, Screenshots und andere Bilder direkt in Ihren Beitrag ein. Links zu Pastebin, Bitly und anderen Drittanbieterseiten werden systematisch entfernt.
* Wie in jedem Community-Forum erfolgt die Unterstützung freiwillig durch die Mitglieder. Für kommerziellen Support kontaktieren Sie bitte den Vertrieb von Tranquil IT unter +44 2 40 97 57 55.
pierre.baridon
Nachrichten: 12
Anmeldung: 14. November 2020 - 10:55 Uhr
Standort: Clermont-Ferrand

14. November 2020 - 11:05 Uhr

Hallo zusammen,

Unsere Nutzer haben uns schon seit einiger Zeit nach der Teams-Funktion "Meeting-Erlebnis aktivieren / Zusammen-Modus" gefragt, die seit diesem Sommer / Anfang September verfügbar ist.
Togethermode.png
Togethermode.png (53,35 KB) 11881 Mal angesehen
Diese Funktion war jedoch (mit der gleichen Clientversion) bei eigenständigen Installationen verfügbar, nicht aber bei Installationen über das Teams-Paket (das zusammen mit dem WAPT-Paket für alle Benutzer auf der Workstation in einer festen Version bereitgestellt wurde).
Nach einiger Recherche wurde mir klar, dass diese Funktion in VDI-Umgebungen nicht verfügbar ist.
Und die Tatsache, dass die VDI-Umgebung bei der Paketinstallation simuliert wird, blockiert diese Funktionalität effektiv.

Um das zu umgehen, habe ich das Skript so angepasst, dass die „VDI“-Registry-Einträge nach der MSI-Installation gelöscht werden. Und dann, wie von Zauberhand, erscheint die lang ersehnte Funktionalität, sobald der Teams-Cache geleert ist.

Glauben Sie, dass das Löschen der "VDI"-Registry-Einträge nach der Installation des MSI-Pakets Auswirkungen haben könnte?

Aufrichtig,

Felsen
- Installierte WAPT-Version (2.1.0 Enterprise)
- Server-Betriebssystem: Debian
- Betriebssystem des Administrations-/Paketerstellungsrechners: Windows 10
Benutzeravatar
Gaetan
Nachrichten: 169
Anmeldung: 8. August 2019 - 10:16 Uhr
Ort: Toulouse

16. November 2020 - 09:56 Uhr

Hallo,
vielen Dank für das Feedback. Ich hatte dasselbe vor.

Könnten Sie mir bitte Ihr Skript zur Verfügung stellen? Ich könnte es in einer Testumgebung mit 30 Rechnern prüfen und sehen, ob es Nebenwirkungen gibt.
Danke.
Yoann
Nachrichten: 51
Anmeldung: 24. Juli 2019 - 09:39 Uhr

17. November 2020 - 9:45 Uhr

Hallo,

natürlich hat das Auswirkungen.

Die Registrierungsschlüssel werden hinzugefügt, um eine VDI-Umgebung zu simulieren und die Installation mit dem Argument ALLUSER=1 (ohne das „S“) zu ermöglichen.
Dadurch wird Microsoft Teams im C:\Program Files (x86)\Microsoft\Teams und nicht im %APPDATA%-Verzeichnis jedes Benutzers installiert.

Ich weiß nicht, welche Folgen das Löschen der Registrierungsschlüssel nach der Installation haben könnte.

Viele Grüße.
WAPT Community 1.8
Benutzeravatar
Gaetan
Nachrichten: 169
Anmeldung: 8. August 2019 - 10:16 Uhr
Ort: Toulouse

17. November 2020 - 10:20 Uhr

Nach der Installation sollte es keine Probleme geben.
Für Updates müssen Sie diese lediglich neu installieren bzw. deinstallieren.
pierre.baridon
Nachrichten: 12
Anmeldung: 14. November 2020 - 10:55 Uhr
Standort: Clermont-Ferrand

17. November 2020 – 22:40 Uhr

Gaetan schrieb: 16. Nov. 2020 - 9:56 Uhr Hallo,
danke für das Feedback. Ich hatte dasselbe vor.

Könntest du mir bitte dein Skript zur Verfügung stellen? Ich könnte es in einer Testumgebung mit 30 Rechnern prüfen und sehen, ob es Nebenwirkungen gibt.
Danke.
Guten Morgen,
Hier ist der Code für das angepasste Paket (verwendet mit Version 1.3.0.28779 des Teams-Installationsprogramms):
2 Änderungen:
- Löschen der VDI-Registrierungsschlüssel nach der Installation
- Bereinigen des Benutzerprofils bei der Sitzungseinrichtung

Es wird derzeit auf etwa fünfzig Rechnern getestet. Falls jemand eine Möglichkeit findet, die Einstellung so zu ändern, dass das gesamte Benutzerprofil nicht gelöscht wird….

Code: Alle auswählen

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

#{731F6BAA-A986-45A4-8936-7C3AAAAA760B}      Teams Machine-Wide Installer        1.3.0.12058         MsiExec.exe /I{731F6BAA-A986-45A4-8936-7C3AAAAA760B}

uninstallkey = []

# Installation procedure: https://docs.microsoft.com/fr-fr/microsoftteams/teams-for-vdi#install-or-update-the-teams-desktop-app-on-vdi

# Defining variables
bin_name_string = 'Teams_windows_%s_x64.msi'
bin_name_temp = 'Teams_windows_x64.msi'
url_dl = "https://teams.microsoft.com/downloads/desktopurl?env=production&plat=windows&arch=x64&managedInstaller=true&download=true"
silent_args = 'OPTIONS="noAutoStart=true" ALLUSER=1' #OPTIONS="noAutoStart=true" ALLUSER=1 ALLUSERS=1
#silent_args = 'ALLUSER=1' #OPTIONS="noAutoStart=true" ALLUSER=1 ALLUSERS=1
app_name_short = 'Teams'
app_dir = makepath(programfiles32,'Microsoft','Teams')
app_path = makepath(app_dir, 'current','Teams.exe')
#sys_json_setup = makepath(app_dir,'setup.json')
#json_setup_content =  json.loads('{"noAutoStart":true,"--exeName":"Teams.exe"}')


def install():
    # Initializing variables
    package_version = control.version.split('-')[0]
    bin_name = bin_name_string % package_version
    app_name = control.name

    # Uninstalling older versions if found
    for uninstall in installed_softwares(name=app_name_short):
        if Version(uninstall['version']) < Version(package_version):
            print('Older %s version found (%s)' % (app_name,uninstall['version']))
            print('Removing: %s (%s)' % (uninstall['name'],uninstall['version']))
            run(uninstall_cmd(uninstall['key']))
            time.sleep(15)

    """ # Force uninstalling to make sure that we are using system-wide installation
    for uninstall in installed_softwares(name=app_name_short):
        print('Removing: %s' % uninstall['name'])
        run(uninstall_cmd(uninstall['key']))
        time.sleep(5) """

    # Adding fake WVD/VDI RegKey
    # Un/comment if needed
    registry_set(HKEY_LOCAL_MACHINE,r'SOFTWARE\VMware, Inc.\VMware VDM\Agent','','')
    registry_set(HKEY_LOCAL_MACHINE,r'SOFTWARE\Citrix\PortICA','','')
    registry_set(HKEY_LOCAL_MACHINE,r'SOFTWARE\Microsoft\Teams','IsWVDEnvironment',1,type=REG_DWORD)

    # Installing the package system wide
    print('Installing: %s' % bin_name)
    install_msi_if_needed(bin_name,
        properties=silent_args,
        min_version=package_version,
        accept_returncodes=[0,3010,1605,1614,1641],
        timeout=900)

    # Disabling AutoStart
    if iswin64():
        registry_delete(HKEY_LOCAL_MACHINE,r'SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Run','Teams')
    registry_delete(HKEY_LOCAL_MACHINE,r'SOFTWARE\Microsoft\Windows\CurrentVersion\Run','Teams')

    # Removing shortcuts
    remove_desktop_shortcut(app_name)

    # Adding Firewall Rules for Teams
    run('netsh advfirewall firewall add rule name="%s" dir=in action=allow program="%s" enable=yes protocol=TCP profile=domain' % (app_name,app_path))
    run('netsh advfirewall firewall add rule name="%s" dir=in action=allow program="%s" enable=yes protocol=TCP profile=private' % (app_name,app_path))
    run('netsh advfirewall firewall add rule name="%s" dir=in action=allow program="%s" enable=yes protocol=UDP profile=domain' % (app_name,app_path))
    run('netsh advfirewall firewall add rule name="%s" dir=in action=allow program="%s" enable=yes protocol=UDP profile=private' % (app_name,app_path))

    # clean VDI register key (modif PB)
    if reg_value_exists(HKEY_LOCAL_MACHINE,r'SOFTWARE\Microsoft\Teams','IsWVDEnvironment'):
        registry_delete(HKEY_LOCAL_MACHINE,r'SOFTWARE\Microsoft\Teams','IsWVDEnvironment')

    if reg_key_exists(HKEY_LOCAL_MACHINE,r'SOFTWARE\VMware, Inc.'):
        registry_deletekey(HKEY_LOCAL_MACHINE,r'SOFTWARE\VMware, Inc.\VMware VDM\Agent','',force=False)
        registry_deletekey(HKEY_LOCAL_MACHINE,r'SOFTWARE\VMware, Inc.\VMware VDM','',force=False)
        registry_deletekey(HKEY_LOCAL_MACHINE,r'SOFTWARE\VMware, Inc.','',force=False)

    if reg_key_exists(HKEY_LOCAL_MACHINE,r'SOFTWARE\Citrix\PortICA'):
        registry_deletekey(HKEY_LOCAL_MACHINE,r'SOFTWARE\Citrix\PortICA','',force=False)



def uninstall():
    # Initializing variables
    processes_to_kill = control.impacted_process.split(',')

    # Cleaning fake WVD/VDI RegKey properly
    # Un/comment if needed
    if reg_value_exists(HKEY_LOCAL_MACHINE,r'SOFTWARE\Microsoft\Teams','IsWVDEnvironment'):
        registry_delete(HKEY_LOCAL_MACHINE,r'SOFTWARE\Microsoft\Teams','IsWVDEnvironment')
    if reg_key_exists(HKEY_LOCAL_MACHINE,r'SOFTWARE\VMware, Inc.'):
        registry_deletekey(HKEY_LOCAL_MACHINE,r'SOFTWARE\VMware, Inc.\VMware VDM\Agent','',force=False)
        registry_deletekey(HKEY_LOCAL_MACHINE,r'SOFTWARE\VMware, Inc.\VMware VDM','',force=False)
        registry_deletekey(HKEY_LOCAL_MACHINE,r'SOFTWARE\VMware, Inc.','',force=False)
    if reg_key_exists(HKEY_LOCAL_MACHINE,r'SOFTWARE\Citrix\PortICA'):
        registry_deletekey(HKEY_LOCAL_MACHINE,r'SOFTWARE\Citrix\PortICA','',force=False)

    # Removing remaining files
    if isdir(app_dir):
        killalltasks(processes_to_kill)
        time.sleep(15)
        remove_tree(app_dir)


def session_setup():
    # Initializing variables
    user_conf_dir = makepath(application_data,'Microsoft','Teams')
    json_config = makepath(user_conf_dir,'desktop-config.json')
    json_settings = makepath(user_conf_dir,'settings.json')

    user_app_dir = makepath(user_local_appdata,'Microsoft','Teams')
    user_app_path = makepath(user_app_dir,'current','Teams.exe')
    user_app_updater = makepath(user_app_dir,'Update.exe')
    #user_app_version = registry_readstring(HKEY_CURRENT_USER,r'Software\Microsoft\Windows\CurrentVersion\Uninstall\Teams','DisplayVersion')

    user_app_progdata_dir = makepath('C:','ProgramData',get_current_user(),'Microsoft','Teams')
    user_app_progdata_path = makepath(user_app_progdata_dir,'current','Teams.exe')
    user_app_progdata_updater = makepath(user_app_progdata_dir,'Update.exe')

    user_silent_args_uninst = '--uninstall -s'
    processes_to_kill = control.impacted_process.split(',')

    # Uninstalling from user environment (procedure: https://docs.microsoft.com/microsoftteams/msi-deployment)
    if isfile(user_app_path):
        print('Uninstalling Microsoft Teams from user environment')
        killalltasks(processes_to_kill)
        run('"%s" %s' % (user_app_updater,user_silent_args_uninst))
    if isdir(user_app_dir):
        remove_tree(user_app_dir)
    if isfile(user_app_progdata_path):
        print('Uninstalling Microsoft Teams from user ProgramData environment')
        killalltasks(processes_to_kill)
        run('"%s" %s' % (user_app_progdata_updater,user_silent_args_uninst))
    if isdir(user_app_progdata_dir):
        killalltasks(processes_to_kill)
        remove_tree(user_app_progdata_dir)

    if reg_value_exists(HKEY_CURRENT_USER,r'Software\Microsoft\Office\Teams','PreventInstallationFromMsi'):
        registry_delete(HKEY_CURRENT_USER,r'Software\Microsoft\Office\Teams','PreventInstallationFromMsi')

    # suppression autoremplissage uid (modif PB)
    if not reg_value_exists(HKEY_CURRENT_USER,r'Software\Microsoft\Office\Teams','SkipUpnPrefill'):
        registry_set(HKEY_CURRENT_USER,r'Software\Microsoft\Office\Teams','SkipUpnPrefill',1,type=REG_DWORD)

    # nettoyage profil teams utilisateur (un peu violent mais le nettoyage du cache ne suffisant pas...)
    if isdir(user_conf_dir):
        killalltasks(processes_to_kill)
        time.sleep(15)
        remove_tree(user_conf_dir)

    # Define user settings (procedure: https://techcommunity.microsoft.com/t5/microsoft-teams/how-to-disable-check-for-updates-in-microsoft-teams/m-p/54644)
    print('Setting up user settings')
    if not isdir(user_conf_dir):
        mkdirs(user_conf_dir)

    # desktop-config.json
    if isfile(json_config):
        json_config_content = load_json(json_config)
    else:
        json_config_content = json.loads('{"appPreferenceSettings":{}}')
        #json_config_content = json.load({})

    json_config_content['appPreferenceSettings']['registerAsIMProvider'] = False
    json_config_content['appPreferenceSettings']['openAsHidden'] = True
    json_config_content['appPreferenceSettings']['runningOnClose'] = True
    json_config_content['openAtLogin'] = False
    json_config_content['isForeground'] = True
    json_config_content['wamFallbackInProgress'] = False
    json_config_content['disableWarningOnOpenKeyRegistered'] = True
    json_config_content['isAppFirstRun'] = False

    write_json(json_config,json_config_content)

    # settings.json
    if isfile(json_settings):
        json_settings_content = load_json(json_settings)
    else:
        json_settings_content = json.loads('{"baseSettings":{},"initializedSettings":{},"preauthSettings":{"samplingRules":{}}}')
        #json_settings_content = json.load({})

    # Update part
    json_settings_content['baseSettings']['enableBlockSilentUpdate'] = True
    json_settings_content['baseSettings']['disableAllUsersAutoUpdate'] = True
    json_settings_content['baseSettings']['enableUnAuthUpdates'] = False
    """ json_settings_content['initializedSettings']['disableAllUsersAutoUpdate'] = True
    json_settings_content['preauthSettings']['disableAllUsersAutoUpdate'] = True
    json_settings_content['preauthSettings']['samplingRules']['updateNotificationEnabled'] = False """
    # Telemetry part
    json_settings_content['baseSettings']['enableAdalMacTelemetryV2'] = False
    json_settings_content['baseSettings']['enableAdalWinTelemetry'] = False
    json_settings_content['baseSettings']['proplusAdditionalTelemetryEnabled'] = False
    json_settings_content['baseSettings']['regionInTelemetryEnabled'] = False
    json_settings_content['baseSettings']['tenantRegionInTelemetryEnabled'] = False
    """ json_settings_content['initializedSettings']['tenantRegionInTelemetryEnabled'] = False
    json_settings_content['preauthSettings']['tenantRegionInTelemetryEnabled'] = False
    json_settings_content['preauthSettings']['samplingRules']['tenantRegionInTelemetryEnabled'] = False """
    # Other part
    json_settings_content['baseSettings']['enableRegisterProtocolToRoot'] = False
    """ json_settings_content['preauthSettings']['registerAddinOnMeetingPolicySettingsSync'] = False """

    write_json(json_settings,json_settings_content)


def update_package():
    print('Download/Update package content from upstream binary sources')

    # Getting proxy informations from WAPT settings
    proxy = {}
    if platform.system()=='Windows' and isfile(makepath(user_local_appdata(),'waptconsole','waptconsole.ini')):
        proxywapt = inifile_readstring(makepath(user_local_appdata(),'waptconsole','waptconsole.ini'),'global','http_proxy')
        if proxywapt :
            proxy = {'http':proxywapt,'https':proxywapt}

    # Initializing variables
    latest_bin = bin_name_temp

    # Downloading latest binaries
    if isfile(bin_name_temp):
        remove_file(bin_name_temp)
    if not isfile(latest_bin):
        print('Downloading: ' + latest_bin)
        wget(url_dl,latest_bin,proxies=proxy)

        # Get version from file
        version_from_file = get_msi_properties(latest_bin)['ProductVersion']
        version = version_from_file
        old_latest_bin = latest_bin
        latest_bin = bin_name_string % version
        if isfile(latest_bin):
            remove_file(latest_bin)
        os.rename(old_latest_bin,latest_bin)

		# Change version of the package
        pe = PackageEntry().load_control_from_wapt('.')
        pe.version = '%s-%s'%(version,int(pe.version.split('-',1)[1])+1)
        pe.save_control_to_wapt('.')
        print('Changing version to ' + pe.version + ' in WAPT\\control')
        print('Update package done. You can now build-upload your package')
    else:
        print('This package is already up-to-date')

    # Deleting outdated binaries
    for bin_in_dir in glob.glob('*.exe') or glob.glob('*.msi') or glob.glob('*.zip'):
        if bin_in_dir != latest_bin :
            print('Outdated binary: ' + bin_in_dir + ' Deleted')
            remove_file(bin_in_dir)




def load_json(json_filename):
    with open(json_filename) as json_file:
        data = json.load(json_file)
    return data


def write_json(json_filename,data):
    with open(json_filename, 'w') as outfile:
        json.dump(data, outfile, sort_keys=True, indent=4, default=str)

- Installierte WAPT-Version (2.1.0 Enterprise)
- Server-Betriebssystem: Debian
- Betriebssystem des Administrations-/Paketerstellungsrechners: Windows 10
Benutzeravatar
Gaetan
Nachrichten: 169
Anmeldung: 8. August 2019 - 10:16 Uhr
Ort: Toulouse

18. November 2020 - 09:01 Uhr

Danke, ich werde es testen. =)
Benutzeravatar
jpele
Nachrichten: 156
Anmeldung: 4. März 2019 - 12:01 Uhr
Ort: Nantes

19. November 2020 - 12:03 Uhr

Hallo,

ich warte auf Ihr Feedback, bevor ich diesen Artikel in den Shop aufnehme. ;)
pierre.baridon
Nachrichten: 12
Anmeldung: 14. November 2020 - 10:55 Uhr
Standort: Clermont-Ferrand

26. November 2020 – 17:13 Uhr

Hallo,
der Test an rund fünfzig Maschinen war erfolgreich; wir gehen nun zur Serienproduktion mit 1700 Maschinen über.
Mit freundlichen Grüßen,
Pierre
- Installierte WAPT-Version (2.1.0 Enterprise)
- Server-Betriebssystem: Debian
- Betriebssystem des Administrations-/Paketerstellungsrechners: Windows 10
Benutzeravatar
Gaetan
Nachrichten: 169
Anmeldung: 8. August 2019 - 10:16 Uhr
Ort: Toulouse

26. November 2020 – 21:11 Uhr

Für mich war auch der Rückweg kein Problem ;)
Benutzeravatar
jpele
Nachrichten: 156
Anmeldung: 4. März 2019 - 12:01 Uhr
Ort: Nantes

27. November 2020 – 14:55 Uhr

Guten Morgen,

Vielen Dank für Ihr Feedback, ich habe das Paket entsprechend angepasst.
Haben Sie Rückmeldungen von Nutzern erhalten, die sich sehr regelmäßig, teilweise sogar täglich, erneut mit Teams verbinden mussten?
Für den Fall, dass ich das Profil einmalig bereinigt habe, hier der Codeausschnitt.

Code: Alle auswählen

    # No longer Prefill UPN
    registry_set(HKEY_CURRENT_USER,r'Software\Microsoft\Office\Teams','SkipUpnPrefill',1,type=REG_DWORD)

    # Cleaning up Teams profile once
    if registry_readstring(HKEY_CURRENT_USER,r'Software\WAPT\Teams','CleanupOnce') != 'Done':
        if isdir(user_conf_dir):
            killalltasks(processes_to_kill)
            time.sleep(2)
            remove_tree(user_conf_dir)
        registry_set(HKEY_CURRENT_USER,r'Software\WAPT\Teams','CleanupOnce','Done')
Wir müssen noch überprüfen, ob die Option beim nächsten Update nicht verschwindet, aber es sollte alles in Ordnung sein ;)

Aufrichtig,
Jimmy
Gesperrt