diff options
author | Nick Mathewson <nickm@torproject.org> | 2008-11-17 20:55:28 +0000 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2008-11-17 20:55:28 +0000 |
commit | 2fe77ca953e916966a28e4cf3895565a464cc8fd (patch) | |
tree | 18a50e432b4fe343bc0d223ccd02d3011859e1c0 /lib/thandy/packagesys | |
parent | e5ec1b2ce20f7578fea683229aadc95431fdb451 (diff) |
Add win32 registry support to thandy. untested.
git-svn-id: file:///home/or/svnrepo/updater/trunk@17319 55e972cd-5a19-0410-ae62-a4d7a52db4cd
Diffstat (limited to 'lib/thandy/packagesys')
-rw-r--r-- | lib/thandy/packagesys/ExePackages.py | 23 | ||||
-rw-r--r-- | lib/thandy/packagesys/PackageDB.py | 2 |
2 files changed, 22 insertions, 3 deletions
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, diff --git a/lib/thandy/packagesys/PackageDB.py b/lib/thandy/packagesys/PackageDB.py index c829ac3..d4070bf 100644 --- a/lib/thandy/packagesys/PackageDB.py +++ b/lib/thandy/packagesys/PackageDB.py @@ -56,7 +56,7 @@ class DBBackedPackageHandle(thandy.packagesys.PackageSystem.PackageHandle): raise NotImplemented() def anyVersionInstalled(self, transaction=None): - return self._packageDB.getCurVersion(self._name) != None + return self.getInstalledVersion(transaction) != None def getInstalledVersion(self, transaction=None): return self._packageDB.getCurVersion(self._name) |