tis-ultravnc
1.3.4.2-0
UltraVNC is a free computer program capable of displaying the screen of another computer on your screen, this use is called remote control, different from remote desktop. The program allows you to use the mouse or local keyboard to remotely control other PCs.
2172 downloads

Description
- package : tis-ultravnc
- version : 1.3.4.2-0
- architecture : x86
- categories : Utilities
- maintainer : WAPT Team,Tranquil IT,Jimmy PELÉ,Morgan HINESTROSA
- description : UltraVNC is a free computer program capable of displaying the screen of another computer on your screen, this use is called remote control, different from remote desktop. The program allows you to use the mouse or local keyboard to remotely control other PCs.
- locale : all
- target_os : windows
- min_wapt_version : 1.8
- sources : https://www.uvnc.com/downloads/ultravnc.html
- installed_size : 49254400
- impacted_process : vncviewer,uvnc_settings,uvnckeyboardhelper,UVNC_Launch
- description_fr : UltraVNC est un programme informatique libre capable d'afficher l'écran d'un autre ordinateur sur votre écran, cette utilisation se nomme contrôle à distance, différent de bureau à distance. Le programme permet d'utiliser la souris ou le clavier local pour contrôler à distance les autres PC.
- description_pl : UltraVNC to darmowy program komputerowy zdolny do wyświetlania ekranu innego komputera na ekranie, to użycie nazywane jest pilotem, innym niż zdalny pulpit. Program pozwala na użycie myszy lub lokalnej klawiatury do zdalnego sterowania innymi komputerami.
- description_de : UltraVNC ist ein kostenloses Computerprogramm, mit dem Sie den Bildschirm eines anderen Computers auf Ihrem Bildschirm anzeigen können. Diese Verwendung wird als Fernbedienung bezeichnet und unterscheidet sich vom Remotedesktop. Mit dem Programm können Sie die Maus oder die lokale Tastatur verwenden, um andere PCs fernzusteuern.
- description_es : UltraVNC es un programa de computadora gratuito capaz de mostrar la pantalla de otra computadora en su pantalla, este uso se llama control remoto, diferente del escritorio remoto. El programa le permite utilizar el mouse o el teclado local para controlar de forma remota otras PC.
- description_pt :
- description_it :
- description_nl :
- description_ru :
- editor : UltraVNC Team
- licence : GPLv2
- signature_date : 2021-11-05T15:36:41.976196
- Homepage : https://www.uvnc.com
- Conflicts :
Setup.py
# -*- coding: utf-8 -*-
from setuphelpers import *
import platform
import bs4 as BeautifulSoup
"""
Usable WAPT package functions: install(), uninstall(), session_setup(), audit(), update_package()
"""
# Declaring global variables - Warnings: 1) WAPT context is only available in package functions; 2) Global variables are not persistent between calls
bin_contains = 'UltraVNC_'
app_uninstallkey = 'Ultravnc2_is1'
def install():
# Declaring local variables
package_version = control.get_software_version()
bin_name = glob.glob('*%s*.exe' % bin_contains)[0]
# Installing the software
print("Installing: %s" % bin_name)
install_exe_if_needed(bin_name,
silentflags='/VERYSILENT /NORESTART /RESTARTEXITCODE=3010 /SP- /SUPPRESSMSGBOXES /CLOSEAPPLICATIONS /FORCECLOSEAPPLICATIONS',
key=app_uninstallkey,
min_version=package_version,
)
def update_package():
# Declaring local variables
result = False
proxies = get_proxies()
if not proxies:
proxies = get_proxies_from_wapt_console()
app_name = control.name
url = 'https://www.uvnc.com/downloads/ultravnc.html'
if control.architecture == 'x64':
bin_ends = '_X64_Setup.exe'
else:
bin_ends = '_X86_Setup.exe'
# Getting latest version from official sources
print("URL used is: %s" % url)
for bs_search in bs_find_all(url, 'span', 'style', 'font-size: 14pt;', proxies=proxies):
version = bs_search.text.split('\xa0')[-1]
#https://www.uvnc.eu/download/1342/UltraVNC_1_3_42_X64_Setup.exe
download_url = 'https://www.uvnc.eu/download/'+version.replace('.','')+'/UltraVNC_'+version.replace('.','_',2).replace('.','')+bin_ends
latest_bin = download_url.split('/')[-1]
print("Latest %s version is: %s" % (app_name, version))
print("Download URL is: %s" % download_url)
# Downloading latest binaries
if not isfile(latest_bin):
print("Downloading: %s" % latest_bin)
wget(download_url, latest_bin, proxies=proxies)
# Checking version from file
version_from_file = get_version_from_binary(latest_bin, 'FileVersion')
#if not version_from_file.startswith(version) and version_from_file != '':
if Version(version_from_file) != Version(version) and version_from_file != '':
print("Changing version to the version number of the binary (from: %s to: %s)" % (version, version_from_file))
os.rename(latest_bin, bin_contains + version_from_file + bin_ends)
version = version_from_file
else:
os.rename(latest_bin, bin_contains + version_from_file + bin_ends)
print("Binary file version corresponds to online version")
# 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)))
result = True
else:
print("Software version up-to-date (%s)" % Version(version))
control.version = '%s-%s' % (Version(version), control.version.split('-', 1)[-1])
#control.set_software_version(version)
control.save_control_to_wapt()
# Deleting outdated binaries
remove_outdated_binaries(version)
# Validating or not update-package-sources
return result
def get_proxies():
r"""Return system proxy with the urllib python library
>>> get_proxies()
{'http': 'http://srvproxy.ad.domain.lan:8080',
'https': 'http://srvproxy.ad.domain.lan:8080'}
"""
if platform.python_version_tuple()[0] == '3':
from urllib.request import getproxies
else:
from urllib import getproxies
return getproxies()
def get_proxies_from_wapt_console():
r"""Return proxy information from the current user WAPT console
>>> get_proxies_from_wapt_console()
{'http': 'http://srvproxy.ad.domain.lan:8080',
'https': 'http://srvproxy.ad.domain.lan:8080'}
"""
proxies = {}
if platform.system() == 'Windows':
waptconsole_ini_path = makepath(user_local_appdata(), 'waptconsole', 'waptconsole.ini')
else:
waptconsole_ini_path = makepath(user_home_directory(), '.config', 'waptconsole', 'waptconsole.ini')
if isfile(waptconsole_ini_path):
proxy_wapt = inifile_readstring(waptconsole_ini_path, 'global', 'http_proxy')
if proxy_wapt:
proxies = {'http': proxy_wapt, 'https': proxy_wapt}
return proxies
def bs_find(url, element, attribute=None, value=None, user_agent=None, proxies=None, features='html.parser', **kwargs):
r""""Parse html web page with BeautifulSoup and get the first result
Args:
url (str): url of the web page to parse
element (str): searched element
attribute (str): selected attribute of the element
value (str): value of the selected attribute
user_agent (str): specify a user-agent if needed
proxies (dict): specify your proxy if needed
**kwargs (str): joker for requests parameters
features (str): bs feature to use
>>> bs_find('https://www.w3.org/', 'a', 'title', 'Open Web Platform testing')['href']
'https://web-platform-tests.org/'
>>> bs_find('https://www.w3.org/', 'span', 'class', 'alt-logo').string
'W3C'
.. versionadded:: 2.0
"""
import requests
if user_agent:
page = requests.get(url, proxies=proxies, headers={'User-Agent':'%s' % user_agent}, **kwargs).text
else:
page = requests.get(url, proxies=proxies, **kwargs).text
soup = BeautifulSoup.BeautifulSoup(page, features=features)
if value:
return soup.find(element, {attribute: value})
else:
return soup.find(element)
def bs_find_all(url, element, attribute=None, value=None, user_agent=None, proxies=None, features='html.parser', **kwargs):
r""""Parse html web page with BeautifulSoup and get a list of the result
Args:
url (str): url of the web page to parse
element (str): searched element
attribute (str): selected attribute of the element
value (str): value of the selected attribute
user_agent (str): specify a user-agent if needed
proxies (dict): specify your proxy if needed
**kwargs (str): joker for requests parameters
features (str): bs feature to use
>>> bs_find_all('https://www.w3.org/', 'a', 'title', 'Open Web Platform testing')[0]['href']
'https://web-platform-tests.org/'
>>> bs_find_all('https://www.w3.org/', 'span', 'class', 'alt-logo')[0].string
'W3C'
.. versionadded:: 2.0
"""
import requests
if user_agent:
page = requests.get(url, proxies=proxies, headers={'User-Agent':'%s' % user_agent}, **kwargs).text
else:
page = requests.get(url, proxies=proxies, **kwargs).text
soup = BeautifulSoup.BeautifulSoup(page, features=features)
if value:
return soup.find_all(element, {attribute:value})
else:
return soup.find_all(element)
def get_version_from_binary(filename, property_name='ProductVersion'):
r""" Get installer version from file informations, for now, only exe and msi files are compatibles
Args:
filename (str): path to the file
property_name (str): selected property
Returns:
str: version number
"""
if filename.endswith('.msi'):
return get_msi_properties(filename)[property_name]
else:
return get_file_properties(filename)[property_name]
def remove_outdated_binaries(version, filename_contains=None, list_extensions=['exe','msi','deb','rpm','dmg','pkg']):
r"""Remove files based on the version contained in his filename
Args:
version (str): version number of keeped files
filename_contains (str or list of str): Part of the filename that must be contained (useful for distinguishing architecture and os)
list_extensions (str or list of str): file extensions of verified files
Returns:
None
.. versionadded:: 2.0
"""
if type(list_extensions) != list:
list_extensions = [list_extensions]
if filename_contains:
if type(filename_contains) != list:
filename_contains = [filename_contains]
list_extensions = ['.' + ext for ext in list_extensions if ext[0] != '.']
for file_ext in list_extensions:
for bin_in_dir in glob.glob('*%s' % file_ext):
if not version in bin_in_dir:
remove_file(bin_in_dir)
if filename_contains:
for filename_contain in filename_contains:
if not filename_contain in bin_in_dir:
remove_file(bin_in_dir)