tis-microsoft-teams
1.5.0.14473-65
System-Wide installation (prevent Per-user installation) - Microsoft Teams, also referred to as simply Teams, is a unified communication and collaboration platform that combines persistent workplace chat, video meetings, file storage (including collaboration on files)
7138 downloads
See build result See VirusTotal scan

Description
- package : tis-microsoft-teams
- name : Microsoft Teams
- version : 1.5.0.14473-65
- architecture : x86
- categories : Media,Messaging,Office
- maintainer : WAPT Team,Tranquil IT,Jimmy PELÉ,Gaëtan SEGAT
- locale : all
- target_os : windows
- installed_size :
- impacted_process : Teams
- editor : Microsoft
- licence : Proprietary
- signature_date : 2022-06-16T04:11:37.345061
- Homepage : https://www.microsoft.com/microsoft-365/microsoft-teams/group-chat-software
- Conflicts :
control
package : tis-microsoft-teams
version : 1.5.0.14473-65
architecture : x86
section : base
priority : optional
name : Microsoft Teams
categories : Media,Messaging,Office
maintainer : WAPT Team,Tranquil IT,Jimmy PELÉ,Gaëtan SEGAT
description : System-Wide installation (prevent Per-user installation) - Microsoft Teams, also referred to as simply Teams, is a unified communication and collaboration platform that combines persistent workplace chat, video meetings, file storage (including collaboration on files)
depends :
conflicts : tis-microsoft-teams-appdata
maturity : PROD
locale : all
target_os : windows
min_wapt_version : 1.7
sources : https://docs.microsoft.com/microsoftteams/msi-deployment
installed_size :
impacted_process : Teams
description_fr : Microsoft Teams, aussi simplement appelé Teams, est une plate-forme de communication et de collaboration unifiée qui combine le chat, les réunions vidéo, le stockage de fichiers (comprend la collaboration sur les fichiers)
description_pl :
description_de :
description_es :
description_pt :
description_it :
description_nl :
description_ru :
audit_schedule :
editor : Microsoft
keywords : microsoft,teams,team,communication,collaboration,chat,video,meetings
licence : Proprietary
homepage : https://www.microsoft.com/microsoft-365/microsoft-teams/group-chat-software
package_uuid : 02955857-f048-4921-8932-389ca4941022
valid_from :
valid_until :
forced_install_on :
changelog : https://support.office.com/article/what-s-new-in-microsoft-teams-d7092a6d-c896-424c-b362-a472d5f105de
min_os_version : 6.1
max_os_version :
icon_sha256sum : c6e1224de3bf5ed2d252f9cee788480febfe2993b02cf91cf3258e7306274674
signer : Tranquil IT
signer_fingerprint: 8c5127a75392be9cc9afd0dbae1222a673072c308c14d88ab246e23832e8c6bb
signature : CxUdqfKFF3vU3QoKYLs3M6aTkUX887/GsjtSdNoHXCw3/3Xt8oonYdHsX27GzMWJZF+vZxw17WFoWjrci3kbKrdDbbqPcR6MDkC+VugoNimu2t8Wi2OkDTfr5VgZL/yFBvD2V1kehn3IDOG0P+t0H4tJ1xECyI8Csvj4MKHwQfbLfHKkRZxOTo3NUjJj/WrI0aXIJmm5f6VMD9IzwjarsQqe3IvXR/UmDj3h0iu+sd01ESbl4XzLzwNiYp24tXP36f6VnfYH/vyoMshD9wnlO4iVRohFPF4j6LNWN31Hcl4Co7AbwMK0eilMKZL+nd8STDWr9h8pXVZcyn0YCfx0PQ==
signature_date : 2022-06-16T04:11:37.345061
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
Setup.py
# -*- 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.msi'
bin_name_temp = 'Teams_windows.msi'
url_dl = "https://teams.microsoft.com/downloads/desktopurl?env=production&plat=windows&arch=x86&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 = 'Microsoft Teams'
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_notfatal(uninstall_cmd(uninstall['key']))
time.sleep(15)
# Adding fake WVD/VDI RegKey
# Un/comment if needed
registry_set(HKEY_LOCAL_MACHINE,r'SOFTWARE\Microsoft\Teams','IsWVDEnvironment',1,type=REG_DWORD)
registry_set(HKEY_LOCAL_MACHINE,r'SOFTWARE\VMware, Inc.\VMware VDM\Agent','','')
registry_set(HKEY_LOCAL_MACHINE,r'SOFTWARE\Citrix\PortICA','','')
# 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))
# 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)
def uninstall():
# Initializing variables
processes_to_kill = control.impacted_process.strip().replace(' ','').split(',')
count = 30 # 30x10=300sec maximum waiting
# Uninstalling the package
for uninstall in installed_softwares(name=app_name_short):
killalltasks(processes_to_kill)
print('Uninstalling: %s' % uninstall['name'])
run_notfatal(uninstall_cmd(uninstall['key']))
while installed_softwares(name=app_name_short):
count -= 1
if count == 0:
error('Unable to uninstall: %s' % app_name)
time.sleep(10)
# Removing remaining files
if isdir(app_dir):
killalltasks(processes_to_kill)
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_notfatal('"%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_notfatal('"%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')
# 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' or force:
killalltasks(processes_to_kill)
time.sleep(2)
remove_tree(user_conf_dir)
registry_set(HKEY_CURRENT_USER,r'Software\WAPT\Teams','CleanupOnce','Done')
print("Cleaning up Teams user profile") """
# 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():
# Initializing variables
proxies = get_proxies()
if not proxies:
proxies = get_proxies_from_wapt_console()
latest_bin = bin_name_temp
version = '1.0' # fake version
# Downloading latest binaries
if isfile(bin_name_temp):
remove_file(bin_name_temp)
if not isfile(latest_bin):
print('Downloading: %s' % latest_bin)
wget(url_dl, latest_bin, proxies=proxies)
# Checking version from file
version_from_file = get_version_from_binary(latest_bin)
if version != version_from_file:
os.rename(latest_bin,bin_name_string % version_from_file)
version = version_from_file
# Changing version of the package
control.version = '%s-%s' % (version, int(control.version.split('-')[-1])+1)
control.save_control_to_wapt()
print("Changing package version to: %s in WAPT\\control" % control.version)
# Deleting outdated binaries
remove_outdated_binaries(version)
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)
def get_proxies():
if platform.python_version_tuple()[0] == '3':
from urllib.request import getproxies
else:
from urllib import getproxies
return getproxies()
def get_proxies_from_wapt_console():
proxies = {}
if platform.system() == 'Windows':
waptconsole_ini_path = makepath(user_local_appdata(), 'waptconsole', 'waptconsole.ini')
else:
waptconsole_ini_path = makepath(user_home_directory(), '.config', 'waptconsole', 'waptconsole.ini')
if isfile(waptconsole_ini_path):
proxy_wapt = inifile_readstring(waptconsole_ini_path, 'global', 'http_proxy')
if proxy_wapt:
proxies = {'http': proxy_wapt, 'https': proxy_wapt}
return proxies
def get_version_from_binary(filename, parameter='ProductVersion'):
if filename.endswith('.msi'):
return get_msi_properties(filename)[parameter]
else:
return get_file_properties(filename)[parameter]
def remove_outdated_binaries(version, list_extensions=['exe','msi','deb','rpm','dmg','pkg'], list_filename_contain=None):
if type(list_extensions) != list:
list_extensions = [list_extensions]
if list_filename_contain:
if type(list_filename_contain) != list:
list_filename_contain = [list_filename_contain]
list_extensions = ['.' + ext for ext in list_extensions if ext[0] != '.']
for file_ext in list_extensions:
for bin_in_dir in glob.glob('*%s' % file_ext):
if not version in bin_in_dir:
remove_file(bin_in_dir)
if list_filename_contain:
for filename_contain in list_filename_contain:
if not filename_contain in bin_in_dir:
remove_file(bin_in_dir)
1c35db0abbaa3a879c3d259cd231e5df449b9b4c2bfbab347bb775dc0bd4c42d : Teams_windows_1.5.0.14473.msi
bf55ec9b8e6fb080ad43d507f9ba1e5fa61532f05d78e101eac53091952d4721 : setup.py
c6e1224de3bf5ed2d252f9cee788480febfe2993b02cf91cf3258e7306274674 : WAPT/icon.png
a5a97261381e1d0ad46ee15916abec9c2631d0201f5cc50ceb0197a165a0bbbf : WAPT/certificate.crt
f31e722c8a542a1954d79dbf3e3b36e9904150896c0d51f9e7a8858a2f4df123 : luti.json
6c968c17b305329cffa6b06e97d77411b982599943219e448662dbb0fa411900 : WAPT/control