فهرست منبع

settings-wni: get installation directory from windows registry

Marek Marczykowski-Górecki 10 سال پیش
والد
کامیت
fef2672935
2فایلهای تغییر یافته به همراه32 افزوده شده و 9 حذف شده
  1. 2 0
      core/qubes.py
  2. 30 9
      core/settings-wni-Windows_NT.py

+ 2 - 0
core/qubes.py

@@ -75,6 +75,8 @@ system_path = {
     # use QIcon.fromTheme() where applicable
     'qubes_icon_dir': '/usr/share/icons/hicolor/128x128/devices',
 
+    'qrexec_policy_dir': '/etc/qubes-rpc/policy',
+
     'config_template_pv': '/usr/share/qubes/vm-template.xml',
 
     'qubes_pciback_cmd': '/usr/lib/qubes/unbind-pci-device.sh',

+ 30 - 9
core/settings-wni-Windows_NT.py

@@ -1,24 +1,45 @@
 #!/usr/bin/python2
 
 from __future__ import absolute_import
+import _winreg
+import os
+import sys
 
 from qubes.storage.wni import QubesWniVmStorage
 
+DEFAULT_INSTALLDIR = 'c:\\program files\\Invisible Things Lab\\Qubes WNI'
+DEFAULT_STOREDIR = 'c:\\qubes'
+
 def apply(system_path, vm_files, defaults):
-    system_path['qubes_base_dir'] = 'c:\\qubes'
-    system_path['config_template_pv'] = 'c:/program files/Invisible Things Lab/Qubes/vm-template.xml'
-    system_path['config_template_hvm'] = 'c:/program files/Invisible Things Lab/Qubes/vm-template-hvm.xml'
-    system_path['qubes_icon_dir'] = \
-            'c:/program files/Invisible Things Lab/Qubes/icons'
+    system_path['qubes_base_dir'] = DEFAULT_STOREDIR
+    installdir = DEFAULT_INSTALLDIR
+    try:
+        reg_key = _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE,
+                "Software\\Invisible Things Lab\\Qubes WNI")
+        installdir = _winreg.QueryValueEx(reg_key, "InstallDir")[0]
+        system_path['qubes_base_dir'] = \
+                _winreg.QueryValueEx(reg_key, "StoreDir")[0]
+    except WindowsError as e:
+        print >>sys.stderr, \
+                "WARNING: invalid installation: missing registry entries (%s)" \
+                % str(e)
+
+    system_path['config_template_pv'] = \
+            os.path.join(installdir, 'vm-template.xml')
+    system_path['config_template_hvm'] = \
+            os.path.join(installdir, 'vm-template-hvm.xml')
+    system_path['qubes_icon_dir'] = os.path.join(installdir, 'icons')
     system_path['qubesdb_daemon_path'] = \
-            'c:/program files/Invisible Things Lab/Qubes/bin/qubesdb-daemon.exe'
+            os.path.join(installdir, 'bin\\qubesdb-daemon.exe')
     system_path['qrexec_daemon_path'] = \
-            'c:/program files/Invisible Things Lab/Qubes/bin/qrexec-daemon.exe'
+            os.path.join(installdir, 'bin\\qrexec-daemon.exe')
     system_path['qrexec_client_path'] = \
-            'c:/program files/Invisible Things Lab/Qubes/bin/qrexec-client.exe'
+            os.path.join(installdir, 'bin\\qrexec-client.exe')
+    system_path['qrexec_policy_dir'] = \
+            os.path.join(installdir, 'qubes-rpc\\policy')
     # Specific to WNI - normally VM have this file
     system_path['qrexec_agent_path'] = \
-            'c:/program files/Invisible Things Lab/Qubes/bin/qrexec-agent.exe'
+            os.path.join(installdir, 'bin\\qrexec-agent.exe')
 
     defaults['libvirt_uri'] = 'wni:///'
     defaults['storage_class'] = QubesWniVmStorage