/// <summary>
		/// Creates the directory element and sets its Id and SourceName.
		/// </summary>
		public static WixDirectoryElement CreateRootDirectory(WixDocument document)
		{
			WixDirectoryElement rootDirectory = new WixDirectoryElement(document);
			rootDirectory.Id = RootDirectoryId;
			rootDirectory.SourceName = "SourceDir";
			return rootDirectory;
		}
        bool UpdateOpenFileWithRootDirectoryChanges(WixDocument wixDocument, TextAreaControl textAreaControl)
        {
            // Get the xml for the root directory.
            WixDirectoryElement rootDirectory = wixDocument.RootDirectory;
            string xml = GetWixXml(rootDirectory);

            // Find the root directory location.
            bool updated = ReplaceElement(rootDirectory.Id, WixDirectoryElement.DirectoryElementName, textAreaControl, xml);

            if (updated)
            {
                return(true);
            }

            // Find the product end element location.
            IDocument document = textAreaControl.Document;
            Location  location = WixDocument.GetEndElementLocation(new StringReader(document.TextContent), "Product", wixDocument.Product.GetAttribute("Id"));

            if (!location.IsEmpty)
            {
                // Insert the xml with an extra new line at the end.
                ITextEditorProperties properties     = SharpDevelopTextEditorProperties.Instance;
                WixDocumentEditor     documentEditor = new WixDocumentEditor(textAreaControl);
                documentEditor.Insert(location.Y, location.X, String.Concat(xml, properties.LineTerminator));
                return(true);
            }
            return(false);
        }
		public WixDirectoryTreeNode(WixDirectoryElement directoryElement) : base(directoryElement)
		{
			ContextmenuAddinTreePath = "/AddIns/WixBinding/PackageFilesView/ContextMenu/DirectoryTreeNode";
			SetIcon(closedImage);
			Refresh();
			sortOrder = 0;
		}	
示例#4
0
        /// <summary>
        /// Adds a new directory to the specified element.
        /// </summary>
        WixDirectoryElement AddDirectory(WixDirectoryElementBase parentElement)
        {
            WixDirectoryElement directoryElement = AddDirectory(parentElement, String.Empty);

            directoryElement.Id = "NewDirectory";
            return(directoryElement);
        }
        /// <summary>
        /// Adds a new Wix Component to the directory element. The file will then be added to this
        /// component.
        /// </summary>
        WixComponentElement AddFileWithParentComponent(WixDirectoryElement directoryElement, string fileName)
        {
            WixComponentElement component = AddComponent(directoryElement, fileName);

            AddFile(component, fileName, true);
            return(component);
        }
示例#6
0
 /// <summary>
 /// Tries to find a root directory or root directory ref in the specified
 /// document.
 /// </summary>
 FindRootDirectoryResult FindRootDirectory(WixDocument currentDocument)
 {
     if (currentDocument.IsProductDocument)
     {
         WixDirectoryElement rootDirectory = currentDocument.RootDirectory;
         if (rootDirectory != null)
         {
             view.AddDirectories(rootDirectory.GetDirectories());
         }
         document = currentDocument;
         return(FindRootDirectoryResult.RootDirectoryFound);
     }
     else
     {
         WixDirectoryRefElement rootDirectoryRef = currentDocument.RootDirectoryRef;
         if (rootDirectoryRef != null)
         {
             view.AddDirectories(rootDirectoryRef.GetDirectories());
             document = currentDocument;
             usingRootDirectoryRef = true;
             return(FindRootDirectoryResult.RootDirectoryRefFound);
         }
     }
     return(FindRootDirectoryResult.NoMatch);
 }
		/// <summary>
		/// Adds a new directory with the specified name and id. A short name
		/// will be generated if the name is too long.
		/// </summary>
		public WixDirectoryElement AddDirectory(string name)
		{
			WixDirectoryElement directoryElement = new WixDirectoryElement((WixDocument)OwnerDocument);
			directoryElement.Id = WixFileElement.GenerateId(name);
			directoryElement.DirectoryName = name;
			return (WixDirectoryElement)AppendChild(directoryElement);
		}		
        /// <summary>
        /// Creates an id from the filename.
        /// </summary>
        /// <remarks>
        /// Takes the filename, removes all periods, and
        /// capitalises the first character and first extension character.
        /// </remarks>
        /// <param name="document">The Wix document is used to make sure the
        /// id generated is unique for that document.</param>
        /// <param name="fileName">The full filename including the directory to
        /// use when generating the id.</param>
        public static string GenerateIdFromFileName(WixDocument document, string fileName)
        {
            string id = GenerateIdFromFileName(fileName);

            if (!document.ComponentIdExists(id))
            {
                return(id);
            }

            // Add the parent folder to the id.
            string parentDirectory = WixDirectoryElement.GetLastDirectoryName(Path.GetDirectoryName(fileName));

            parentDirectory = FirstCharacterToUpperInvariant(parentDirectory);
            parentDirectory = WixFileElement.GenerateId(parentDirectory).Replace(".", String.Empty);
            id = String.Concat(parentDirectory, id);
            if (!document.ComponentIdExists(id))
            {
                return(id);
            }

            // Add a number to the end until we generate a unique id.
            int    count  = 0;
            string baseId = id;

            do
            {
                ++count;
                id = String.Concat(baseId, count);
            } while (document.ComponentIdExists(id));

            return(id);
        }
