tis-opencpn icon

opencpn

Silent install package for opencpn

5.12.4-1

  • package: tis-opencpn
  • name: opencpn
  • version: 5.12.4-1
  • categories: Utilities
  • maintainer: WAPT Team,Tranquil IT, Ingrid TALBOT
  • editor: OpenCPN Development Team
  • licence: opensource_free,wapt_public
  • locale: all
  • target_os: windows
  • impacted_process: opencpn-cmd,opencpn
  • architecture: all
  • signature_date:
  • size: 38.55 Mo
  • installed_size: 115.53 Mo
  • homepage : https://opencpn.org/

package           : tis-opencpn
version           : 5.12.4-1
architecture      : all
section           : base
priority          : optional
name              : opencpn
categories        : Utilities
maintainer        : WAPT Team,Tranquil IT, Ingrid TALBOT
description       : OpenCPN Chart Plotter Navigation
depends           : 
conflicts         : 
maturity          : PROD
locale            : all
target_os         : windows
min_wapt_version  : 2.3
sources           : https://github.com/OpenCPN/OpenCPN/releases
installed_size    : 115529998
impacted_process  : opencpn-cmd,opencpn
description_fr    : Navigation sur traceur de cartes OpenCPN
description_pl    : Nawigacja za pomocą plotera nawigacyjnego OpenCPN
description_de    : OpenCPN Kartenplotter Navigation
description_es    : OpenCPN Chart Plotter Navegación
description_pt    : Navegação OpenCPN Chart Plotter
description_it    : Navigazione con plotter cartografico OpenCPN
description_nl    : OpenCPN Kaartplotter Navigatie
description_ru    : Картплоттерная навигация OpenCPN
audit_schedule    : 
editor            : OpenCPN Development Team
keywords          : navigation
licence           : opensource_free,wapt_public
homepage          : https://opencpn.org/
package_uuid      : db5ed4a9-2b5a-4c0a-9864-b99b5589c971
valid_from        : 
valid_until       : 
forced_install_on : 
changelog         : https://github.com/OpenCPN/OpenCPN/blob/master/data/changelog
min_os_version    : 6.1
max_os_version    : 
icon_sha256sum    : d642b35ce6441158dc071677fb958ad01830271d373c332d64e48dec67f80834
signer            : Tranquil IT
signer_fingerprint: 8c5127a75392be9cc9afd0dbae1222a673072c308c14d88ab246e23832e8c6bb
signature_date    : 2025-09-21T21:00:17.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         : yC3KSmoTaJFnz7tJvu1myKFlstdjFm+ZamjUbY76PcmFZMUTALvhPBTGXOW+guq08I98y5olI50oNGgLD6AyfGHAu53CCoBgcXn+qntZy1k5a0V+GCB7YpE1psUGapIIo5hcNjHZ+PxEtJbG5gKRqmBo6kxGCaVjZ8EGSA31OX4U8Am1X9da4eY+niShfR2h4xbbdhgDPIIy+6iW72PrTb70ypsSCPkb2AOzuKFJk4z0BkKkuQrTmb8j7n8FRYjo88BP2GFWBr0uUgj23tzzcM4R6O/k6TmyHS6OEfLzjSWqy+T9fFvWati5aJ8Zqp009ftXOGuXh45mmGHlXXjGTQ==

# -*- coding: utf-8 -*-
'''
   "key":"OpenCPN 5.10.0-0+860222c",
   "name":"OpenCPN 5.10.0-0+860222c",
   "version":"5.10.0-0+860222c",
   "install_date":"2024-08-12 00:00:00",
   "install_location":"C:\\Program Files (x86)\\OpenCPN",
   "uninstall_string":"\"C:\\Program Files (x86)\\OpenCPN\\Uninstall 5.10.0-0+860222c.exe\"",
   "publisher":"opencpn.org",
   "system_component":0,
   "win64":False   
   
'''   

from setuphelpers import *


