internal WixFileNode AddFileComponent([NotNull] WixComponentGroupNode componentGroup, [NotNull] string id, [NotNull] string name, [NotNull] FileMapping fileMapping) { Debug.Assert(componentGroup.SourceFile.Equals(this)); var project = fileMapping.Project; var variableName = string.Format(CultureInfo.InvariantCulture, "{0}_TargetDir", project.Name); ForceDirectoryVariable(variableName, project); var componentElement = new XElement(WixNames.ComponentNode, new XAttribute("Id", id), new XAttribute("Guid", Guid.NewGuid().ToString())); componentGroup.Node.AddWithFormatting(componentElement); var source = string.Format(CultureInfo.InvariantCulture, "$(var.{0}){1}", variableName, fileMapping.SourceName); var fileElement = new XElement(WixNames.FileNode, new XAttribute("Id", id), new XAttribute("Name", name), new XAttribute("Source", source)); componentElement.AddWithFormatting(fileElement); Save(); var fileNode = new WixFileNode(componentGroup.SourceFile, fileElement, _fileNodes); _fileNodes.Add(fileNode); return(fileNode); }
internal WixComponentGroupNode AddComponentGroup([NotNull] string directoryId) { var root = _root; var fragmentElement = new XElement(WixNames.FragmentNode); root.AddWithFormatting(fragmentElement); var componentGroupElement = new XElement(WixNames.ComponentGroupNode, new XAttribute("Id", directoryId + "_files"), new XAttribute("Directory", directoryId)); fragmentElement.AddWithFormatting(componentGroupElement); Save(); var componentGroup = new WixComponentGroupNode(this, componentGroupElement); _componentGroupNodes.Add(componentGroup); return(componentGroup); }
private WixComponentGroupNode ResolveComponentGroup() { var componentNode = Node.Parent; var componentGroupNode = componentNode?.Parent; if (componentGroupNode == null) { return(null); } var componentGroups = SourceFile.Project.ComponentGroups; if (componentGroupNode.Name == WixNames.ComponentGroupNode) { _componentGroup = componentGroups.FirstOrDefault(group => group.Node == componentGroupNode); } else if (componentGroupNode.Name == WixNames.ComponentGroupRefNode) { _componentGroup = componentGroups.FirstOrDefault(group => group.Id == componentGroupNode.GetAttribute("Id")); } return(null); }