summaryrefslogtreecommitdiff
path: root/lib/thandy/packagesys
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2008-11-17 20:55:28 +0000
committerNick Mathewson <nickm@torproject.org>2008-11-17 20:55:28 +0000
commit2fe77ca953e916966a28e4cf3895565a464cc8fd (patch)
tree18a50e432b4fe343bc0d223ccd02d3011859e1c0 /lib/thandy/packagesys
parente5ec1b2ce20f7578fea683229aadc95431fdb451 (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.py23
-rw-r--r--lib/thandy/packagesys/PackageDB.py2
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)