示例#9
0
 public WixDirectoryTreeNode(WixDirectoryElement directoryElement) : base(directoryElement)
 {
     ContextmenuAddinTreePath = "/AddIns/WixBinding/PackageFilesView/ContextMenu/DirectoryTreeNode";
     SetIcon(closedImage);
     Refresh();
     sortOrder = 0;
 }
示例#10
0
        /// <summary>
        /// Adds a new directory with the specified name and id. A short name
        /// will be generated if the name is too long.
        /// </summary>
        public WixDirectoryElement AddDirectory(string name)
        {
            WixDirectoryElement directoryElement = new WixDirectoryElement((WixDocument)OwnerDocument);

            directoryElement.Id            = WixFileElement.GenerateId(name);
            directoryElement.DirectoryName = name;
            return((WixDirectoryElement)AppendChild(directoryElement));
        }
示例#11
0
        /// <summary>
        /// Adds a new Wix Component to the directory element. The file will then be added to this
        /// component.
        /// </summary>
        WixComponentElement AddFileWithParentComponent(WixDirectoryElement directoryElement, string fileName)
        {
            string id = WixComponentElement.GenerateIdFromFileName(document, fileName);
            WixComponentElement component = AddComponent(directoryElement, id);

            AddFile(component, fileName, true);
            return(component);
        }
		public void Init()
		{
			base.InitFixture();
			editor.ExcludedItems.AddRange(new string[] {"*.pdb"});
			WixDirectoryElement programFilesDirectory = (WixDirectoryElement)editor.Document.GetRootDirectory().FirstChild;
			installDirectory = (WixDirectoryElement)programFilesDirectory.FirstChild;
			binDirectory = (WixDirectoryElement)installDirectory.LastChild;
		}
        /// <summary>
        /// Creates the directory element and sets its Id and SourceName.
        /// </summary>
        public static WixDirectoryElement CreateRootDirectory(WixDocument document)
        {
            WixDirectoryElement rootDirectory = new WixDirectoryElement(document);

            rootDirectory.Id         = RootDirectoryId;
            rootDirectory.SourceName = "SourceDir";
            return(rootDirectory);
        }
		/// <summary>
		/// Adds a new directory with the specified name and generates a unique id 
		/// for the directory.
		/// </summary>
		public WixDirectoryElement AddDirectory(string name)
		{
			WixDirectoryElement directoryElement = new WixDirectoryElement(OwnerWixDocument);
			directoryElement.Id = GenerateUniqueChildDirectoryId(name);
			directoryElement.DirectoryName = name;
			AppendChild(directoryElement);
			return directoryElement;
		}
        /// <summary>
        /// Adds a new directory with the specified name and generates a unique id
        /// for the directory.
        /// </summary>
        public WixDirectoryElement AddDirectory(string name)
        {
            WixDirectoryElement directoryElement = new WixDirectoryElement(OwnerWixDocument);

            directoryElement.Id            = GenerateUniqueChildDirectoryId(name);
            directoryElement.DirectoryName = name;
            AppendChild(directoryElement);
            return(directoryElement);
        }
 /// <summary>
 /// Adds a new component element to the directory element.
 /// </summary>
 WixComponentElement AddComponent(WixDirectoryElement parentDirectory, string fileName)
 {
     if (parentDirectory != null)
     {
         WixComponentElement component = parentDirectory.AddComponent(fileName);
         return(component);
     }
     return(null);
 }