def install():
    bin_name = glob.glob("opencpn_*_setup.exe")[0]
    bin_version = bin_name.split("_")[1].split("+")[0]
    bin_key = bin_name.rsplit("_")[-2].rsplit(".")[-1]
    app_uninstallkey = "OpenCPN " + bin_version + "+" + bin_key
    
    # Uninstalling other versions of the software
    for to_uninstall in installed_softwares("opencpn"):
        if Version(to_uninstall["version"]) != Version(control.get_software_version()) or force:
            print("Removing: %s (%s)" % (to_uninstall["name"], to_uninstall["version"]))
            try:
                killalltasks(ensure_list(control.impacted_process))
                quiet_uninstall_string = (installed_softwares(uninstallkey=to_uninstall["key"])[0]["uninstall_string"] + r'/S')
                run(quiet_uninstall_string)
                wait_uninstallkey_absent(to_uninstall["key"])
            except Exception as e: 
                print(e)
                print("Remove failed: %s (%s)\nContinuing..." % (to_uninstall["name"], to_uninstall["version"]))

    install_exe_if_needed(
        bin_name,
        silentflags="/S",
        key= app_uninstallkey,
        min_version="",
        timeout=600,
        accept_returncodes=[0, 3010, 1223],
    )
    
    # Adding QuietUninstallString
    quiet_uninstall_string = installed_softwares(uninstallkey=app_uninstallkey)[0]["uninstall_string"] + " /S"
    register_uninstall(app_uninstallkey, quiet_uninstall_string=quiet_uninstall_string)

# -*- coding: utf-8 -*-
from setuphelpers import *
from setupdevhelpers import *


def update_package():
    # Declaring local variables
    package_updated = False
    proxies = get_proxies()
    if not proxies:
        proxies = get_proxies_from_wapt_console()
    api_url = "https://api.github.com/repos/OpenCPN/OpenCPN/releases/latest"
    download_dict = {
        "windows-all": "setup.exe",
    }
    download_str = download_dict[control.target_os + "-" + ensure_list(control.architecture)[0]]

    # Getting latest version information from official sources
    print("API used is: %s" % api_url)
    json_load = wgets(api_url, proxies=proxies, as_json=True)
    version = json_load["tag_name"].split("_")[1]
    for to_download in json_load["assets"]:
        if download_dict[control.target_os + "-" + ensure_list(control.architecture)[0]] in to_download["name"]:
            download_url = to_download["browser_download_url"]
            latest_bin = to_download["name"]
            break

    # Downloading latest binaries
    print("Latest %s version is: %s" % (control.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)

    # Deleting outdated binaries
    remove_outdated_binaries(latest_bin)
    # arch_list = ensure_list(control.architecture)
    # remove_outdated_binaries(version, filename_contains=("x64" if "x64" in arch_list else "x86" if "x86" in arch_list else []))

    # Changing version of the package
    if Version(version, 4) > Version(control.get_software_version(), 4):
        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 update-package-sources
    return package_updated

    # # Changing version of the package and validating update-package-sources
    # return complete_control_version(control, version)

38d056ab130f7bf7c481c12636a4e9959de36561d3dfcbe54c6e3571bc0c1dc3 : WAPT/certificate.crt
e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 : WAPT/changelog.txt
7d63f27087d649330493f867114e936dbbed553619cb198bb6ba5a1b936cd56c : WAPT/control
d642b35ce6441158dc071677fb958ad01830271d373c332d64e48dec67f80834 : WAPT/icon.png
8bf94eeeab49164aa82f2cf40a00dc83144319ab7d200ed352dc4a89442f93bd : luti.json
e949f55de57611afe2fc0dad5a8ac33795c46ba488cb40ca07b65f639a07b8aa : opencpn_5.12.4-0+3720.37fd0cd_setup.exe
b425a04387b99f8e46ce885afcf90b64fd0e0eb17f71752415bb28ef97eb942c : setup.py
63d46ce5d223cef8b02fcd0c17347f8d809ebd582ec36d604c23d445fd1fbab0 : update_package.py