tis-firefox-multi
105.0-18
Mozilla Firefox, est un navigateur web gratuit et open source - Le paquet est multilingue et préconfiguré
8972 téléchargements
Voir le résultat du build Voir le scan VirusTotal

Description
- package : tis-firefox-multi
- name : Mozilla Firefox Multi-Language
- version : 105.0-18
- architecture : x86
- categories : Internet
- maintainer : WAPT Team, Tranquil IT, Jimmy PELÉ
- locale : all
- target_os : windows
- installed_size : 220643328
- impacted_process : firefox
- editor : Mozilla Foundation,Mozilla Corporation
- licence : MPL 2.0
- signature_date : 2022-09-21T19:01:34.545455
- Site officiel : https://www.mozilla.org/
- Conflits :
control
package : tis-firefox-multi
version : 105.0-18
architecture : x86
section : base
priority : optional
name : Mozilla Firefox Multi-Language
categories : Internet
maintainer : WAPT Team, Tranquil IT, Jimmy PELÉ
description : Mozilla Firefox, is a free and open-source web browser - The package is multi-language and pre-configured
depends :
conflicts : tis-firefox, tis-firefox-esr, tis-firefox-esr-multi, tis-config-for-firefox, tis-config-firefox
maturity : PROD
locale : all
target_os : windows
min_wapt_version : 2.0
sources : https://www.mozilla.org/firefox/all/#product-desktop-release
installed_size : 220643328
impacted_process : firefox
description_fr : Mozilla Firefox, est un navigateur web gratuit et open source - Le paquet est multilingue et préconfiguré
description_pl : Mozilla Firefox, jest darmową i otwartą przeglądarką internetową - Pakiet jest wielojęzyczny i wstępnie skonfigurowany
description_de : Mozilla Firefox, ist ein kostenloser und quelloffener Webbrowser - Das Paket ist mehrsprachig und vorkonfiguriert
description_es : Mozilla Firefox, es un navegador web gratuito y de código abierto - El paquete es multilingüe y está preconfigurado
description_pt : Mozilla Firefox, é um navegador web gratuito e de código aberto - O pacote é multilingue e pré-configurado
description_it : Mozilla Firefox è un browser web gratuito e open-source - Il pacchetto è multilingue e preconfigurato
description_nl : Mozilla Firefox, is een gratis en open-source webbrowser - Het pakket is meertalig en voorgeconfigureerd
description_ru : Mozilla Firefox - это бесплатный веб-браузер с открытым исходным кодом - Пакет является многоязычным и предварительно настроенным
audit_schedule :
editor : Mozilla Foundation,Mozilla Corporation
keywords : web,browser,navigateur,firefox,mozilla
licence : MPL 2.0
homepage : https://www.mozilla.org/
package_uuid : 4894b30e-c972-4238-896c-2dceb3cec3e8
valid_from :
valid_until :
forced_install_on :
changelog : https://www.mozilla.org/en-US/firefox/releases/
min_os_version : 6.1
max_os_version :
icon_sha256sum : 2dc82eade364831757e067169d0039e6e0c9b693f343ea9a62db709eb1942c9e
signer : Tranquil IT
signer_fingerprint: 8c5127a75392be9cc9afd0dbae1222a673072c308c14d88ab246e23832e8c6bb
signature : Q1NQ2avXK7eFpFaMLGoyKF+pjltrQMvo5hTjfkp1Gu0rjXhLmQOseWVuYGEdTlgprGL0hoQp6pRNF6iRLRwE4XrCYBItZCq7ozjuu20xKigph/tQprhGOhj96JJVRjou8PnbGqC2MNZpbcPD7R4r4J64xnLNNJ9+tRD3KyAm888kcg8ueQSy0cgxn0wrccnVldITbNyq0QWAFarkFuYb3p5W1UyfbBBoxrp3TCU7HNOXvmveqVAWAqp/udvKuTFk77NZqtSMc+27Xj53UwI52WvE7Mv6b5JS5WoGH8G61SKt5gbeFGc0+/uyxLacxIQhRQ1nHbBbhMAO37oGDHYN5w==
signature_date : 2022-09-21T19:01:34.545455
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 time
# Installation procedure: https://firefox-source-docs.mozilla.org/browser/installer/windows/installer/FullConfig.html
# Configuration procedure: https://support.mozilla.org/kb/customizing-firefox-using-policiesjson
dist_dir = "distribution"
dist_path = makepath(programfiles, "Mozilla Firefox", dist_dir)
ext_dir = "extensions"
ext_path = makepath(dist_path, ext_dir)
policies_file = "policies.json"
policies_path = makepath(dist_path, policies_file)
list_pre_installed_lang = ["fr", "en-GB", "es-ES", "de", "it"] # Reminder: 'en-US' will be native
def install():
bin_name = glob.glob("Firefox_Setup_*.exe")[0]
app_uninstallkey = "Mozilla Firefox %s (%s en-US)" % (control.get_software_version(), control.architecture)
# Uninstalling others versions
for uninstall in installed_softwares(name="Mozilla Firefox"):
if not control.architecture in uninstall["name"] or "ESR" in uninstall["name"]:
print("Removing: %s" % (uninstall["name"]))
killalltasks(control.get_impacted_process_list())
run(uninstall_cmd(uninstall["key"]))
time.sleep(15) # Required for Firefox
# Installing the software
install_exe_if_needed(
bin_name,
silentflags="/S /PreventRebootRequired=false /TaskbarShortcut=false /DesktopShortcut=false /StartMenuShortcut=true /MaintenanceService=false /RegisterDefaultAgent=false /RemoveDistributionDir=false /OptionalExtensions=false",
key=app_uninstallkey,
min_version=control.get_software_version(),
)
# Making sure that Mozilla Maintenance Service is not installed
for uninstall in installed_softwares(name="Mozilla Maintenance Service"):
print("Removing: %s" % (uninstall["name"]))
run(uninstall_cmd(uninstall["key"]))
# Removing policies from registry since it bypass the policies.json file (source: https://support.mozilla.org/bm/questions/1236197)
ffox_policies_reg_path = r"SOFTWARE\Policies\Mozilla\Firefox"
if reg_key_exists(HKEY_LOCAL_MACHINE, ffox_policies_reg_path):
registry_deletekey(HKEY_LOCAL_MACHINE, ffox_policies_reg_path, "", force=True)
# Adding distribution folder for language packs, dictionaries, extensions and configuration
if isdir(dist_path):
remove_tree(dist_path)
mkdirs(dist_path)
filecopyto(makepath(basedir, policies_file), dist_path)
copytree2(makepath(basedir, ext_dir), ext_path)
# Changing default language
data = json_load_file(policies_path)
my_lang = get_language()
for select_lang in list_pre_installed_lang:
if my_lang in select_lang:
if select_lang == "en-GB":
select_lang = "en-US"
default_lang = {"RequestedLocales": ["%s" % select_lang]}
data["policies"].update(default_lang)
json_write_file(policies_path, data, indent=2)
update_package.py
# -*- coding: UTF-8 -*-
from setuphelpers import *
import requests
import json
dist_dir = "distribution"
dist_path = makepath(programfiles, "Mozilla Firefox", dist_dir)
ext_dir = "extensions"
ext_path = makepath(dist_path, ext_dir)
policies_file = "policies.json"
policies_path = makepath(dist_path, policies_file)
list_pre_installed_lang = ["fr", "en-GB", "es-ES", "de", "it"] # Reminder: 'en-US' will be native
def update_package():
# Declaring local variables
package_updated = False
proxies = get_proxies()
if not proxies:
proxies = get_proxies_from_wapt_console()
app_name = control.name
arch_dict = {"x64": "win64", "x86": "win", "all": "win"}
lang = control.locale
policies_content = json_load_file(policies_file)
# Getting latest version from official sources
download_url = requests.head(
"https://download.mozilla.org/?product=firefox-latest-ssl&os=%s&lang=en-US" % (arch_dict[control.architecture]), proxies=proxies
).headers["Location"]
latest_bin = download_url.rsplit("/", 1)[1].replace("%20", "_")
version = download_url.split("/")[-4]
# Downloading latest binaries
print("Latest %s version is: %s" % (app_name, version))
print("Download URL is: %s" % download_url)
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)
# 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)
# Download Firefox Language Packs
# https://addons.mozilla.org/firefox/addon/fran%C3%A7ais-language-pack/versions/
# https://addons.mozilla.org/firefox/addon/english-gb-language-pack/versions/
url_api_lp = "https://services.addons.mozilla.org/api/v3/addons/language-tools/?app=firefox&type=language"
print("API used for language packs is: %s" % url_api_lp)
version_major = control.version.split("-")[0].split(".")[0]
if isdir(ext_dir):
remove_tree(ext_dir)
for lang in list_pre_installed_lang:
json_read = json.loads(wgets(url_api_lp, proxies=proxies))
for lp in json_read["results"]:
if lp["target_locale"] == lang:
url_lp = lp["url"] + "versions/"
break
# https://addons.mozilla.org/firefox/downloads/file/3605597/francais_language_pack-78.0buildid20200708170202-fx.xpi?src=dp-btn-primary
# https://addons.mozilla.org/firefox/downloads/file/3605535/english_gb_language_pack-78.0buildid20200708170202-fx.xpi?src=dp-btn-primary
for download_lp in bs_find_all(
url_lp,
"a",
"class",
"Button Button--action AMInstallButton-button Button--puffy",
proxies=proxies,
headers={"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:%s.0) Gecko/20100101 Firefox/%s.0" % (version_major, version_major)},
):
if version_major in download_lp["href"]:
url_dl_lp = download_lp["href"]
break
# Forming polices.json file
lp_name = "%s_language_pack.xpi" % lang
ext_settings_content = {
"langpack-%s@firefox.mozilla.org"
% lang: {"install_url": "file://%s\\%s_language_pack.xpi" % (ext_path, lang), "installation_mode": "force_installed"}
}
policies_content["policies"]["ExtensionSettings"].update(ext_settings_content)
print("Download url for language pack in %s is: %s" % (lang, url_dl_lp))
print("Downloading: " + lp_name)
wget(url_dl_lp, makepath(ext_dir, lp_name), proxies=proxies)
# Downloading dictionaries
# https://addons.mozilla.org/firefox/addon/dictionnaire-fran%C3%A7ais1/
# https://addons.mozilla.org/firefox/addon/british-english-dictionary-2/
url_api_dict_lang = "https://services.addons.mozilla.org/api/v3/addons/language-tools/?app=firefox&type=dictionary"
print("API used for language dictionaries is: %s" % url_api_dict_lang)
for lang in list_pre_installed_lang:
# Debuggin DE lang
if lang == "de":
lang = "de-DE"
json_read = json.loads(wgets(url_api_dict_lang, proxies=proxies))
for dict_lang in json_read["results"]:
if dict_lang["target_locale"] == lang:
url_dl_dict_lang = "https://addons.mozilla.org/firefox/downloads/latest/%s/latest.xpi" % dict_lang["slug"]
ext_add_on_id = dict_lang["guid"]
break
# https://addons.mozilla.org/firefox/downloads/latest/dictionnaire-fran%C3%A7ais1/latest.xpi
# https://addons.mozilla.org/firefox/downloads/latest/british-english-dictionary-2/latest.xpi
dict_lang_name = "%s_dictionary.xpi" % lang
print("Download url for dictionary in %s is: %s" % (lang, url_dl_dict_lang))
print("Downloading: " + dict_lang_name)
wget(url_dl_dict_lang, makepath(ext_dir, dict_lang_name), proxies=proxies)
ext_settings_dictionaries_content = {
"%s" % ext_add_on_id: {"install_url": "file://%s\\%s" % (ext_path, dict_lang_name), "installation_mode": "force_installed"}
}
policies_content["policies"]["ExtensionSettings"].update(ext_settings_dictionaries_content)
print("Creating %s file for language packs, dictionaries, extensions and configuration" % policies_file)
if isfile(policies_file):
remove_file(policies_file)
json_write_file(policies_file, policies_content, indent=2)
# Downloading extentions
# uBlock Origin
wget("https://addons.mozilla.org/firefox/downloads/latest/ublock-origin/latest.xpi", makepath(ext_dir, "ublock-origin.xpi"), proxies=proxies)
# Validating or not update-package-sources
return package_updated
e25fa7e21e81404e795af6909bfe71ea0367a6b02c583f5161c9a30b2defde16 : setup.py
127947a095d0d443707e67792a0f311ec812ba3f468295a41f198b3ffb800c5d : policies.json
c1ef8dcd8b208b998d57f858bef212f9977953842c685232eeee5deb0e2cc883 : update_package.py
e52b09f01a4df80c7aad660f304ea6ef23409930553bf7a7d3673c077411a494 : Firefox_Setup_105.0.exe
2dc82eade364831757e067169d0039e6e0c9b693f343ea9a62db709eb1942c9e : WAPT/icon.png
a5a97261381e1d0ad46ee15916abec9c2631d0201f5cc50ceb0197a165a0bbbf : WAPT/certificate.crt
438c4b56e8b42829730dab0c13d78037f9802c585d4ef8eb9b3a1e5a9f76e518 : luti.json
e2554f379a1812da2b43ff6e965dad06b11bac2ad3745b97c9acb64cb51f2c6f : extensions/it_language_pack.xpi
d9e5eca4bcdbeace5a9753c2000069b54adb7d4795561a0a6fabd533af91c92f : extensions/es-ES_language_pack.xpi
b9faab39dc5ad7688b26a192814037473c41ca8150b7b8df9de20c04518e2b40 : extensions/fr_language_pack.xpi
0be550c9a27c040d04ad71954dd9e9a4967a27d48ffa2cdfe91171752e152685 : extensions/ublock-origin.xpi
90b173ffdde34a77108152a5ff51879767b1dd84e0aa0dfb7b2bab94cd2e7f53 : extensions/it_dictionary.xpi
f0d06b24ecb016d3d7af0e48b6555a799a2a20a97f97c06f959c6a307ded5404 : extensions/en-GB_language_pack.xpi
97ab34fa0f69791d4d597bababde3240df197b18418342196d8c17d3f289d14b : extensions/de_language_pack.xpi
c2114a77cff2d15a0b81a90b2a1c4ae68c6799f0b37c9ec41f78867baa3585d5 : extensions/en-GB_dictionary.xpi
a7efef5e9fdf0f6460ac38951c1ca3766258d82647ad48bd87955bd5009ce9e0 : extensions/de-DE_dictionary.xpi
6d481a22587c73a0e9eb7cac90357583b36b7f0304897434ad5626ae6e4fddaa : extensions/es-ES_dictionary.xpi
e0e90b88b177dc1b268b019c8672eb1be943f12e174ad474dbdc46f0e6fbaa6f : extensions/fr_dictionary.xpi
c146956e2118d1b6252df804dabb73d7bc5625d2f6dddeea113508fd19fa7e84 : WAPT/control