示例#17
0
 /// <summary>
 /// Adds a new component element to the directory element.
 /// </summary>
 /// <param name="id">The id attribute the component element will have.</param>
 WixComponentElement AddComponent(WixDirectoryElement parentElement, string id)
 {
     if (parentElement != null)
     {
         WixComponentElement element = parentElement.AddComponent(id);
         return(element);
     }
     return(null);
 }
        string GenerateIdFromParentDirectory(string fileName)
        {
            string fullParentDirectory = Path.GetDirectoryName(fileName);
            string lastFolder          = WixDirectoryElement.GetLastFolderInDirectoryName(fullParentDirectory);
            string id = UpperCaseFirstCharacter(lastFolder);

            id = WixFileElement.GenerateId(id);
            id = RemoveDotCharacters(id);
            return(id);
        }
示例#19
0
        string GenerateIdFromParentDirectory(string parentDirectory)
        {
            string parentDirectoryName = WixDirectoryElement.GetLastFolderInDirectoryName(parentDirectory);

            if (parentDirectoryName.Length > 0)
            {
                return(WixFileElement.GenerateId(parentDirectoryName));
            }
            return(String.Empty);
        }
		public void SetUpFixture()
		{
			base.InitFixture();
			WixDirectoryElement programFilesFolderElement = (WixDirectoryElement)editor.Document.GetRootDirectory().FirstChild;
			view.SelectedElement = programFilesFolderElement;
			editor.AddDirectory(directory);
			
			appDirectoryElement = (WixDirectoryElement)programFilesFolderElement.FirstChild;
			exeFileElement = (WixFileElement)appDirectoryElement.SelectSingleNode("w:Component/w:File[@Name='MyApp.exe']", new WixNamespaceManager(editor.Document.NameTable));
			readmeFileElement = (WixFileElement)appDirectoryElement.SelectSingleNode("w:Component/w:File[@Name='readme.txt']", new WixNamespaceManager(editor.Document.NameTable));
		}
		public void SetUpFixture()
		{
			WixDocument doc = new WixDocument();
			doc.LoadXml(GetWixXml());
			rootDirectory = doc.RootDirectory;
			rootChildDirectories = rootDirectory.GetDirectories();
			programFilesDirectory = rootChildDirectories[0];
			programFilesChildDirectories = programFilesDirectory.GetDirectories();
			myAppDirectory = programFilesChildDirectories[0];
			testDirectory = rootChildDirectories[1];
		}
		public void Init()
		{
			base.InitFixture();
			editor.AddDirectory(directory);
			
			nsManager = new WixNamespaceManager(editor.Document.NameTable);
			appDirectoryElement = (WixDirectoryElement)editor.Document.GetRootDirectory().SelectSingleNode("w:Directory[@Name='MyApp']", nsManager);
			readmeComponentElement = (WixComponentElement)appDirectoryElement.SelectSingleNode("w:Component[w:File/@Name='readme.txt']", nsManager);
			licenseComponentElement = (WixComponentElement)appDirectoryElement.SelectSingleNode("w:Component[w:File/@Name='license.txt']", nsManager);	
			exeComponentElement = (WixComponentElement)appDirectoryElement.SelectSingleNode("w:Component[w:File/@Name='MyApp.exe']", nsManager);
		}
