diff options
| author | Rob Mensching <rob@firegiant.com> | 2021-01-05 15:13:37 -0800 |
|---|---|---|
| committer | Rob Mensching <rob@firegiant.com> | 2021-01-05 23:18:34 -0800 |
| commit | 0d1851c79901ba6ddbba9bb63f758760fe5be994 (patch) | |
| tree | 2ccb45459fe4290e9c3fb4ad698c20f9cd55203d /src/WixToolset.Core.WindowsInstaller | |
| parent | b00c72ed0ef19d2e46f60361fa06821b0bd5ec94 (diff) | |
| download | wix-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.cs | 16 |
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 | } |
