[msitools] wixl: visit RegistrySearch and populate db



commit f014a5c6d7dd4835b4e773605809b7ca44496a48
Author: Marc-Andrà Lureau <marcandre lureau gmail com>
Date:   Thu Jan 24 23:47:10 2013 +0100

    wixl: visit RegistrySearch and populate db

 tools/wixl/builder.vala |   22 ++++++++++++++++++++++
 tools/wixl/wix.vala     |    1 +
 2 files changed, 23 insertions(+), 0 deletions(-)
---
diff --git a/tools/wixl/builder.vala b/tools/wixl/builder.vala
index b8c63c1..43a8542 100644
--- a/tools/wixl/builder.vala
+++ b/tools/wixl/builder.vala
@@ -919,7 +919,29 @@ namespace Wixl {
             db.table_service_install.add(service_install.Id, service_install.Name, service_install.DisplayName, ServiceType, StartType, ErrorControl, service_install.LoadOrderGroup, ServiceDependencies, service_install.Account, service_install.Password, service_install.Arguments, comp.Id, Description);
         }
 
+
+        enum RegistryType {
+            DIRECTORY,
+            FILE,
+            RAW,
+            64BIT = 0x10;
+
+            public static RegistryType from_string (string s) throws GLib.Error {
+                return enum_from_string<RegistryType> (s);
+            }
+        }
+
         public override void visit_registry_search (WixRegistrySearch search) throws GLib.Error {
+            var property = search.parent as WixProperty;
+
+            var root = RegistryRoot.from_string (search.Root.down ());
+            var type = RegistryType.from_string (search.Type.down ());
+            if (parse_yesno (search.Win64))
+                type |= RegistryType.64BIT;
+
+            db.table_app_search.add (property.Id, search.Id);
+            db.table_reg_locator.add (search.Id, root, search.Key, search.Name, type);
+        }
 
         [Flags]
         enum CustomActionType {
diff --git a/tools/wixl/wix.vala b/tools/wixl/wix.vala
index 55f3574..dee6947 100644
--- a/tools/wixl/wix.vala
+++ b/tools/wixl/wix.vala
@@ -296,6 +296,7 @@ namespace Wixl {
         public string Key { get; set; }
         public string Type { get; set; }
         public string Name { get; set; }
+        public string Win64 { get; set; }
 
         public override void accept (WixNodeVisitor visitor) throws GLib.Error {
             visitor.visit_registry_search (this);



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]