示例#23
0
 /// <summary>
 /// Adds the set of files to the specified directory element. Each file
 /// gets its own parent component element.
 /// </summary>
 void AddFiles(WixDirectoryElement directoryElement, string directory)
 {
     foreach (string fileName in DirectoryReader.GetFiles(directory))
     {
         if (!excludedNames.IsExcluded(fileName))
         {
             string path = Path.Combine(directory, fileName);
             AddFileWithParentComponent(directoryElement, path);
         }
     }
 }
		public void SetUpFixture()
		{
			base.InitFixture();
			editor.ExcludedItems.AddRange(new string[] {"readme.txt", "obj"});
			editor.AddDirectory(directory);
			
			WixNamespaceManager nsManager = new WixNamespaceManager(editor.Document.NameTable);
			appDirectoryElement = (WixDirectoryElement)editor.Document.GetRootDirectory().FirstChild;
			docsDirectoryElement = (WixDirectoryElement)appDirectoryElement.SelectSingleNode("w:Directory[@Name='docs']", nsManager);
			srcDirectoryElement = (WixDirectoryElement)appDirectoryElement.SelectSingleNode("w:Directory[@Name='src']", nsManager);
			readmeFileElement = (WixFileElement)docsDirectoryElement.SelectSingleNode("w:Component/w:File[@Name='readme.txt']", nsManager);
		}
		public void SetUpFixture()
		{
			WixBindingTestsHelper.RegisterResourceStringsWithSharpDevelopResourceManager();
			
			WixDocument doc = new WixDocument();
			doc.LoadXml(GetWixXml());
			rootDirectory = doc.GetRootDirectory();
			rootChildDirectories = rootDirectory.GetDirectories();
			programFilesDirectory = rootChildDirectories[0];
			programFilesChildDirectories = programFilesDirectory.GetDirectories();
			myAppDirectory = programFilesChildDirectories[0];
			testDirectory = rootChildDirectories[1];
		}
        /// <summary>
        /// Gets any child directory elements.
        /// </summary>
        public WixDirectoryElement[] GetDirectories()
        {
            List <WixDirectoryElement> directories = new List <WixDirectoryElement>();

            foreach (XmlNode childNode in ChildNodes)
            {
                WixDirectoryElement childElement = childNode as WixDirectoryElement;
                if (childElement != null)
                {
                    directories.Add(childElement);
                }
            }
            return(directories.ToArray());
        }
		public void SetUpFixture()
		{
			base.InitFixture();
			editor.AddDirectory(directory);
			
			WixNamespaceManager nsManager = new WixNamespaceManager(editor.Document.NameTable);
			appDirectoryElement = (WixDirectoryElement)editor.Document.GetRootDirectory().FirstChild;
			myAppExeFileComponentElement = (WixComponentElement)appDirectoryElement.SelectSingleNode("w:Component", nsManager);
			myAppExeFileElement = (WixFileElement)myAppExeFileComponentElement.LastChild;
			docsDirectoryElement = (WixDirectoryElement)appDirectoryElement.SelectSingleNode("w:Directory[@Name='docs']", nsManager);
			srcDirectoryElement = (WixDirectoryElement)appDirectoryElement.SelectSingleNode("w:Directory[@Name='src']", nsManager);
			cssDirectoryElement = (docsDirectoryElement.GetDirectories())[0];
			readmeFileElement = (WixFileElement)docsDirectoryElement.SelectSingleNode("w:Component/w:File[@Name='readme.txt']", nsManager);
		}
示例#28
0
        /// <summary>
        /// Adds any subdirectories and files to the directory element.
        /// </summary>
        /// <param name="directoryElement">The directory element to add
        /// the components and subdirectories to.</param>
        /// <param name="directory">The full path of the directory.</param>
        void AddDirectoryContents(WixDirectoryElement directoryElement, string directory)
        {
            foreach (string subDirectory in DirectoryReader.GetDirectories(directory))
            {
                string subDirectoryName = WixDirectoryElement.GetLastDirectoryName(subDirectory);
                if (!excludedNames.IsExcluded(subDirectoryName))
                {
                    WixDirectoryElement subDirectoryElement = AddDirectory(directoryElement, subDirectoryName);
                    AddFiles(subDirectoryElement, subDirectory);

                    // Add the subdirectory contents.
                    AddDirectoryContents(subDirectoryElement, subDirectory);
                }
            }
        }
