예제 #1
0
        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);
        }
예제 #2
0
        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);
        }
예제 #3
0
        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);
        }