From 574dadfa4bb46207ab0c6c5ecc15db8fd9254273 Mon Sep 17 00:00:00 2001 From: Marc-André Lureau Date: Tue, 15 Jan 2013 19:47:26 +0100 Subject: wixl: add non-advertised MIME support --- tools/wixl/builder.vala | 19 +++++++++++++++++++ tools/wixl/wix.vala | 17 +++++++++++++++++ 2 files changed, 36 insertions(+) (limited to 'tools/wixl') diff --git a/tools/wixl/builder.vala b/tools/wixl/builder.vala index 5cb92c3..f269852 100644 --- a/tools/wixl/builder.vala +++ b/tools/wixl/builder.vala @@ -673,6 +673,9 @@ namespace Wixl { public override void visit_extension (WixExtension ext) throws GLib.Error { var progid = ext.parent as WixProgId; var comp = progid.parent as WixComponent; + + return_if_fail (!parse_yesno (progid.Advertise)); + var regid = generate_id ("reg", 3, comp.Id, ext.Id, @@ -710,6 +713,22 @@ namespace Wixl { "\"[#%s]\" %s".printf (verb.TargetFile, verb.Argument)); } + public override void visit_mime (WixMIME mime) throws GLib.Error { + var ext = mime.parent as WixExtension; + var progid = ext.parent as WixProgId; + var comp = progid.parent as WixComponent; + + return_if_fail (!parse_yesno (progid.Advertise)); + + var key = "MIME\\Database\\Content Type\\" + mime.ContentType; + var regid = generate_id ("reg", 3, + comp.Id, + key, + "Extension"); + + db.table_registry.add (regid, 0, key, comp.Id, "Extension", "." + ext.Id); + } + public override void visit_create_folder (WixCreateFolder folder) throws GLib.Error { } diff --git a/tools/wixl/wix.vala b/tools/wixl/wix.vala index c8cdcdf..6a4ed85 100644 --- a/tools/wixl/wix.vala +++ b/tools/wixl/wix.vala @@ -32,6 +32,7 @@ namespace Wixl { public abstract void visit_progid (WixProgId progid) throws GLib.Error; public abstract void visit_extension (WixExtension extension) throws GLib.Error; public abstract void visit_verb (WixVerb verb) throws GLib.Error; + public abstract void visit_mime (WixMIME mime) throws GLib.Error; } public abstract class WixNode: Object { @@ -441,6 +442,20 @@ namespace Wixl { } } + public class WixMIME: WixElement { + static construct { + name = "MIME"; + } + + public string Advertise { get; set; } + public string ContentType { get; set; } + public string Default { get; set; } + + public override void accept (WixNodeVisitor visitor) throws GLib.Error { + visitor.visit_mime (this); + } + } + public class WixVerb: WixElement { static construct { name = "Verb"; @@ -462,10 +477,12 @@ namespace Wixl { add_child_types (child_types, { typeof (WixVerb), + typeof (WixMIME), }); } public string ContentType { get; set; } + public string Advertise { get; set; } public override void accept (WixNodeVisitor visitor) throws GLib.Error { base.accept (visitor); -- cgit