- package: tis-putty
- name: PuTTY
- version: 0.83-12
- categories: System and network
- maintainer: WAPT Team,Tranquil IT,Jimmy PELÉ
- editor: Simon Tatham
- licence: opensource_free,cpe:/a:mit:x11_license,wapt_public
- locale: all
- target_os: windows
- impacted_process: pageant,plink,pscp,psftp,putty,puttygen
- architecture: x86
- signature_date:
- size: 3.52 Mo
- installed_size: 5.79 Mo
- homepage : https://www.chiark.greenend.org.uk/~sgtatham/putty/
package : tis-putty
version : 0.83-12
architecture : x86
section : base
priority : optional
name : PuTTY
categories : System and network
maintainer : WAPT Team,Tranquil IT,Jimmy PELÉ
description : PuTTY is a free and open-source terminal emulator, serial console and network file transfer application
depends :
conflicts :
maturity : PROD
locale : all
target_os : windows
min_wapt_version : 2.3
sources : https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html
installed_size : 5785289
impacted_process : pageant,plink,pscp,psftp,putty,puttygen
description_fr : PuTTY est un émulateur de terminal doublé d'un client pour les protocoles SSH, Telnet, rlogin, et TCP brut
description_pl : PuTTY to darmowy i open-source'owy emulator terminala, konsola szeregowa i aplikacja do przesyłania plików w sieci
description_de : PuTTY ist ein kostenloser und quelloffener Terminalemulator, eine serielle Konsole und eine Anwendung zur Dateiübertragung im Netzwerk
description_es : PuTTY es un emulador de terminal gratuito y de código abierto, una consola serie y una aplicación de transferencia de archivos en red
description_pt : PuTTY é um emulador de terminal gratuito e de código aberto, consola série e aplicação de transferência de ficheiros em rede
description_it : PuTTY è un emulatore di terminale, una console seriale e un'applicazione per il trasferimento di file in rete gratuita e open-source
description_nl : PuTTY is een gratis en open-source terminal emulator, seriële console en netwerk bestandsoverdracht applicatie
description_ru : PuTTY - это бесплатный эмулятор терминала с открытым исходным кодом, последовательная консоль и приложение для передачи файлов по сети
audit_schedule :
editor : Simon Tatham
keywords : putty,tty,terminal,emulator,console,network,scp,ssh,telnet,rlogin
licence : opensource_free,cpe:/a:mit:x11_license,wapt_public
homepage : https://www.chiark.greenend.org.uk/~sgtatham/putty/
package_uuid : 231f36b2-3d71-4ba8-bdda-dc730634b521
valid_from :
valid_until :
forced_install_on :
changelog : https://www.chiark.greenend.org.uk/~sgtatham/putty/changes.html
min_os_version : 5.1
max_os_version :
icon_sha256sum : 11fe77671fd02e8f58809a2ab1edd6d6801233b5597015ff7452d69b21ab6acb
signer : Tranquil IT
signer_fingerprint: 8c5127a75392be9cc9afd0dbae1222a673072c308c14d88ab246e23832e8c6bb
signature_date : 2025-05-05T13:04:47.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 : OqK/fLchrQpnV7enHEZ5HnLRTYcfe2hUnkHk6hz+UaVsc73WKhdL/Ks4uSq5nguxPdg933elyeZKzSKCgKFzeYIh6a/klEKt9ohk066M5Xo1LSBZ60KBLiMmXxHcZJicZ5ERGx+rvpoTSSYUbYdUrqrDKgyv5ONYljald90XjvIsAJFh5GLMaPLbDoRQvi7VuhxtHef/b7n1DG1Qw1JRvaadRxNCDoBVCu4R3PPmxPckZixL+7SJjFby5hBye7ckBbePwa1mqFKETwTcCH0OGoLhke3+tpkp93oimsE7KeK8We0aOJo1UgTtKlTFEAvIs9ssHzACi6HhufFMm8cjlQ==
# -*- coding: utf-8 -*-
from setuphelpers import *
import time
import winshell
def remove_putty_if_install_with_exe():
if uninstall_key_exists("PuTTY_is1"):
killalltasks(control.impacted_process.split(","))
# uninstaller cannot be silenced by design (cf putty.iss), so we remove stuff by hand
# run('"%s" /VERYSILENT /SUPPRESSMSGBOXES' % os.path.join(programfiles32,'putty','unins000.exe'))
if isdir(install_location("PuTTY_is1")):
remove_tree(install_location("PuTTY_is1"))
registry_delete(HKEY_LOCAL_MACHINE, "SOFTWARE\\Classes\\PuTTYPrivateKey", None)
if iswin64():
registry_delete(HKEY_LOCAL_MACHINE, "SOFTWARE\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\PuTTY_is1", None)
else:
registry_delete(HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\PuTTY_is1", None)
putty_link = makepath(winshell.programs(common=1), "PuTTY")
if isdir(putty_link):
remove_tree(putty_link)
unregister_uninstall("Putty_is1")
def install():
# Uninstalling the EXE versions of the software
remove_putty_if_install_with_exe()
# Initializing variables
package_version = control.version.split("-", 1)[0]
bin_name = glob.glob("putty-*-installer.msi")[0]
# Force uninstalling older versions of the software
for to_uninstall in installed_softwares(name="^PuTTY "):
if to_uninstall["publisher"]=="Simon Tatham" and Version(to_uninstall["version"]) < Version(control.get_software_version()) or force:
print("Removing: %s (%s)" % (to_uninstall["name"], to_uninstall["version"]))
killalltasks(ensure_list(control.impacted_process))
try:
run(uninstall_cmd(to_uninstall["key"]))
wait_uninstallkey_absent(to_uninstall["key"], max_loop=60, raise_on_timeout=True)
except Exception as e:
print(e)
time.sleep(60)
unregister_uninstall(to_uninstall["key"], win64app=to_uninstall["win64"])
if isdir(to_uninstall["install_location"]):
remove_tree(to_uninstall["install_location"])
# Installing the package
install_msi_if_needed(
bin_name,
min_version=package_version,
)
def session_setup():
remove_user_programs_menu_folder("PuTTY (64-bit)")
remove_user_programs_menu_folder("PuTTY")
def uninstall():
remove_programs_menu_folder("PuTTY (64-bit)")
remove_programs_menu_folder("PuTTY")
def remove_user_programs_menu_folder(folder):
"""Remove a folder from the start menu of current user
Args:
folder(str): folder to remove
"""
user_programs_menu_folder = makepath(winshell.programs(common=0), folder)
if isdir(user_programs_menu_folder):
remove_tree(user_programs_menu_folder)
# -*- 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()
download_dict = {
"windows-x64": "https://the.earth.li/~sgtatham/putty/latest/w64/",
"windows-x86": "https://the.earth.li/~sgtatham/putty/latest/w32/",
}
url = download_dict[control.target_os + "-" + ensure_list(control.architecture)[0]]
download_str = download_dict[control.target_os + "-" + ensure_list(control.architecture)[0]]
# Getting latest version from official sources
print("URL used is: %s" % url)
for bs_search in bs_find_all(url, "a", "href", proxies=proxies):
if "installer.msi" in bs_search["href"]:
latest_bin = bs_search["href"]
version = latest_bin.rsplit("-")[-2]
download_url = url + bs_search["href"]
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 []))
# Checking version from file
if get_os_name() == "windows" in control.target_os.lower():
version_from_file = get_version_from_binary(latest_bin)
if Version(version_from_file, 4) == Version(version, 4):
print(f"INFO: Binary file version ({version_from_file}) corresponds to online version ({version})")
else:
error(f"ERROR: Binary file version ({version_from_file}) do NOT corresponds to online version ({version})")
# 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 or not 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
b1eb42ef448045e7a09765bc30494f0996c05058166d70844e9e421b42d0c2ed : WAPT/control
11fe77671fd02e8f58809a2ab1edd6d6801233b5597015ff7452d69b21ab6acb : WAPT/icon.png
8af698ba46785185d948101b46a5aec1340217c7377688928b8ce31c9ebb1c9f : luti.json
d816fba5750e95ae5f845ad22bd165e19ebefbbf298f453abc1db2ef7655e4b8 : putty-0.83-installer.msi
3245528126830d69985d986a12395a36d5f0ed07e88e689bdc05dd911ffeed3d : setup.py
7932fd07da48225b5f01580cee43d715710746bff2450e93616517130315f385 : update_package.py