From 3b50b5c9971acfcc49e11a732061ce1414211ab2 Mon Sep 17 00:00:00 2001 From: Nick Mathewson Date: Thu, 20 Nov 2008 22:03:50 +0000 Subject: Fall back to using built-in db rather than registry when some clever person decides to try installing a win32 binary on their linux box. git-svn-id: file:///home/or/svnrepo/updater/trunk@17340 55e972cd-5a19-0410-ae62-a4d7a52db4cd --- lib/thandy/packagesys/ExePackages.py | 26 ++++++++++++++++---------- lib/thandy/util.py | 5 +++++ 2 files changed, 21 insertions(+), 10 deletions(-) (limited to 'lib') diff --git a/lib/thandy/packagesys/ExePackages.py b/lib/thandy/packagesys/ExePackages.py index e5b843b..9bda833 100644 --- a/lib/thandy/packagesys/ExePackages.py +++ b/lib/thandy/packagesys/ExePackages.py @@ -57,19 +57,25 @@ class ExePackageHandle(pdb.DBBackedPackageHandle): 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) + try: + ver = thandy.util.getRegistryValue(self._registry_ent[0]) + if ver != None: + return ver + except thandy.util.NoRegistry: + pass + + 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) + try: + ver = thandy.util.getRegistryValue(self._registry_ent[0]) + if ver == self._registry_ent[1]: + return True + except thandy.util.NoRegistry: + pass + + return pdb.DBBackedPackageHandle.isInstalled(self, transaction) def _doInstall(self): diff --git a/lib/thandy/util.py b/lib/thandy/util.py index ff617ae..ad69fa0 100644 --- a/lib/thandy/util.py +++ b/lib/thandy/util.py @@ -109,8 +109,13 @@ def randChooseWeighted(lst): return lst[-1][1] +class NoRegistry(thandy.Exception): + pass + def getRegistryValue(keyname): """Read the contents of a Windows registry key from a given base.""" + if _winreg is None: + raise NoRegistry() hkey, rest = keyname.split("\\", 1) key, value = rest.rsplit("\\", 1) -- cgit v1.2.3