From 2fe77ca953e916966a28e4cf3895565a464cc8fd Mon Sep 17 00:00:00 2001 From: Nick Mathewson Date: Mon, 17 Nov 2008 20:55:28 +0000 Subject: Add win32 registry support to thandy. untested. git-svn-id: file:///home/or/svnrepo/updater/trunk@17319 55e972cd-5a19-0410-ae62-a4d7a52db4cd --- lib/thandy/packagesys/ExePackages.py | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) (limited to 'lib/thandy/packagesys/ExePackages.py') diff --git a/lib/thandy/packagesys/ExePackages.py b/lib/thandy/packagesys/ExePackages.py index 4989f3a..d82d86e 100644 --- a/lib/thandy/packagesys/ExePackages.py +++ b/lib/thandy/packagesys/ExePackages.py @@ -31,7 +31,8 @@ class ExePackageSystem(pdb.DBBackedPackageSystem): [], # filelist not implemented in this. rp, self._repo.getFilename(rp), - extra['exe_args'])) + arguments=extra['exe_args'], + registry_ent=extra.get('registry_ent'))) return handles def canBeAutomatic(self): @@ -42,15 +43,33 @@ class ExePackageSystem(pdb.DBBackedPackageSystem): class ExePackageHandle(pdb.DBBackedPackageHandle): def __init__(self, packageDB, name, version, filelist, relpath, filename, - arguments): + arguments, registry_ent=None): pdb.DBBackedPackageHandle.__init__(packageDB, name, version, filelist) self._relPath = relpath self._filename = filename self._arguments = arguments + self._registry_ent = registry_ent def getRelativePath(self): return self._relPath + def getInstalledVersion(self, transaction=None): + if self._registry_ent != None: + ver = thandy.util.getRegistryValue(self._registry_ent[0]) + if ver != None: + return ver + else: + return pdb.DBBackedPackageHandle.getInstalledVersion(self, transaction) + + def isInstalled(self, transaction=None): + if self._registry_ent != None: + ver = thandy.util.getRegistryValue(self._registry_ent[0]) + if ver == self._registry_ent[1] + return True + else: + return pdb.DBBackedPackageHandle.isInstalled(self, transaction) + + def _doInstall(self): commandline = [ self._filename ] + self._arguments logging.info("Installing %s. Command line: %s", self._filename, -- cgit v1.2.3