aboutsummaryrefslogtreecommitdiff
path: root/src/WixToolset.Core.WindowsInstaller
diff options
context:
space:
mode:
authorRob Mensching <rob@firegiant.com>2021-01-05 15:13:37 -0800
committerRob Mensching <rob@firegiant.com>2021-01-05 23:18:34 -0800
commit0d1851c79901ba6ddbba9bb63f758760fe5be994 (patch)
tree2ccb45459fe4290e9c3fb4ad698c20f9cd55203d /src/WixToolset.Core.WindowsInstaller
parentb00c72ed0ef19d2e46f60361fa06821b0bd5ec94 (diff)
downloadwix-0d1851c79901ba6ddbba9bb63f758760fe5be994.tar.gz
wix-0d1851c79901ba6ddbba9bb63f758760fe5be994.tar.bz2
wix-0d1851c79901ba6ddbba9bb63f758760fe5be994.zip
Fix handling of duplicate directories
Diffstat (limited to 'src/WixToolset.Core.WindowsInstaller')
-rw-r--r--src/WixToolset.Core.WindowsInstaller/Bind/AddRequiredStandardDirectories.cs16
1 files changed, 8 insertions, 8 deletions
diff --git a/src/WixToolset.Core.WindowsInstaller/Bind/AddRequiredStandardDirectories.cs b/src/WixToolset.Core.WindowsInstaller/Bind/AddRequiredStandardDirectories.cs
index 4597639b..ee3bcc91 100644
--- a/src/WixToolset.Core.WindowsInstaller/Bind/AddRequiredStandardDirectories.cs
+++ b/src/WixToolset.Core.WindowsInstaller/Bind/AddRequiredStandardDirectories.cs
@@ -27,7 +27,7 @@ namespace WixToolset.Core.WindowsInstaller.Bind
27 public void Execute() 27 public void Execute()
28 { 28 {
29 var directories = this.Section.Symbols.OfType<DirectorySymbol>().ToList(); 29 var directories = this.Section.Symbols.OfType<DirectorySymbol>().ToList();
30 var directoriesById = directories.ToDictionary(d => d.Id.Id); 30 var directoryIds = new SortedSet<string>(directories.Select(d => d.Id.Id));
31 31
32 foreach (var directory in directories) 32 foreach (var directory in directories)
33 { 33 {
@@ -42,20 +42,20 @@ namespace WixToolset.Core.WindowsInstaller.Bind
42 } 42 }
43 else 43 else
44 { 44 {
45 this.EnsureStandardDirectoryAdded(directoriesById, parentDirectoryId, directory.SourceLineNumbers); 45 this.EnsureStandardDirectoryAdded(directoryIds, parentDirectoryId, directory.SourceLineNumbers);
46 } 46 }
47 } 47 }
48 48
49 if (!directoriesById.ContainsKey("TARGETDIR") && WindowsInstallerStandard.TryGetStandardDirectory("TARGETDIR", out var targetDir)) 49 if (!directoryIds.Contains("TARGETDIR") && WindowsInstallerStandard.TryGetStandardDirectory("TARGETDIR", out var targetDir))
50 { 50 {
51 directoriesById.Add(targetDir.Id.Id, targetDir); 51 directoryIds.Add(targetDir.Id.Id);
52 this.Section.AddSymbol(targetDir); 52 this.Section.AddSymbol(targetDir);
53 } 53 }
54 } 54 }
55 55
56 private void EnsureStandardDirectoryAdded(Dictionary<string, DirectorySymbol> directoriesById, string directoryId, SourceLineNumber sourceLineNumbers) 56 private void EnsureStandardDirectoryAdded(ISet<string> directoryIds, string directoryId, SourceLineNumber sourceLineNumbers)
57 { 57 {
58 if (!directoriesById.ContainsKey(directoryId) && WindowsInstallerStandard.TryGetStandardDirectory(directoryId, out var standardDirectory)) 58 if (!directoryIds.Contains(directoryId) && WindowsInstallerStandard.TryGetStandardDirectory(directoryId, out var standardDirectory))
59 { 59 {
60 var parentDirectoryId = this.GetStandardDirectoryParent(directoryId); 60 var parentDirectoryId = this.GetStandardDirectoryParent(directoryId);
61 61
@@ -65,12 +65,12 @@ namespace WixToolset.Core.WindowsInstaller.Bind
65 ParentDirectoryRef = parentDirectoryId, 65 ParentDirectoryRef = parentDirectoryId,
66 }; 66 };
67 67
68 directoriesById.Add(directory.Id.Id, directory); 68 directoryIds.Add(directory.Id.Id);
69 this.Section.AddSymbol(directory); 69 this.Section.AddSymbol(directory);
70 70
71 if (!String.IsNullOrEmpty(parentDirectoryId)) 71 if (!String.IsNullOrEmpty(parentDirectoryId))
72 { 72 {
73 this.EnsureStandardDirectoryAdded(directoriesById, parentDirectoryId, sourceLineNumbers); 73 this.EnsureStandardDirectoryAdded(directoryIds, parentDirectoryId, sourceLineNumbers);
74 } 74 }
75 } 75 }
76 } 76 }