summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--tools/wixl/builder.vala19
-rw-r--r--tools/wixl/wix.vala17
2 files changed, 36 insertions, 0 deletions
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);