tis-keepass icon

KeePass

Silent install package for KeePass

2.57.1-32

  • package: tis-keepass
  • name: KeePass
  • version: 2.57.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: 5.99 Mo
  • homepage : https://keepass.info/

package           : tis-keepass
version           : 2.57.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          : PROD
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      : ea5c5478-cb24-4cd6-85da-be21a3983015
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            : Tranquil IT
signer_fingerprint: 8c5127a75392be9cc9afd0dbae1222a673072c308c14d88ab246e23832e8c6bb
signature_date    : 2024-10-13T15:02:04.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         : Yfkoj9+8cWiuqiqYDnR83FK1K4Q09ZQ6gXLowfQJd0XTtgNeSqsZCLZXMZOUJXjSZE1eoFHq2iuVGaRI+neBhfkdLSJ+96xm99XNLOJM0HUm9eOCpSScgkK0m1nBaKBfux5cpKRCMdKL2JPHzcnqhQjV6yNAtjKCjCfH8aDE3kZEwCqIgsy3cUgDUaAy8ASz7n1Uyps0YMG4jS4+0iSCcooBAmr+4MvgkbGYcWyAqUEAVXYenRkg3b0nHYkZcOIMU+5oTFS7lSHysrC4XyzhE7YUXePgAtHwkwQFXYu17kVgyBcyQrqz0Uhji78ZHMg0al/4hzMm82QXdlsVA1cqaw==

