KeePass
Paquet d’installation silencieuse pour KeePass
2.61.1-32
Security
Utilities
Security
Utilities
Les paquets PREPROD sont des paquets construits via LUTI.
Ils restent généralement 5 jours en PREPROD, après quoi un deuxième scan VirusTotal est effectué pour vérifier que le status n'a pas changé.
Si le paquet réussit ce dernier contrôle, il est promu en PROD et publié sur le store.
- package: tis-keepass
- name: KeePass
- version: 2.61.1-32
- categories: Security,Utilities
- maintainer: WAPT Team,Tranquil IT,Jimmy PELÉ,Simon Fonteneau
- editor: Dominik Reichl
- licence: GPLv2
- locale: all
- target_os: windows
- impacted_process: KeePass
- architecture: all
- signature_date:
- size: 6.61 Mo
- homepage : https://keepass.info/
package : tis-keepass
version : 2.61.1-32
architecture : all
section : base
priority : optional
name : KeePass
categories : Security,Utilities
maintainer : WAPT Team,Tranquil IT,Jimmy PELÉ,Simon Fonteneau
description : KeePass Password Safe is a free and open-source password manager
depends :
conflicts :
maturity : PREPROD
locale : all
target_os : windows
min_wapt_version : 2.0
sources : https://sourceforge.net/projects/keepass/
installed_size :
impacted_process : KeePass
description_fr : KeePass Password Safe est un gestionnaire de mots de passe publié sous licence libre
description_pl : KeePass Password Safe to darmowy i open-source'owy menedżer haseł
description_de : KeePass Password Safe ist ein kostenloser und quelloffener Passwortmanager
description_es : KeePass Password Safe es un gestor de contraseñas gratuito y de código abierto
description_pt : KeePass Password Safe é um gestor de senhas gratuito e de código aberto
description_it : KeePass Password Safe è un gestore di password gratuito e open source
description_nl : KeePass Password Safe is een gratis en open-source wachtwoordmanager
description_ru : KeePass Password Safe - бесплатный менеджер паролей с открытым исходным кодом
audit_schedule :
editor : Dominik Reichl
keywords : password,manager,keepass,keep,pass,passwords
licence : GPLv2
homepage : https://keepass.info/
package_uuid : e2798af0-bcd1-4858-83bf-92c4e1fce8cd
valid_from :
valid_until :
forced_install_on :
changelog : https://keepass.info/news/news_all.html
min_os_version :
max_os_version :
icon_sha256sum : 9855b4f581d2abce7c7418d436092535d7e01d4da9096bcdbae39edc9c7d9f1f
signer : test
signer_fingerprint: b82fc8ef4a4475c0f69ac168176c2bfc58f572eb716c4eadd65e4785c155dd8e
signature_date : 2026-05-01T13:11:23.000000
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
signature : o625rTuQbyjZ7EHBz5WF0wO2qJGr+QOVjDsO93MYY1OEpdHl9f2dsyBAGtcsDSrMaJ23M1SvF5gzh3ICsRfs6e9mpAHTqNoJ42Bpx03QaGLVEXYVTDZDCVZ1E0IJRlABDDbXS/kNpnDCHCS/IeBedvzpuh0bPvB0dPaxN1aZi0AJGeTI5Xop7WC4apyYaWk2Dtxf8uW9C3D4K+Cyby3PekUKaJPfloMKISBQi0pw6vZT/GK9WMbbvsmaowcqh6znhV+V/tENNxsFBBYDSA7JCun8ReDzwB+Su34cCR7caQaMjWC4aPcgGAw4qIkMgOnKqGf1d54mT2Kcs/l8UJy+VA==
# -*- coding: utf-8 -*-
from setuphelpers import *
uninstallkey = []
def install():
versionpaquet = control["version"].split("-", 1)[0]
install_exe_if_needed(
"KeePass-%s-Setup.exe" % versionpaquet,
silentflags="/VERYSILENT",
key="KeePassPasswordSafe2_is1",
min_version=versionpaquet,
killbefore=["KeePass.exe"],
)
keysoftinfo = installed_softwares("KeePassPasswordSafe2_is1")
for info in keysoftinfo:
installlocation = info["install_location"]
for lf in glob.glob("*.lngx"):
if isfile(makepath(installlocation, "Languages", lf)):
remove_file(makepath(installlocation, "Languages", lf))
filecopyto(lf, makepath(installlocation, "Languages"))
def session_setup():
if not isdir(makepath(application_data, "KeePass")):
mkdirs(makepath(application_data, "KeePass"))
config = makepath(application_data, "KeePass", "KeePass.config.xml")
loc = get_language().lower()
if loc in list_locales:
LanguageFile = r"""
<LanguageFile>%s</LanguageFile> """ % (
list_locales[loc]
)
else:
LanguageFile = ""
if not isfile(config):
data = (
r"""<?xml version="1.0" encoding="utf-8"?>
<Configuration xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Meta>
<PreferUserConfiguration>false</PreferUserConfiguration>
<OmitItemsWithDefaultValues>true</OmitItemsWithDefaultValues>
</Meta>
<Application>%s
<LastUpdateCheck>2017-06-13T19:44:53Z</LastUpdateCheck>
<LastUsedFile>
<Path />
<CredProtMode>Obf</CredProtMode>
<CredSaveMode>NoSave</CredSaveMode>
</LastUsedFile>
<MostRecentlyUsed>
<MaxItemCount>12</MaxItemCount>
<Items />
</MostRecentlyUsed>
<WorkingDirectories />
<Start>
<CheckForUpdate>false</CheckForUpdate>
<CheckForUpdateConfigured>true</CheckForUpdateConfigured>
</Start>
<FileOpening />
<FileClosing />
<TriggerSystem>
<Triggers />
</TriggerSystem>
</Application>
<Logging />
<MainWindow>
<X>309</X>
<Y>81</Y>
<Width>662</Width>
<Height>513</Height>
<SplitterHorizontalFrac>0.8333</SplitterHorizontalFrac>
<SplitterVerticalFrac>0.25</SplitterVerticalFrac>
<Layout>Default</Layout>
<ToolBar />
<EntryView />
<TanView />
<EntryListColumnCollection>
<Column>
<Type>Title</Type>
<Width>90</Width>
</Column>
<Column>
<Type>UserName</Type>
<Width>90</Width>
</Column>
<Column>
<Type>Password</Type>
<Width>90</Width>
<HideWithAsterisks>true</HideWithAsterisks>
</Column>
<Column>
<Type>Url</Type>
<Width>90</Width>
</Column>
<Column>
<Type>Notes</Type>
<Width>90</Width>
</Column>
</EntryListColumnCollection>
<EntryListColumnDisplayOrder>0 1 2 3 4</EntryListColumnDisplayOrder>
<ListSorting>
<Order>Ascending</Order>
</ListSorting>
</MainWindow>
<UI>
<TrayIcon />
<Hiding />
<StandardFont>
<Family>Microsoft Sans Serif</Family>
<Size>8.25</Size>
<GraphicsUnit>Point</GraphicsUnit>
<Style>Regular</Style>
<OverrideUIDefault>false</OverrideUIDefault>
</StandardFont>
<PasswordFont>
<Family>Courier New</Family>
<Size>8.25</Size>
<GraphicsUnit>Point</GraphicsUnit>
<Style>Regular</Style>
<OverrideUIDefault>false</OverrideUIDefault>
</PasswordFont>
<BannerStyle>WinVistaBlack</BannerStyle>
<DataEditorFont>
<Family>Microsoft Sans Serif</Family>
<Size>8.25</Size>
<GraphicsUnit>Point</GraphicsUnit>
<Style>Regular</Style>
<OverrideUIDefault>false</OverrideUIDefault>
</DataEditorFont>
<UIFlags>0</UIFlags>
<KeyCreationFlags>0</KeyCreationFlags>
<KeyPromptFlags>0</KeyPromptFlags>
</UI>
<Security>
<WorkspaceLocking>
<LockAfterTime>0</LockAfterTime>
<LockAfterGlobalTime>0</LockAfterGlobalTime>
</WorkspaceLocking>
<Policy />
<MasterPassword>
<MinimumLength>0</MinimumLength>
<MinimumQuality>0</MinimumQuality>
</MasterPassword>
</Security>
<Native />
<PasswordGenerator>
<AutoGeneratedPasswordsProfile>
<GeneratorType>CharSet</GeneratorType>
<Length>20</Length>
<CharSetRanges>ULD_______</CharSetRanges>
</AutoGeneratedPasswordsProfile>
<LastUsedProfile>
<GeneratorType>CharSet</GeneratorType>
<Length>20</Length>
<CharSetRanges>ULD_______</CharSetRanges>
</LastUsedProfile>
<UserProfiles />
</PasswordGenerator>
<Defaults>
<OptionsTabIndex>4</OptionsTabIndex>
<SearchParameters>
<ComparisonMode>InvariantCultureIgnoreCase</ComparisonMode>
</SearchParameters>
<KeySources />
</Defaults>
<Integration>
<HotKeyGlobalAutoType>393281</HotKeyGlobalAutoType>
<HotKeySelectedAutoType>0</HotKeySelectedAutoType>
<HotKeyShowWindow>393291</HotKeyShowWindow>
<HotKeyEntryMenu>0</HotKeyEntryMenu>
<UrlSchemeOverrides>
<BuiltInOverridesEnabled>1</BuiltInOverridesEnabled>
<CustomOverrides />
</UrlSchemeOverrides>
<AutoTypeAbortOnWindows />
<ProxyType>System</ProxyType>
<ProxyAuthType>Auto</ProxyAuthType>
</Integration>
<Custom />
</Configuration>"""
% LanguageFile
)
else:
fichier = open(config, "r")
data = fichier.read()
fichier.close()
# force french
if not "<LanguageFile>" in data:
languagefile = r"""<Application>%s""" % LanguageFile
data = data.replace("<Application>", languagefile)
# disable update
if "<CheckForUpdate>true</CheckForUpdate>" in data:
data = data.replace("<CheckForUpdate>true</CheckForUpdate>", "<CheckForUpdate>false</CheckForUpdate>")
fichier = open(config, "w")
fichier.write(data)
fichier.close()
list_locales = {
"ar": "Arabic.lngx", # Arabic
"ca": "Catalan.lngx", # Catalan
"zh": "Chinese_Simplified.lngx", # Chinese - Simplified
"zh": "Chinese_Traditional.lngx", # Chinese - Traditional
"co": "French.lngx", # Corsican - France
"hr": "Croatian.lngx", # Croatian
"cs": "Czech.lngx", # Czech
"da": "Danish.lngx", # Danish
"nl": "Dutch.lngx", # Dutch
"et": "Estonian.lngx", # Estonian
"fi": "Finnish.lngx", # Finnish
"fr": "French.lngx", # French
"de": "German.lngx", # German - Germany
"el": "Greek.lngx", # Greek
"he": "Hebrew.lngx", # Hebrew
"hu": "Hungarian", # Hungarian
"is": "Icelandic.lngx", # Icelandic
"id": "Indonesian.lngx", # Indonesian
"it": "Italian.lngx", # Italian - Italy
"ja": "Japanese.lngx", # Japanese
"ko": "Korean.lngx", # Korean
"lv": "Latvian.lngx", # Latvian
"lt": "Lithuanian.lngx", # Lithuanian
"dsb": "German.lngx", # Lower Sorbian - Germany
"nb": "Norwegian_NB.lngx", # Norwegian - Bokmal
"nn": "Norwegian_NB.lngx", # Norwegian - Nynorsk
"ps": "Pashto.lngx", # Pashto - Afghanistan
"fa": "Persian.lngx", # Persian
"pl": "Polish.lngx", # Polish
"pt": "Portuguese_PT.lngx", # Portuguese - Brazil
"ro": "Romanian.lngx", # Romanian - Romania
"ru": "Russian.lngx", # Russian
"sr": "Serbian_Cyrillic.lngx", # Serbian
"sk": "Slovak.lngx", # Slovak
"sl": "Slovenian.lngx", # Slovenian
"es": "Spanish.lngx", # Spanish - Spain
"sv": "Swedish.lngx", # Swedish
"tr": "Turkish.lngx", # Turkish
"ug": "Arabic.lngx", # Arabic
"uk": "Ukrainian.lngx", # Ukrainian
"wen": "German.lngx", # Upper Sorbian - Germany
"vi": "Vietnamese.lngx", # Vietnamese
}
# -*- coding: utf-8 -*-
from setuphelpers import *
import platform
import requests
import time
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}
url = requests.head("https://sourceforge.net/projects/keepass/files/latest/download?source=files", proxies=proxy).headers["Location"]
dstzip = requests.head(url, proxies=proxy).headers["Location"]
filename = dstzip.rsplit("/", 1)[1]
print(filename)
version = filename.replace("KeePass-", "").split(".zip")[0]
filenameexe = "KeePass-%s-Setup.exe" % version
dstexe = dstzip.replace(filename, filenameexe)
print("Latest Version : " + version)
exes = glob.glob("*.exe")
for fn in exes:
if fn != filenameexe:
remove_file(fn)
if not isfile(filenameexe):
print("Downloading %s " % (filenameexe))
wget(dstexe, filenameexe, proxies=proxy)
else:
print("Already up to date, skipped")
control.version = "%s-%s" % (version, int(control.version.split("-", 1)[1]) + 1)
control.save_control_to_wapt()
print("Changing version to " + control.version + " in WAPT\\control")
print("Update package done. You can now build-upload your package")
for lngx in glob.glob("*.lngx"):
remove_file(lngx)
for line in wgets("https://keepass.info/translations.html", proxies=proxy).splitlines():
if "KeePass-%s" % version[:2] in line:
lfd = line.replace('<td><a href="', "").replace('" target="_blank">', "")
if not "-Help-" in lfd.rsplit("/", 1)[1]:
if not lfd.startswith('http'):
lfd = "https://keepass.info/" + lfd
# BUG
if not "Portuguese_BR" in lfd.rsplit("/", 1)[1]:
try:
print("Try Download %s" % lfd)
wget(lfd, lfd.rsplit("/", 1)[1], connect_timeout=30, proxies=proxy)
except:
# Try Again
wget(lfd, lfd.rsplit("/", 1)[1], connect_timeout=30, proxies=proxy)
unzip(lfd.rsplit("/", 1)[1], target=".")
remove_file(lfd.rsplit("/", 1)[1])
time.sleep(2)
84b0d0804fe333d5da6326775189eb4aec0297fc7fbd2ec5ca9b671914d1084f : Arabic.lngx
89a3f8e9df98b31a1298c7f0705e269951bd7b15d2bee00ab53da5c0b77b24f7 : Basque.lngx
b8d1fc1100f0daf45be62dc3d89b0bf8530322dcda0e3644bf2014a385639e68 : Bulgarian.lngx
45152d993e5dd6769d3c6b84cc69f50ebf4bd281afaff4deb6dc45ed12dde89f : Catalan.lngx
b79ef62e211e227abf53d664f18bce7837559ab774e49ecd33fa8198c3a61ff7 : Chinese_Simplified.lngx
748c4709e966e6aa617d1fd5fec9dc0d18038a6509425f9b36f3e22d5356aaa1 : Chinese_Traditional.lngx
eb958eca18e1d01c8537c4fd34ed1a1dac4d8e50983972be98a53fe11c30238f : Croatian.lngx
b1e192a00f1bea420b5b39cfeb769a402ad444e12612f5ce43125a143dcaff73 : Czech.lngx
5b08160921a667690f6ddb95a014ec1964956ef60820f454eda7d02f8df97f7a : Danish.lngx
e6759d413380a31a19e6602226f93e0f9c66943af3d6d39e2da5543ae7a9ed9d : Dutch.lngx
c7cd1dd7628b787b7abef6d53f8ab81f014f65904a600ce13bb0fdcf5f3562f7 : Estonian.lngx
48243f754e9e9a04e61dced2dde5f14e189a6c13b40d6400aeb49748372c23b4 : Finnish.lngx
89e83263b9e49f57a3469f29d8318eedfa06102f0c6d14103a4fb2b72b2b83a1 : French.lngx
06873fbb26c84fd5c7bc66ab320e3cb5787a77074b752b3f4c59267dcb098d00 : Galician.lngx
2d4f41b895b4f077573b7832e0e8d5f85019ee66ffb406ea7c55527354435dd4 : German.lngx
4b60fd0454b35efe0e4a2d0e391669bde1af1fd3a7a9a100b65428b7e876f59f : Greek.lngx
24a200fd9727ee54fc37b7be79afa4d2d463833feeb53df482ea9806f3e5d69e : Hebrew.lngx
eeef95ef565bb56231e47be6ef78dfe527dba3b71d9bfa96da638a4ef2aa387e : Hungarian.lngx
e207a38c6b2116af8a70b3e0d9517f6a76ebb590701236489f55068f724210ea : Icelandic.lngx
f2480ea0741985a553eeed0fa6be620f4101e9fe2c446d105df86e15a446a249 : Indonesian.lngx
8d1fa0d641d9f9c3022b439df6806f4305e595d4c0b88997b17d9c47e8a162cc : Italian.lngx
ebed34dc84bc88e88a611e03748e2ce0c7fce1161937fbba56f52785ce58b099 : Japanese.lngx
9923a8b228fe3d8fbe46979991f45d7e0d63f649766596da191eb879b293d38d : KeePass-2.61.1-Setup.exe
9db45964eece251b2b0a5567cf53a2a4a6c92b0cd312941f9e742ca26b8fa0ec : Korean.lngx
1de9a47dddbb6d154d86a7fbd72df882d5fbe58f213639c1ed2615742fc2e570 : Latin.lngx
751feb19020a5f495b9c6f185933be1da451fde0fbef71f12aecd5be925cd464 : Latvian.lngx
58dbdf88ff5a7edab8502ae4374fdba4772ee8dca59a3aeb8ae5fb3be7e65980 : Lithuanian.lngx
8d140964b324359a420ff91814565e523a9c5343623f210dfe54e78db6e6d37b : Norwegian_NB.lngx
1a77908455ff975ff57455c750f063e0a8de404d7c9af36df0724bc73e49ac9f : Pashto.lngx
90ae0e6404157b750ca852d380d48b313dd8683f3c44b83171ff6886bc1a9573 : Persian.lngx
3b9db0a6e985d42873891841bad7fc5e75021ef737d07ac5d11668bfe7c264ac : Polish.lngx
9af4597ba8475755247999e458b05530dfed1f44d6b92b0fc44f396ec09da5b3 : Portuguese_PT.lngx
930d5de1af9ee238465097b391bd928df442bd494ef6531ff570d488dc79ec0e : Romanian.lngx
1c0a5a278a8326e64899d1143c464a8e1282eb6694ab4ba906aedad0ccf94bd7 : Russian.lngx
c8c7ef80ad3c8b16ad1f7aa58bc8091a4ea6a05f6da6539d6f8dcba5bac578c1 : Serbian_Cyrillic.lngx
1e7220953f24ef3f424a0f5f53959c387d76251c23c3711724cfa50172be1d88 : Serbian_Latin.lngx
4aa7efc02816954c887f64a1621f07092acc22ac19330aa8cef981d0e9a284d7 : Slovak.lngx
26889a61f870a58ad58c6c04a00369e06e2186ee79656a3fe67de3811e1cdcda : Slovenian.lngx
1e89b17c9052e5de44db163e98375a7e867812b2079d4a348e5a7f25ec52e95a : Spanish.lngx
6ebf9bf7cc13c99815f49f1a9b7d71f263bc853b928f191465b3221b1c08bac9 : Swedish.lngx
fa0e4bf77c9f7eaba60d711c0d72d25e4a4bb48cad74ea4a186175906256f25d : Tamil.lngx
eabfacd997b72a1d02b31e3ea8c06bc5d406e4a8d0c1c1de0b336029358d2169 : Thai.lngx
2dcfb5507cdd11752c9eac1f2f0299afdf645672f1c14ef2ad1f14a07b164c39 : Turkish.lngx
8c24bb201b5ce93a7989bf0e50571a8ebd5a3dd476bc415b1ae8d1cdd0143b7b : Ukrainian.lngx
f5f302ae02afba0e90cc6dc915b6c944c4e9da508572666ac742a56290cde9c6 : Vietnamese.lngx
01ca7fe94636e5a08fcb73849d3b5df25d51e2c82f4dd1a08f01798b25899819 : WAPT/certificate.crt
9683d97cdf7adcafaf51c4cddc2c057e5d7bd39436c9da87fbeeb214b6747222 : WAPT/control
9855b4f581d2abce7c7418d436092535d7e01d4da9096bcdbae39edc9c7d9f1f : WAPT/icon.png
4d0e00134beb4087b03b406b984ec9722a488626ec44bdb2bc7db74759ceac65 : luti.json
a2a5e96659db8a5ba537ddfdddbc6a5ccd0c4a62a71c7fe1cd685d95bb2708fb : setup.py
d4acfa2d17bc4b0f40ea6a9f996aeb4129c162be721c2d20d2b905de68a261f3 : update_package.py