示例#29
0
        /// <summary>
        /// Adds the specified directory to the selected element. This
        /// adds all the contained files and subdirectories recursively to the
        /// setup package.
        /// </summary>
        public void AddDirectory(string directory)
        {
            WixDirectoryElement parentElement = (WixDirectoryElement)view.SelectedElement;

            // Add directory.
            string directoryName = WixDirectoryElement.GetLastDirectoryName(directory);
            WixDirectoryElement directoryElement = AddDirectory(parentElement, directoryName);

            AddFiles(directoryElement, directory);

            // Adds directory contents recursively.
            AddDirectoryContents(directoryElement, directory);

            AddElementToView(directoryElement);
        }
示例#30
0
        /// <summary>
        /// Adds a new root directory.
        /// </summary>
        public WixDirectoryElement AddRootDirectory()
        {
            // Add product element if it does not exist.
            XmlElement productElement = Product;

            if (productElement == null)
            {
                productElement = CreateWixElement("Product");
                DocumentElement.AppendChild(productElement);
            }

            // Add root directory.
            WixDirectoryElement rootDirectory = WixDirectoryElement.CreateRootDirectory(this);

            return((WixDirectoryElement)productElement.AppendChild(rootDirectory));
        }
示例#31
0
        /// <summary>
        /// Adds a single file to the selected component element.
        /// </summary>
        void AddFile(string fileName)
        {
            WixComponentElement componentElement = view.SelectedElement as WixComponentElement;
            WixDirectoryElement directoryElement = view.SelectedElement as WixDirectoryElement;

            if (componentElement != null)
            {
                WixFileElement fileElement = AddFile(componentElement, fileName, false);
                view.AddElement(fileElement);
                view.IsDirty = true;
            }
            else if (directoryElement != null)
            {
                componentElement = AddFileWithParentComponent(directoryElement, fileName);
                view.AddElement(componentElement);
                view.IsDirty = true;
            }
        }
        void UpdateOpenTextEditorWithRootDirectoryChanges(ITextEditor textEditor, WixDocument document)
        {
            WixDirectoryElement rootDirectory = document.GetRootDirectory();
            string xml = rootDirectory.GetXml(wixTextWriter);

            WixDocumentEditor documentEditor = new WixDocumentEditor(textEditor);
            DomRegion         region         = documentEditor.ReplaceElement(rootDirectory.Id, WixDirectoryElement.DirectoryElementName, xml);

            if (!region.IsEmpty)
            {
                return;
            }

            Location location = FindProductElementEndLocation(textEditor, document);

            if (!location.IsEmpty)
            {
                documentEditor.InsertIndented(location, String.Concat(xml, "\r\n"));
            }
        }
