string GenerateUniqueChildDirectoryId(string childDirectoryId) { childDirectoryId = WixFileElement.GenerateId(childDirectoryId); if (!OwnerWixDocument.DirectoryIdExists(childDirectoryId)) { return(childDirectoryId); } return(GenerateUniqueChildDirectoryIdUsingParentDirectoryId(childDirectoryId)); }
string GenerateUniqueIdByAppendingNumberToEnd(string id) { int count = 0; string baseId = id; do { ++count; id = String.Concat(baseId, count); } while (OwnerWixDocument.ComponentIdExists(id)); return(id); }
string GenerateUniqueIdByAppendingNumberToFileNameId(string fileNameId) { string id = String.Empty; int count = 0; string fileNameWithoutExtension = Path.GetFileNameWithoutExtension(fileNameId); string extension = Path.GetExtension(fileNameId); do { ++count; id = String.Concat(fileNameWithoutExtension, count, extension); } while (OwnerWixDocument.FileIdExists(id)); return(id); }
/// <remarks> /// Takes the filename, removes all periods, and /// capitalises the first character and first extension character. /// </remarks> public void GenerateUniqueIdFromFileName(string fileName) { Id = GenerateIdFromFileName(fileName); if (!OwnerWixDocument.ComponentIdExists(Id)) { return; } Id = GenerateIdFromParentDirectoryAndFileName(fileName, Id); if (!OwnerWixDocument.ComponentIdExists(Id)) { return; } Id = GenerateUniqueIdByAppendingNumberToEnd(Id); }
/// <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); if (!OwnerWixDocument.FileIdExists(id)) { return(id); } id = GenerateIdFromParentDirectory(parentDirectory, id); if (!OwnerWixDocument.FileIdExists(id)) { return(id); } return(GenerateUniqueIdByAppendingNumberToFileNameId(id)); }
/// <summary> /// Initialises a new Wix File element with the specified /// <paramref name="fileName"/>. /// </summary> /// <remarks> /// The element generated will have an Id, LongName and Name /// all set and derived from the <paramref name="fileName"/> /// </remarks> void Init(string fileName) { Id = GenerateUniqueId(fileName); FileName = Path.GetFileName(fileName); Source = OwnerWixDocument.GetRelativePath(fileName);; }