tis-windows-media-player-uwp
11.2301.25.0-30
Media Player est conçu pour écouter et regarder vos contenus multimédia
1182 téléchargements
Voir le résultat de la construction Voir l'analyse de VirusTotal
Description
- package : tis-windows-media-player-uwp
- name : Windows Media Player UWP
- version : 11.2301.25.0-30
- categories : Media
- maintainer : WAPT Team,Tranquil IT,Jimmy PELÉ,Pierre COSSON
- installed_size : 38400202
- editor :
- licence :
- signature_date : 2023-03-08T10:28:37.388972
- size : 114.44 Mo
- locale : all
- target_os : windows
- impacted_process : Microsoft.Media.Player
- architecture : all
control
package : tis-windows-media-player-uwp
version : 11.2301.25.0-30
architecture : all
section : base
priority : optional
name : Windows Media Player UWP
categories : Media
maintainer : WAPT Team,Tranquil IT,Jimmy PELÉ,Pierre COSSON
description : Media Player is designed to listening and watching your multimedia content
depends :
conflicts :
maturity : PROD
locale : all
target_os : windows
min_wapt_version : 2.2
sources : https://apps.microsoft.com/store/detail/9WZDNCRFJ3PT
installed_size : 38400202
impacted_process : Microsoft.Media.Player
description_fr : Media Player est conçu pour écouter et regarder vos contenus multimédia
description_pl : Media Player jest przeznaczony do słuchania i oglądania zawartości multimedialnej
description_de : Media Player wurde entwickelt, um Ihre Multimedia-Inhalte anzuhören und anzusehen
description_es : Media Player está diseñado para escuchar y ver tus contenidos multimedia
description_pt : O Media Player foi concebido para ouvir e ver o seu conteúdo multimédia
description_it : Media Player è stato progettato per ascoltare e guardare i contenuti multimediali
description_nl : Media Player is ontworpen om te luisteren en te kijken naar uw multimedia-inhoud
description_ru : Media Player предназначен для прослушивания и просмотра мультимедийного контента
audit_schedule :
editor :
keywords :
licence :
homepage :
package_uuid : 46240e9f-6017-4a8b-b3ff-14533592df62
valid_from :
valid_until :
forced_install_on :
changelog :
min_os_version : 10.0.19042
max_os_version : 10.0.22000
icon_sha256sum : d5271fbe8602049817c4893be778de2e9fad698abcc78768069dcfde51230196
signer : Tranquil IT
signer_fingerprint: 8c5127a75392be9cc9afd0dbae1222a673072c308c14d88ab246e23832e8c6bb
signature : Lg3bFxQsfoy0MSzvfP8r0MjUXAqCcHSOaMKd7ZzfioTFbLxdLIktTzItbTNPFy+iYK3zKgJmK917SY1za0BbwfaZCtewE4hPuF58RQ+KydijA1Ivj1LHe29Pa5M0IAr0y4vrgMnJr0zYWqK0hPCpBpeoEY0IOxcgkQw8Ti7iqf2nowmJg1mtMFLuIZe6KoewEqL9MU68Wh9n76agaSSwHMzIQ/O75khD0IxBJpS0DieUuDxbCiIprlmBqEe+poPGjI6sDPtXZ99uQLeuJvKR9tNbNWS0RuERacYKvFaqPFu4SOGcRnrHfsod2X2ouiWzyHcrmBuRyQtPGLDphPGbwg==
signature_date : 2023-03-08T10:28:37.388972
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 *
# Windows Media Player = Version 11
# Groove Music = Version 2019
appx_package = "Microsoft.ZuneMusic"
appx_dir = makepath(programfiles, "WindowsAppsInstallers")
allow_remove = False # crash on Win10 for some reasons
def install():
# Declare local variables
bins_dir = control.package.split("-", 1)[1]
appx_bins_dir = makepath(appx_dir, bins_dir)
# Remove from old path
for appx_file in glob.glob(makepath(appx_dir, "%s_*" % appx_package)):
remove_file(appx_file)
# Placing bins for session-setup installs
if isdir(appx_bins_dir):
remove_tree(appx_bins_dir)
mkdirs(appx_bins_dir)
print(f"Creating: {appx_bins_dir}")
for f in glob.glob(bins_dir + "/*"):
filecopyto(f, appx_bins_dir)
if control.architecture == "all":
for f in glob.glob(appx_bins_dir + "/*"):
fname = f.split(os.sep)[-1]
if not get_host_architecture() in fname and not "neutral" in fname:
remove_file(f)
def session_setup():
# Declare local variables
bins_dir = control.package.split("-", 1)[1]
appx_bins_dir = makepath(appx_dir, bins_dir)
bin_path = glob.glob(makepath(appx_bins_dir, f"{appx_package}_*"))[0]
dependencies_pathes = ",".join([f'"{a}"' for a in glob.glob(makepath(appx_bins_dir, "*")) if not appx_package in a])
# Installing the UWP application in the user environment
appx_version = get_powershell_str("Get-AppxPackage -Name %s" % appx_package, "Version")
if not appx_version or Version(appx_version) < Version(control.get_software_version()) or force:
print("Installing: %s" % bin_path.split("\\")[-1])
killalltasks(control.get_impacted_process_list())
add_appx_cmd = f'Add-AppxPackage -Path "{bin_path}"'
if dependencies_pathes:
add_appx_cmd += f" -DependencyPath {dependencies_pathes}"
run_powershell(add_appx_cmd)
else:
print("%s is installed in correct version (%s)" % (appx_package, appx_version))
def uninstall():
# Declare local variables
bins_dir = control.package.split("-", 1)[1]
appx_bins_dir = makepath(appx_dir, bins_dir)
if allow_remove:
remove_appx(appx_package)
if isdir(appx_bins_dir):
print("Remove: %s" % (appx_bins_dir))
remove_tree(appx_bins_dir)
if dir_is_empty(appx_dir):
print("Remove: %s since it is empty" % (appx_dir))
remove_tree(appx_dir)
def get_host_architecture():
if isARM64():
return "arm64"
elif isARM():
return "arm"
elif is64():
return "x64"
elif is32():
return "x86"
update_package.py
# -*- coding: utf-8 -*-
from setuphelpers import *
import requests
try:
from setupdevhelpers import *
except:
from bs4 import BeautifulSoup
import waptguihelper
import re
def update_package():
# Declaring local variables
package_updated = False
proxies = get_proxies()
if not proxies:
proxies = get_proxies_from_wapt_console()
store_url = control.sources
if not store_url:
store_id = waptguihelper.input_dialog(
"Choice of app", "Enter the windows store app id (foundable in package url: https://apps.microsoft.com/store/apps)", store_url
).split("/")[-1]
else:
store_id = store_url.split("/")[-1]
store_id = store_id.split("?")[0]
url_ms = "https://apps.microsoft.com/store/detail/%s" % store_id
control.sources = url_ms
control.save_control_to_wapt()
package_prefix = control.package.split("-")[0]
# check setup.py incase the package name doesnt match the installer file
with open("setup.py", "r") as f:
for line in f.readlines():
if line.startswith("appx_package"):
store_package_name = line.split("=")[1].split('"')[1]
break
# Getting info from adguard api
res = requests.post(
"https://store.rg-adguard.net/api/GetFiles",
"type=ProductId&url=%s&ring=RP&lang=fr-FR" % store_id,
headers={"content-type": "application/x-www-form-urlencoded"},
proxies=proxies,
)
all_files = []
page = BeautifulSoup.BeautifulSoup(res.content, features="html.parser")
for bs_search in page.find_all("a"):
if not "BlockMap" in bs_search.text and not "eappxbundle" in bs_search.text and not "emsixbundle" in bs_search.text:
version = bs_search.text.split("_")[1]
bin_name = bs_search.text.replace("~", "_")
download_url = bs_search["href"]
pkg_splitted = re.split(r"_\d+\.", bin_name)[0]
package_name = package_prefix + "-" + pkg_splitted.split("_")[0].replace(".", "-").lower()
software_name = bin_name.split("_")[0].replace("-", " ").replace(".", " ")
if "arm64" in bin_name:
package_arch = "arm64"
elif "arm" in bin_name:
package_arch = "arm"
elif "x64" in bin_name:
package_arch = "x64"
elif "x86" in bin_name:
package_arch = "x86"
else:
package_arch = "all"
file_dict = {
"version": version,
"bin_name": bin_name,
"package_name": package_name,
"software_name": software_name,
"package_arch": package_arch,
"download_url": download_url,
}
all_files.append(file_dict)
# Downloading files
for dependency in all_files:
latest_bin = dependency["bin_name"]
download_url = dependency["download_url"]
if download_url.split("/")[2].endswith("microsoft.com"):
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)
else:
error("ERROR: The retrieved url will not download from microsoft's servers")
# Import xmltodict for make_uwp_app_dict()
import sys
sys.path.append(basedir)
pip_download_xmltodict = "waptpython -m pip download xmltodict -d %s" % basedir
if proxies:
pip_download_xmltodict += " --proxy %s" % proxies["http"]
run(pip_download_xmltodict)
unzip(glob.glob("*.whl")[0], ".", "xmltodict.py")
remove_file(glob.glob("*.whl")[0])
# Keep app files
uwp_app_dict = make_uwp_app_dict()
newer_version = "0"
for uwp_app in uwp_app_dict:
if uwp_app_dict[uwp_app]["Name"] != store_package_name and uwp_app_dict[uwp_app]["Version"].startswith("2019"):
continue
if Version(newer_version) < Version(uwp_app_dict[uwp_app]["Version"]) and Version(control.min_os_version, 3) == Version(
uwp_app_dict[uwp_app]["MinVersion"], 3
):
newer_version = uwp_app_dict[uwp_app]["Version"]
newer_uwp_app = uwp_app
version = newer_version
# Placing binaries in a dir ["appxbundle", "msixbundle", "appx", "msix]
bins_dir = control.package.split("-", 1)[1]
mkdirs(bins_dir)
shutil.move(newer_uwp_app, bins_dir)
for l in [glob.glob(a["Name"] + "_*") for a in uwp_app_dict[newer_uwp_app]["Dependencies"]]:
for f in l:
shutil.move(f, bins_dir)
# Removing remaining files ["appxbundle", "msixbundle", "appx", "msix]
for f in glob.glob("*.appxbundle") + glob.glob("*.msixbundle") + glob.glob("*.appx") + glob.glob("*.msix"):
remove_file(f)
# No dependencies since it will be contained
control.depends = ""
control.save_control_to_wapt()
# Asking pkg infos if needed
ask_control_categories()
control.architecture = package_arch
ask_control_package(package_name, "template-microsoft-store", remove_base_files=True)
ask_control_name(software_name, "Template Microsoft Store")
ask_control_description("update_package")
# Changing setup.py appx_package variable
new_lines = []
with open("setup.py", "r") as f:
for line in f.readlines():
if line.startswith("appx_package"):
line = 'appx_package = "%s"\n' % latest_bin.split("_")[0]
new_lines.append(line)
with open("setup.py", "w") as f:
f.writelines(new_lines)
# Changing version of the package
if Version(version) > Version(control.get_software_version()):
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
def make_uwp_app_dict():
import xmltodict
ms_app_db = {}
for ms_app_file in glob.glob("*.appxbundle") + glob.glob("*.msixbundle") + glob.glob("*.appx") + glob.glob("*.msix"):
manifest = unzip(ms_app_file, ".", "AppxManifest.xml", False)
bundle_manifest = unzip(ms_app_file, ".", "AppxMetadata\AppxBundleManifest.xml", False)
if not manifest:
if bundle_manifest:
with open(bundle_manifest[0]) as xml_file:
data_dict = xmltodict.parse(xml_file.read(), attr_prefix="")
ms_app_info = {"Name": data_dict["Bundle"]["Identity"]["Name"], "Version": data_dict["Bundle"]["Identity"]["Version"]}
dependencies = []
for app_pkg in data_dict["Bundle"]["Packages"]["Package"]:
if app_pkg["Type"] == "application":
dependency_info = {
"FileName": app_pkg["FileName"],
"Version": app_pkg["Version"],
"Architecture": app_pkg["Architecture"],
"MinVersion": app_pkg["b4:Dependencies"]["b4:TargetDeviceFamily"]["MinVersion"],
"MaxVersionTested": app_pkg["b4:Dependencies"]["b4:TargetDeviceFamily"]["MaxVersionTested"],
}
dependencies.append(dependency_info)
ms_app_info.update({"MinVersion": dependency_info["MinVersion"], "MaxVersionTested": dependency_info["MaxVersionTested"]})
for dependency in dependencies:
unzip(
ms_app_file,
".",
makepath(
dependency["FileName"],
),
False,
)
manifest = unzip(dependency["FileName"], ".", makepath("AppxManifest.xml"), False)
if isfile(dependency["FileName"]):
remove_file(dependency["FileName"])
with open(manifest[0]) as xml_file:
dependency_data_dict = xmltodict.parse(xml_file.read(), attr_prefix="")
sub_dependencies = []
for sub_app_pkg in dependency_data_dict["Package"]["Dependencies"]["PackageDependency"]:
sub_dependency_info = {
"Name": sub_app_pkg["Name"],
"MinVersion": sub_app_pkg["MinVersion"],
}
sub_dependencies.append(sub_dependency_info)
ms_app_info["Dependencies"] = sub_dependencies
ms_app_db[ms_app_file] = ms_app_info
else:
error("nothing to parse")
else:
pass
for xml_file in glob.glob("AppxManifest.xml") + glob.glob("AppxBundleManifest.xml"):
remove_file(xml_file)
return ms_app_db
def ask_control_description(blank_str=None):
"""Requesting that the user supply package description for the control.description field
Args:
blank_str (str): The description will be cleared if it includes the specified string to avoid using the template description (default: do not clear description)
"""
if not control.description:
control.description = waptguihelper.input_dialog("Description", "Please fill the description", control.description)
control.save_control_to_wapt()
if blank_str is not None and blank_str in control.description:
control.description = ""
control.save_control_to_wapt()
return control.description
def ask_control_categories():
"""Requesting that the user supply package categories for the control.categories field if empty or Template is selected"""
if control.categories == "" or control.categories == "Template":
categories = waptguihelper.grid_dialog(
"Select package categories",
[
"Internet",
"Utilities",
"Messaging",
"Security",
"System and network",
"Media",
"Development",
"Office",
"Drivers",
"Education",
"Configuration",
"CAD",
"Template",
"Dependency",
"Extension",
],
waptguihelper.GRT_SELECTED,
)
if categories:
control.categories = ",".join([a["unknown"] for a in categories])
else:
control.categories = ""
control.save_control_to_wapt()
return control.categories
def ask_control_package(control_package=control.package, conditionnal_package_name=None, remove_base_files=False):
"""Requesting that the user provide a package name to be entered into the control.package field, and offering the possibility of removing the base files (icon.png and changelog.txt) for template package usage
Args:
control_package (str) : prefilled control_package (default: actual control_package)
conditionnal_package_name (str) : only ask when the control.package contains conditionnal_package_name (default: always ask for control_package)
remove_base_files (bool) : removes base files if parameter is True and conditionnal_package_name is provided (default: False)
"""
if conditionnal_package_name is None or conditionnal_package_name in control.package:
control.package = waptguihelper.input_dialog(
control.package,
"You can redefine the package name",
control_package.replace(conditionnal_package_name, "") if conditionnal_package_name is not None else control_package,
)
control.save_control_to_wapt()
# Removing template files
if conditionnal_package_name in control.package and remove_base_files:
if isfile("WAPT\\changelog.txt"):
remove_file("WAPT\\changelog.txt")
if isfile("WAPT\\icon.png"):
remove_file("WAPT\\icon.png")
return control.package
def ask_control_name(control_name=control.name, conditionnal_package_name=None):
"""Requesting that the user provide a package name to be entered into control.name field
Args:
control_name (str) : prefilled control_name (default: control.name)
conditionnal_package_name (str) : only ask when the control.name contains conditionnal_package_name (default: always ask for control_name)
"""
if conditionnal_package_name is None or conditionnal_package_name in control.name:
control.name = waptguihelper.input_dialog(control.name, "You can redefine the name for the self-service", control_name)
control.save_control_to_wapt()
return control.name
34447229f14efef810a41e4e42115cb7795f107399ebc8f8f3776a05630a6c88 : setup.py
9bfde6cfcc530ef073ab4bc9c4817575f63be1251dd75aaa58cb89299697a569 : windows-media-player-uwp/Microsoft.VCLibs.140.00.UWPDesktop_14.0.30704.0_x64__8wekyb3d8bbwe.appx
47de27af62a9a31d123a522c4a74056b8a10d15307de9ebead0adf684f3df45d : windows-media-player-uwp/Microsoft.NET.Native.Runtime.2.2_2.2.28604.0_arm64__8wekyb3d8bbwe.appx
b33c87d60a9c868ec239b7e6a62575151628f29f45e4307ef4a17298dc185008 : windows-media-player-uwp/Microsoft.NET.Native.Framework.2.2_2.2.29512.0_arm64__8wekyb3d8bbwe.appx
a22283167bec10b89653d2a62e737b81d914945d5cc67af671948e9742f9ce06 : windows-media-player-uwp/Microsoft.UI.Xaml.2.8_8.2212.15002.0_x64__8wekyb3d8bbwe.appx
1ec4e926f17b8557c76b4dd0bd06af229ab0d096e719fa6631d1fab8334fd9a5 : windows-media-player-uwp/Microsoft.VCLibs.140.00.UWPDesktop_14.0.30704.0_arm64__8wekyb3d8bbwe.appx
009f7db134c6061fe8f260e075374a28abbbc44e6cf23de107f93ec8b8c59816 : windows-media-player-uwp/Microsoft.VCLibs.140.00_14.0.30704.0_x64__8wekyb3d8bbwe.appx
e4c5dff287b59e27eb9da6ccd02ed1c76d3f6001eceb0f20e71eebd507b3aad2 : windows-media-player-uwp/Microsoft.NET.Native.Framework.2.2_2.2.29512.0_x86__8wekyb3d8bbwe.appx
397b610554d67abaddfdc287ced6a9bf1ada4d4c9ddf53e01c6a061bed2860ef : windows-media-player-uwp/Microsoft.VCLibs.140.00_14.0.30704.0_x86__8wekyb3d8bbwe.appx
7ccf4ef1815d479570fdcf4e462bd7d80f1bc9ae3c39c93220fdb40cc0ebaca9 : windows-media-player-uwp/Microsoft.NET.Native.Runtime.2.2_2.2.28604.0_arm__8wekyb3d8bbwe.appx
f3259c5f122069cf6475389476cc8ea40fd40d6ec1f383369832e0b403f73b33 : windows-media-player-uwp/Microsoft.UI.Xaml.2.8_8.2212.15002.0_x86__8wekyb3d8bbwe.appx
ec7e811dca0cb511c69859c65aa1d94ccd5cc3cab3ec7f9d6bab95abb03149a8 : windows-media-player-uwp/Microsoft.NET.Native.Runtime.2.2_2.2.28604.0_x86__8wekyb3d8bbwe.appx
27fae660d8c609e020703bb463b6601e62811dc75db19975bcb7d68d959b527d : windows-media-player-uwp/Microsoft.NET.Native.Runtime.2.2_2.2.28604.0_x64__8wekyb3d8bbwe.appx
7c723c2625e6cc2151b9519af7a6fa57c377759085b9935dbc7a76658dfae08d : windows-media-player-uwp/Microsoft.UI.Xaml.2.8_8.2212.15002.0_arm64__8wekyb3d8bbwe.appx
de15e9dd85690edb900dc2b331ad7d394d129420e63326f5746d27320e7233ca : windows-media-player-uwp/Microsoft.UI.Xaml.2.8_8.2212.15002.0_arm__8wekyb3d8bbwe.appx
a9e511ff763091b098a932761288c44871dab527f4a429087245295a551d0540 : windows-media-player-uwp/Microsoft.VCLibs.140.00_14.0.30704.0_arm__8wekyb3d8bbwe.appx
e88497eed19c1207acca2bf85a81e4c52899e8c7350030b57298ee0282c69c9b : windows-media-player-uwp/Microsoft.VCLibs.140.00.UWPDesktop_14.0.30704.0_arm__8wekyb3d8bbwe.appx
c195047f4af9c3ff3d92c40e55a901cf7cfa08a679b8ca2543bb104bab2f7ff1 : windows-media-player-uwp/Microsoft.NET.Native.Framework.2.2_2.2.29512.0_x64__8wekyb3d8bbwe.appx
4ab54162efffe26e605c5ec6170de76d72d8f78983c7fc84427630b951402973 : windows-media-player-uwp/Microsoft.VCLibs.140.00_14.0.30704.0_arm64__8wekyb3d8bbwe.appx
3195db914bea1534ee73582cd483c548a929aed2799d305b3bbf7411ba7a6c7d : windows-media-player-uwp/Microsoft.VCLibs.140.00.UWPDesktop_14.0.30704.0_x86__8wekyb3d8bbwe.appx
cac933f2d8e1d5f0dca4d9d6f79cea12b23f10127d1f4c169a02978293be6dad : windows-media-player-uwp/Microsoft.ZuneMusic_11.2301.25.0_neutral___8wekyb3d8bbwe.msixbundle
bdf9c70e4966a4f7ce00ca7fc5179962239514be879f2aa3c1794076b7ff9bc6 : windows-media-player-uwp/Microsoft.NET.Native.Framework.2.2_2.2.29512.0_arm__8wekyb3d8bbwe.appx
d4b055d6def94a3a34ec9929fe67b12075f5d281da4358d4bfdf6f7dc00e88f7 : update_package.py
d5271fbe8602049817c4893be778de2e9fad698abcc78768069dcfde51230196 : WAPT/icon.png
a5a97261381e1d0ad46ee15916abec9c2631d0201f5cc50ceb0197a165a0bbbf : WAPT/certificate.crt
578a76d3737a2c01d93156df140189e8e3dab03ba5e8c02746bc515a7200fd0a : xmltodict.py
b5038d3fd12f5c5c32f2c8fd8a303d2d8ea086a160ec5a028ec49f4f573afc11 : luti.json
a7f5651528d5dc56648779df56d91f046b301ec712da02e9aff7a6045761e46d : WAPT/control