示例#33
0
        /// <summary>
        /// Generates a unique id for the entire document that this file element
        /// belongs to.
        /// </summary>
        /// <param name="parentDirectory">The full path of the parent directory
        /// for the filename.</param>
        /// <param name="fileName">The name of the file to generate a unique
        /// id for. This does not include any path.</param>
        string GenerateUniqueId(string parentDirectory, string fileName)
        {
            string      id       = GenerateId(fileName);
            WixDocument document = (WixDocument)OwnerDocument;

            if (!document.FileIdExists(id))
            {
                return(id);
            }

            // Add the file's parent directory to the id.
            string parentDirectoryName = WixDirectoryElement.GetLastDirectoryName(parentDirectory);

            if (parentDirectoryName.Length > 0)
            {
                id = String.Concat(WixFileElement.GenerateId(parentDirectoryName), ".", id);
                if (!document.FileIdExists(id))
                {
                    return(id);
                }
                fileName = id;
            }

            // Add a number to the file name until we get a unique id.
            int    count     = 0;
            string idStart   = Path.GetFileNameWithoutExtension(fileName);
            string extension = Path.GetExtension(fileName);

            do
            {
                ++count;
                id = String.Concat(idStart, count, extension);
            } while (document.FileIdExists(id));

            return(id);
        }
		/// <summary>
		/// Adds a new component element to the directory element.
		/// </summary>
		/// <param name="id">The id attribute the component element will have.</param>
		WixComponentElement AddComponent(WixDirectoryElement parentElement, string id)
		{
			if (parentElement != null) {
				WixComponentElement element = parentElement.AddComponent(id);
				return element;
			}
			return null;
		}
		/// <summary>
		/// Adds a new Wix Component to the directory element. The file will then be added to this
		/// component.
		/// </summary>
		WixComponentElement AddFileWithParentComponent(WixDirectoryElement directoryElement, string fileName)
		{
			string id = WixComponentElement.GenerateIdFromFileName(document, fileName);
			WixComponentElement component = AddComponent(directoryElement, id);			
			AddFile(component, fileName, true);
			return component;
		}
		/// <summary>
		/// Adds the directories to the tree view.
		/// </summary>
		public void AddDirectories(WixDirectoryElement[] directories)
		{
			foreach (WixDirectoryElement directory in directories) {
				WixTreeNodeBuilder.AddNode(this, directory);
			}
		}
示例#37
0
        WixDirectoryElement AddRootDirectoryToProduct(XmlElement parentProductElement)
        {
            WixDirectoryElement rootDirectory = WixDirectoryElement.CreateRootDirectory(this);

            return((WixDirectoryElement)parentProductElement.AppendChild(rootDirectory));
        }
		/// <summary>
		/// Adds a new Wix Component to the directory element. The file will then be added to this
		/// component.
		/// </summary>
		WixComponentElement AddFileWithParentComponent(WixDirectoryElement directoryElement, string fileName)
		{
			WixComponentElement component = AddComponent(directoryElement, fileName);
			AddFile(component, fileName, true);
			return component;
		}
		public void AddDirectories(WixDirectoryElement[] directories)
		{
			foreach (WixDirectoryElement directory in directories) {
				directoriesAdded.Add(directory);
			}
		}
		/// <summary>
		/// Adds directories to the tree view.
		/// </summary>
		public void AddDirectories(WixDirectoryElement[] directories)
		{
			packageFilesTreeView.AddDirectories(directories);
		}
		/// <summary>
		/// Adds the set of files to the specified directory element. Each file
		/// gets its own parent component element.
		/// </summary>
		void AddFiles(WixDirectoryElement directoryElement, string directory)
		{
			foreach (string fileName in DirectoryReader.GetFiles(directory)) {
				if (!excludedNames.IsExcluded(fileName)) {
					string path = Path.Combine(directory, fileName);
					AddFileWithParentComponent(directoryElement, path);
				}
			}
		}
		/// <summary>
		/// Adds a new component element to the directory element.
		/// </summary>
		WixComponentElement AddComponent(WixDirectoryElement parentDirectory, string fileName)
		{
			if (parentDirectory != null) {
				WixComponentElement component = parentDirectory.AddComponent(fileName);
				return component;
			}
			return null;
		}
		/// <summary>
		/// Adds any subdirectories and files to the directory element.
		/// </summary>
		/// <param name="directoryElement">The directory element to add
		/// the components and subdirectories to.</param>
		/// <param name="directory">The full path of the directory.</param>
		void AddDirectoryContents(WixDirectoryElement directoryElement, string directory)
		{
			foreach (string subDirectory in DirectoryReader.GetDirectories(directory)) {
				string subDirectoryName = WixDirectoryElement.GetLastFolderInDirectoryName(subDirectory);
				if (!excludedNames.IsExcluded(subDirectoryName)) {
					WixDirectoryElement subDirectoryElement = AddDirectory(directoryElement, subDirectoryName);
					AddFiles(subDirectoryElement, subDirectory);
					
					// Add the subdirectory contents.
					AddDirectoryContents(subDirectoryElement, subDirectory);
				}
			}
		}