# -*- 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
e7964e59be570321f574eecb77ea7a6d9933003daf988a8faf0a9d27d769869f : Basque.lngx
19b61e0e5b0b09733eb911cda3b622401dd93676f1ab9426cdaed440af3c8f8e : Bulgarian.lngx
8651a74921b9c14060342ddee551e2b0af0c56a8cd520a371d4ae5c03468fde1 : Catalan.lngx
c3f47cc4d56210e91fe51a53c3102c539dc851719fd9842ed917bf1d23b790c9 : Chinese_Simplified.lngx
415abe85183fcd620bbc37f671b807913dd100bb94d5d8ca965fc6951d5e90df : Chinese_Traditional.lngx
eb958eca18e1d01c8537c4fd34ed1a1dac4d8e50983972be98a53fe11c30238f : Croatian.lngx
42038fd55c6b7ce08641e85647fd700b78bb22fa998735a6c31b09f7920f1134 : Czech.lngx
5b08160921a667690f6ddb95a014ec1964956ef60820f454eda7d02f8df97f7a : Danish.lngx
be1ea235b55bdbdbf1777f454e8d84a87042b72b1d3a8741b82f540149ab8053 : Dutch.lngx
c7cd1dd7628b787b7abef6d53f8ab81f014f65904a600ce13bb0fdcf5f3562f7 : Estonian.lngx
02c92d70eee54ac8e435b7b38d9b53ae6aff42b2427b311118f0aed24f0808bc : Finnish.lngx
941bd1a9c56b306e487b10e9c995937c0f2823abfe4509c25f2e25a13d3ae375 : French.lngx
f087d18083da531245f8dd1fabd3150c007ae50fec81004aa93ab9ab02426a1d : German.lngx
ea4d5c2bc2c53f59681aafc2a7cf12e8bac5b4cefc812cd67ba041df1b7e025c : Greek.lngx
24a200fd9727ee54fc37b7be79afa4d2d463833feeb53df482ea9806f3e5d69e : Hebrew.lngx
b7cf5073b15b1a74709ce0cb74acc84316523d1f9712c47d92394dad1fb7bb19 : Hungarian.lngx
e207a38c6b2116af8a70b3e0d9517f6a76ebb590701236489f55068f724210ea : Icelandic.lngx
f2480ea0741985a553eeed0fa6be620f4101e9fe2c446d105df86e15a446a249 : Indonesian.lngx
589227bb266be8354c247312c525bb8e5d1b90397312d7744aef95ef2631a61d : Italian.lngx
041a6f63d447dd04913a3b8497f30c54afc97a475c79e593ad92a35b24f5a6db : Japanese.lngx
96b4fca5e148b44af908c5b0d98daa526cb4106c68950eac1c2ce3e40eb44c9c : KeePass-2.57.1-Setup.exe
708745c5e210a151c9251ed669e89b55f4e1303b20be298b6dc9ebf7b6050b28 : Korean.lngx
1de9a47dddbb6d154d86a7fbd72df882d5fbe58f213639c1ed2615742fc2e570 : Latin.lngx
99349a9cc5128dcae56a4c545cb2267b646d58f86dee8ded4d130fa08f573b7c : Latvian.lngx
c78baa0955a28f066f0ee66e3af58e1b343569c5c5f60c76916caa9fb0ff2daf : Lithuanian.lngx
a750e3244f28827c684f46612db9503f533e2e0b3f270e4c2fb899f3c6dd7875 : Norwegian_NB.lngx
1a77908455ff975ff57455c750f063e0a8de404d7c9af36df0724bc73e49ac9f : Pashto.lngx
90ae0e6404157b750ca852d380d48b313dd8683f3c44b83171ff6886bc1a9573 : Persian.lngx
746365735f712c248d8404cb4c047a24c2f96893b3163a45b4d18edcf00c2c37 : Polish.lngx
b05123a4e362704e36de68c3f38cd65ec444c775798ef6c9db3a17f49257fe2b : Portuguese_PT.lngx
930d5de1af9ee238465097b391bd928df442bd494ef6531ff570d488dc79ec0e : Romanian.lngx
b60f374f400c2b7df59a1d8ab939dbda545020c8a34f6ef8a0f8eadf039953a6 : Russian.lngx
6358c2ef605a6b69939842e37c0f5afe996ceb3663037d64e96114c17114eb0d : Serbian_Cyrillic.lngx
19bff17c6f64e697c4d9acc7310018216446e9e8e9b232951b0961682a8014af : Serbian_Latin.lngx
8cc24416bc185b85d4bb6624d012e1543abf4247d3827b52f3f70e6237dc7b92 : Slovak.lngx
26889a61f870a58ad58c6c04a00369e06e2186ee79656a3fe67de3811e1cdcda : Slovenian.lngx
9ef6404807ac352457ddd69db30c778b81b04c51a43ebb6ffcea18f3bff79ad2 : Spanish.lngx
6ebf9bf7cc13c99815f49f1a9b7d71f263bc853b928f191465b3221b1c08bac9 : Swedish.lngx
fa0e4bf77c9f7eaba60d711c0d72d25e4a4bb48cad74ea4a186175906256f25d : Tamil.lngx
17bb60fd747d4a53b802adc795c24a4908dba82d9f956f943fc8962cfe748206 : Thai.lngx
2dcfb5507cdd11752c9eac1f2f0299afdf645672f1c14ef2ad1f14a07b164c39 : Turkish.lngx
8af0d820dcb9076f4e82de7aaa867ededce50369764ce5bfb897713d59652e20 : Ukrainian.lngx
f5f302ae02afba0e90cc6dc915b6c944c4e9da508572666ac742a56290cde9c6 : Vietnamese.lngx
38d056ab130f7bf7c481c12636a4e9959de36561d3dfcbe54c6e3571bc0c1dc3 : WAPT/certificate.crt
5ba44f6a1bc9e6ff170d71de9d36b8c5623342806148bdecfeee7f9001e1d315 : WAPT/control
9855b4f581d2abce7c7418d436092535d7e01d4da9096bcdbae39edc9c7d9f1f : WAPT/icon.png
f3ee35e130fed0e12f26156f6f5e3ddb3b01399f174971ae27dda7b3f614e76a : luti.json
a2a5e96659db8a5ba537ddfdddbc6a5ccd0c4a62a71c7fe1cd685d95bb2708fb : setup.py
d4acfa2d17bc4b0f40ea6a9f996aeb4129c162be721c2d20d2b905de68a261f3 : update_package.py