/// <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; }
/// <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); }
/// <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); }
public WixDirectoryTreeNode(WixDirectoryElement directoryElement) : base(directoryElement) { ContextmenuAddinTreePath = "/AddIns/WixBinding/PackageFilesView/ContextMenu/DirectoryTreeNode"; SetIcon(closedImage); Refresh(); sortOrder = 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)); }
/// <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); }
/// <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); }
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); }
/// <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); }
/// <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); } } }
/// <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); }
/// <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)); }
/// <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")); } }
/// <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); } }
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); } } }