diff options
author | Marc-André Lureau <marcandre.lureau@gmail.com> | 2013-01-03 17:58:06 +0100 |
---|---|---|
committer | Marc-André Lureau <marcandre.lureau@gmail.com> | 2013-01-06 16:38:26 +0100 |
commit | 951c6b1bcfcc5ddc8575ffd32cb0ebed532a428b (patch) | |
tree | e70f63f512f32a97548a0dac52603759ea73396b /src/builder.vala | |
parent | d43a0c5613c3c88a845fdf183ed403bd95072cf4 (diff) | |
download | msitools-951c6b1bcfcc5ddc8575ffd32cb0ebed532a428b.tar.gz msitools-951c6b1bcfcc5ddc8575ffd32cb0ebed532a428b.tar.xz msitools-951c6b1bcfcc5ddc8575ffd32cb0ebed532a428b.zip |
Populate Registry table
Diffstat (limited to 'src/builder.vala')
-rw-r--r-- | src/builder.vala | 35 |
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 |