diff options
Diffstat (limited to 'tools/wixl/builder.vala')
-rw-r--r-- | tools/wixl/builder.vala | 23 |
1 files changed, 20 insertions, 3 deletions
diff --git a/tools/wixl/builder.vala b/tools/wixl/builder.vala index 701bba4..9a25737 100644 --- a/tools/wixl/builder.vala +++ b/tools/wixl/builder.vala @@ -383,13 +383,30 @@ namespace Wixl { } + void feature_add_component (WixFeature feature, WixComponent component) throws GLib.Error { + component.in_feature.append (feature); + db.table_feature_components.add (feature.Id, component.Id); + } + public override void visit_component_ref (WixComponentRef ref) throws GLib.Error { + var component = resolve<WixComponent> (@ref); + + if (ref.parent is WixFeature) { + feature_add_component (@ref.parent as WixFeature, component); + } else if (ref.parent is WixComponentGroup) { + // will be added in GroupRef + } else + warning ("unhandled parent type %s", @ref.parent.name); + } + + public override void visit_component_group_ref (WixComponentGroupRef ref) throws GLib.Error { + var group = resolve<WixComponentGroup> (@ref); + if (ref.parent is WixFeature) { var feature = ref.parent as WixFeature; - var component = resolve<WixComponent> (@ref); - component.in_feature.append (feature); - db.table_feature_components.add (feature.Id, @ref.Id); + foreach (var comp in group.children) + feature_add_component (feature, resolve<WixComponent> (comp as WixElement)); } else warning ("unhandled parent type %s", @ref.parent.name); } |