summaryrefslogtreecommitdiffstats
path: root/src/builder.vala
diff options
context:
space:
mode:
authorMarc-André Lureau <marcandre.lureau@gmail.com>2013-01-03 17:58:06 +0100
committerMarc-André Lureau <marcandre.lureau@gmail.com>2013-01-06 16:38:26 +0100
commit951c6b1bcfcc5ddc8575ffd32cb0ebed532a428b (patch)
treee70f63f512f32a97548a0dac52603759ea73396b /src/builder.vala
parentd43a0c5613c3c88a845fdf183ed403bd95072cf4 (diff)
downloadmsitools-951c6b1bcfcc5ddc8575ffd32cb0ebed532a428b.tar.gz
msitools-951c6b1bcfcc5ddc8575ffd32cb0ebed532a428b.tar.xz
msitools-951c6b1bcfcc5ddc8575ffd32cb0ebed532a428b.zip
Populate Registry table
Diffstat (limited to 'src/builder.vala')
-rw-r--r--src/builder.vala35
1 files changed, 35 insertions, 0 deletions
diff --git a/src/builder.vala b/src/builder.vala
index 6544d61..7587120 100644
--- a/src/builder.vala
+++ b/src/builder.vala
@@ -90,6 +90,41 @@ namespace Wixl {
db.table_remove_file.add (rm.Id, comp.Id, dir.Id, on);
}
+ enum RegistryValueType {
+ STRING,
+ INTEGER,
+ BINARY,
+ EXPANDABLE,
+ MULTI_STRING
+ }
+
+ enum RegistryRoot {
+ HKCR,
+ HKCU,
+ HKLM,
+ HKU,
+ HKMU
+ }
+
+ public override void visit_registry_value (WixRegistryValue reg) throws GLib.Error {
+ var comp = reg.parent as WixComponent;
+ var value = reg.Value;
+ var t = enum_from_string (typeof (RegistryValueType), reg.Type);
+ var r = enum_from_string (typeof (RegistryRoot), reg.Root.down ());
+ var id = generate_id ("reg", 4,
+ comp.Id,
+ reg.Root,
+ reg.Key != null ? reg.Key.down () : null,
+ reg.Name != null ? reg.Name.down () : null);
+
+ switch (t) {
+ case RegistryValueType.STRING:
+ value = value[0] == '#' ? "#" + value : value;
+ break;
+ }
+
+ db.table_registry.add (id, r, reg.Key, comp.Id);
+ }
}
} // Wixl