Pārlūkot izejas kodu

Locate makensis.exe correctly on 64 bit Windows

Closes gh-25
Thomas Kluyver 11 gadi atpakaļ
vecāks
revīzija
c628390b47
1 mainītis faili ar 10 papildinājumiem un 2 dzēšanām
  1. 10 2
      nsist/__init__.py

+ 10 - 2
nsist/__init__.py

@@ -39,6 +39,15 @@ if os.name == 'nt' and sys.maxsize == (2**63)-1:
 else:
     DEFAULT_BITNESS = 32
 
+def find_makensis_win():
+    """Locate makensis.exe on Windows by querying the registry"""
+    try:
+        nsis_install_dir = winreg.QueryValue(winreg.HKEY_LOCAL_MACHINE, 'SOFTWARE\\NSIS')
+    except OSError:
+        nsis_install_dir = winreg.QueryValue(winreg.HKEY_LOCAL_MACHINE, 'SOFTWARE\\Wow6432Node\\NSIS')
+
+    return pjoin(nsis_install_dir, 'makensis.exe')
+
 class InputError(ValueError):
     def __init__(self, param, value, expected):
         self.param = param
@@ -268,8 +277,7 @@ from {module} import {func}
         """
         try:
             if os.name == 'nt':
-                makensis = pjoin(winreg.QueryValue(winreg.HKEY_LOCAL_MACHINE, 'SOFTWARE\\NSIS'),
-                                         'makensis.exe')
+                makensis = find_makensis_win()
             else:
                 makensis = 'makensis'
             return call([makensis, self.nsi_file])