tis-microsoft-todos
2.81.52842.0-8
Todo List is a list management and box ticking application.Todo List helps you organize your tasks, even without being permanently connected to the internet.
109 downloads
See build result See VirusTotal scan

Description
- package : tis-microsoft-todos
- name : Microsoft Todos
- version : 2.81.52842.0-8
- architecture : all
- categories : Utilities
- maintainer : WAPT Team,Tranquil IT,Gaëtan SEGAT,Jimmy PELÉ
- locale : all
- target_os : windows
- installed_size :
- impacted_process :
- editor : Microsoft
- licence : Proprietary
- signature_date : 2022-10-23T20:03:00.321009
- Homepage : https://apps.microsoft.com/store/detail/9NBLGGH5R558
- Depends :
control
package : tis-microsoft-todos
version : 2.81.52842.0-8
architecture : all
section : base
priority : optional
name : Microsoft Todos
categories : Utilities
maintainer : WAPT Team,Tranquil IT,Gaëtan SEGAT,Jimmy PELÉ
description : Todo List is a list management and box ticking application.Todo List helps you organize your tasks, even without being permanently connected to the internet.
depends : tis-microsoft-services-store-engagement,tis-microsoft-net-native-framework,tis-microsoft-vclibs,tis-microsoft-net-native-runtime,tis-microsoft-ui-xaml
conflicts :
maturity : PROD
locale : all
target_os : windows
min_wapt_version : 2.0
sources : https://apps.microsoft.com/store/detail/9NBLGGH5R558
installed_size :
impacted_process :
description_fr : Todo List est une application de gestion de listes et de cochage de cases.Todo List vous aide à organiser vos tâches, même sans être connecté en permanence à Internet
description_pl : Todo List to aplikacja do zarządzania listami i zaznaczania pól.Todo List pomaga organizować zadania, nawet bez stałego połączenia z internetem
description_de : Todo List ist eine Anwendung zur Verwaltung von Listen und zum Ankreuzen von Kästchen und hilft Ihnen, Ihre Aufgaben zu organisieren, auch wenn Sie nicht ständig mit dem Internet verbunden sind
description_es : Todo List es una aplicación de gestión de listas y marcación de casillas.Todo List te ayuda a organizar tus tareas, incluso sin estar permanentemente conectado a Internet
description_pt : A Todo List é uma aplicação de gestão de listas e de marcação de caixas. A Todo List ajuda-o a organizar as suas tarefas, mesmo sem estar permanentemente ligado à Internet
description_it : Todo List è un'applicazione per la gestione degli elenchi e delle caselle da spuntare. Todo List vi aiuta a organizzare le vostre attività, anche senza essere permanentemente connessi a Internet
description_nl : Todo List is een applicatie voor lijstbeheer en het aanvinken van vakjes.Todo List helpt u uw taken te organiseren, zelfs zonder permanent verbonden te zijn met het internet
description_ru : Todo List - это приложение для управления списками и проставления галочек. Todo List поможет вам организовать свои задачи, даже не имея постоянного подключения к Интернету
audit_schedule :
editor : Microsoft
keywords : tasks,list
licence : Proprietary
homepage : https://apps.microsoft.com/store/detail/9NBLGGH5R558
package_uuid : 1946ee71-ecc6-4291-9e85-045c3e434a73
valid_from :
valid_until :
forced_install_on :
changelog :
min_os_version : 10.0
max_os_version :
icon_sha256sum : c4005a9901d9b7f0428c0dfa8ccab841a0cf314f0a7536cbcdbeea9febe78929
signer : Tranquil IT
signer_fingerprint: 8c5127a75392be9cc9afd0dbae1222a673072c308c14d88ab246e23832e8c6bb
signature : W76ACKTpbPziY/Z3H7i35gsLVYI72JMdPHLcDs+h6bxNNZxDPewYWWwRvTyDhfYpcy/hKfFSTa5Cwm8Pij5YHP8+uS1hFDj3cCaGaxPXUNtrmryT+cOQSsSL1ZyVHio4sxKfLM+mLkoPrWIIaVC8ycD3yZPjAGcNhPnrqmlxDDjbU4+O6yI5hY4ElVF2A3nEnJYTAgmcuLxfwkb5uaLIwqjw/uCWq1X+veKmwZBWDo6P3JVNS8bHOLUz0vIBF+eFPLZUhYyBzaCNumIluyTIrn4egJodCi75b3luhzGkKGMgYRPhXXk7QR4aCV3tKT+5ZTbHjIhO2yBRgOu6zQ4Jsw==
signature_date : 2022-10-23T20:03:00.321009
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 *
appx_package = "Microsoft.Todos"
appx_dir = makepath(programfiles, "WindowsAppsInstallers")
windows_min_os_version = WindowsVersions.Windows10v1607
def install():
# Declaring local variables
bin_name = glob.glob("%s*%s*" % (appx_package, control.get_software_version()))[0]
bin_path = makepath(appx_dir, bin_name)
# Checking minimum Windows version for this UWP application
if windows_version() >= windows_min_os_version:
if not isdir(appx_dir):
mkdirs(appx_dir)
else:
for appx_file in glob.glob(makepath(appx_dir, "%s*%s*" % (appx_package, control.get_software_version()))):
if not control.get_software_version() in appx_file:
remove_file(appx_file)
if not isfile(bin_path):
print("Copying: %s to: %s" % (bin_name, appx_dir))
filecopyto(bin_name, appx_dir)
else:
error(
"This Windows version (%s) need to be upgraded to minimum version (%s) to use this package" % (windows_version(), windows_min_os_version)
)
def session_setup():
# Declaring local variables
bin_path = glob.glob(makepath(appx_dir, "%s*%s*" % (appx_package, control.get_software_version())))[0]
# Installing the software in user env
appx_version = get_powershell_str("Get-AppxPackage -Name %s" % appx_package, "Version")
if not appx_version or appx_version < control.get_software_version() or force:
print("Installing: %s" % bin_path.split("\\")[-1])
run_powershell('Add-AppxPackage -Path "%s"' % bin_path)
else:
print("%s is installed in correct version (%s)" % (appx_package, appx_version))
def uninstall():
remove_appx(appx_package)
for appx_file in glob.glob(makepath(appx_dir, "%s*%s*" % (appx_package, control.get_software_version()))):
remove_file(appx_file)
if isdir(appx_dir) and dir_is_empty(appx_dir):
print("Removing: %s since he is empty" % (appx_dir))
remove_tree(appx_dir)
update_package.py
# -*- coding: utf-8 -*-
from setuphelpers import *
import requests
from bs4 import BeautifulSoup
import json
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]
url_ms = "https://apps.microsoft.com/store/detail/%s" % store_id
control.sources = url_ms
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 = []
all_files_dict = {}
page = 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]
if store_package_name == "":
package_name = package_prefix + "-" + pkg_splitted.split("_")[0].replace(".", "-").lower()
else:
package_name = control.package
all_files.append({"version": version, "bin_name": bin_name, "package_name": package_name})
all_files_dict[bin_name] = {"version": version, "bin_name": bin_name, "download_url": download_url, "package_name": package_name}
if "tis-template-microsoft-store" in control.package:
selected = waptguihelper.grid_dialog(
"Please select the proper file",
json.dumps(all_files),
waptguihelper.GRT_SELECTED,
'{"columns":[{"propertyname":"version","datatype":"String","required":false,"readonly":false,"width":130},{"propertyname":"bin_name","datatype":"String","required":false,"readonly":false,"width":500},{"propertyname":"package_name","datatype":"String","required":false,"readonly":false,"width":250}]}',
)
else:
selected = [a for a in all_files if (control.architecture in a["bin_name"] or control.architecture == "all")]
if len(selected) != 1:
higer_version = "0"
for a in all_files:
if Version(higer_version) < Version(a["version"]) and store_package_name in a["bin_name"]:
higer_version = a["version"]
selected = [a for a in all_files if higer_version == a["version"] and store_package_name in a["bin_name"]]
for bin_selected in selected:
latest_bin = bin_selected["bin_name"]
version = all_files_dict[latest_bin]["version"]
download_url = all_files_dict[latest_bin]["download_url"]
package_name = all_files_dict[latest_bin]["package_name"]
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 file version corresponds to online version")
else:
print("ERROR: The retrieved url will not download from microsoft's servers")
# Adding dependencies
for dependency in list(set(d["package_name"] for d in all_files)):
if dependency not in control.depends and package_name != dependency:
control.add_depends(dependency)
# Filling categories
if control.categories == "Template":
categories = waptguihelper.grid_dialog(
"Select %s categories" % package_name,
[
"Internet",
"Utilities",
"Messaging",
"Security",
"System and network",
"Media",
"Development",
"Office",
"Drivers",
"Education",
"Configuration",
"CAD",
"Template",
"Dependencies",
"Extensions",
],
waptguihelper.GRT_SELECTED,
)
control.categories = ",".join([a["unknown"] for a in categories])
# Specifying arch
if "arm" in latest_bin:
control.architecture = "arm"
elif "arm64" in latest_bin:
control.architecture = "arm64"
elif "x64" in latest_bin:
control.architecture = "x64"
elif "x86" in latest_bin:
control.architecture = "x86"
else:
control.architecture = "all"
# Updating pkg infos once
if "tis-template-microsoft-store" in control.package:
control.package = waptguihelper.input_dialog(control.package, "You can redefine the package name", package_name)
control.name = waptguihelper.input_dialog(
control.package, "You can redefine the name for the self-service", control.package.split("-", 1)[1].replace("-", " ").title()
)
# Removing template files
remove_file("WAPT\\changelog.txt")
remove_file("WAPT\\icon.png")
# Warn end-user that depencies are required
missing_depends = []
for d in control.depends.split(","):
if not WAPT.is_available(d) and d != "":
missing_depends.append(d)
if missing_depends:
waptguihelper.message_dialog(
control.package,
'The following packages are not found in your repo, you must import them or use "tis-template-microsoft-store-dependency" to create them with the same Store ID as this package\n\n%s'
% "\n".join(a for a in missing_depends),
)
# Filling description
control.description = waptguihelper.input_dialog("Description", "Please fill the description", control.description)
control.save_control_to_wapt()
# 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()
# Deleting outdated binaries
remove_outdated_binaries(version, ["appxbundle", "msixbundle", "appx", "msix"])
# Validating or not update-package-sources
return package_updated
b28cb193a93278db6aa27c6d307e2d89f7c9a43fcfb26a46f25ef4ff1f4ff993 : setup.py
285af509b4075f85de688a8b55a2ce83fe15294e79ad864550d35a0781f19b61 : update_package.py
4617d365b5dafaee57117016bd75a0cfa52d8b39bbac59ae07a1fb21d3a3ed4d : Microsoft.Todos_2.81.52842.0_neutral___8wekyb3d8bbwe.appxbundle
c4005a9901d9b7f0428c0dfa8ccab841a0cf314f0a7536cbcdbeea9febe78929 : WAPT/icon.png
a5a97261381e1d0ad46ee15916abec9c2631d0201f5cc50ceb0197a165a0bbbf : WAPT/certificate.crt
9648cefee3e0ee369f8e57c8abb53c5a9ff633ad068956ce443afd71ff4696a6 : luti.json
2d2321e056120dde8fcf2f06ecb6f6e812bf64b4c38223bd29de6ce6cf98c2fe : WAPT/control