tis-tortoisesvn
1.9.26806-10
Outil de versioning SVN Subversion intégré à l'explorateur Windows
(remarque: version 1.8.8 pour win 32 bits et win XP)
15354 downloads

Description
- package : tis-tortoisesvn
- version : 1.9.26806-10
- architecture : all
- categories :
- maintainer : TIS <technique@tranquil-it-systems.fr>
- description : Outil de versioning SVN Subversion intégré à l'explorateur Windows (remarque: version 1.8.8 pour win 32 bits et win XP)
- 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 :
- editor :
- licence :
- signature_date : 2020-02-27T15:13:21.159593
- Depends :
Setup.py
from setuphelpers import *
import platform
import glob
uninstallkey = []
# additional options for msi install cusomization
msi_properties = {'ADDLOCAL':'CLI'}
def install_msi_if_needed(msi,min_version=None,killbefore=[],accept_returncodes=[0,1603,3010],timeout=300,properties={}):
"""Install silently the supplied msi file, and add the uninstall key to
global uninstall key list
uninstall key, min_version and silent flags are guessed from msi file.
Raises an error if, after the msi install, the uninstall key is not found in registry.
The matching is done on key
Args:
msi (str) : path to the MSI file
min_version (str) : if installed version is equal or gretaer than this, don't install
if not provided, guess it from exe setup file properties.
kill_before (list of str) : processes to kill before setup, to avoid file locks
issues.
accept_returncodes (list of int) : return codes which are acceptable and don't raise exception
timeout int) : maximum run time of command in seconds bfore the child is killed and error is raised.
properties (dict) : map (key=value) of properties for specific msi installation.
Returns:
None
"""
if not isfile(msi):
error('msi file %s not found in package' % msi)
key = get_msi_properties(msi)['ProductCode']
# will try to add key in the caller's (setup.py) uninstallkey list
import inspect
caller_globals = inspect.stack()[1][0].f_globals
WAPT = caller_globals.get('WAPT',None)
force = WAPT and WAPT.options.force
if not min_version:
min_version = getproductprops(msi)['version']
if need_install(key,min_version=min_version,force=force):
if killbefore:
killalltasks(killbefore)
props = ' '.join(["%s=%s" % (k,v) for (k,v) in properties.iteritems()])
run(r'msiexec /norestart /q /i "%s" %s' % (msi,props),accept_returncodes=accept_returncodes,timeout=timeout)
if not installed_softwares(uninstallkey=key):
error('MSI %s has been installed but the uninstall key %s can not be found' % (msi,key))
else:
print('MSI %s already installed. Skipping msiexec' % msi)
if key:
if 'uninstallkey' in caller_globals and not key in caller_globals['uninstallkey']:
caller_globals['uninstallkey'].append(key)
def find_msis():
"""Returns msi filename and properties"""
if iswin64():
allmsi = glob.glob('*x64*.msi')
else:
allmsi = glob.glob('*win32*.msi')
result = []
for msi in allmsi:
# uninstallkey is in msi db
props = get_msi_properties(msi)
result.append((msi,props))
return result
def update_control(entry):
"""Magic Callback to update control version data at build step"""
(version,packaging) = entry.version.split('-',1)
msis = find_msis()
# use first msi's version for the package version
version = msis[0][1]['ProductVersion']
entry.version = "%s-%s"%(version,packaging)
def install():
killalltasks(['TortoiseProc.exe','TSVNCache.exe'])
# calc package prefix from current package name
default_prefix = control.package.split('-',1)[0]
msi45_package = '%s-msi-4.5'%default_prefix
# tortoisesvn installer requires newest version of msi on Windows XP
if platform.win32_ver()[0] == 'XP' and not installed_softwares('KB942288-v3'):
if WAPT.is_available(msi45_package):
WAPT.install(msi45_package)
else:
Exception('%s is not avaible'%msi45_package)
msis = find_msis()
for (msi,props) in msis:
install_msi_if_needed(msi,properties=msi_properties)