aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRob Mensching <rob@firegiant.com>2020-07-21 14:20:55 -0700
committerRob Mensching <rob@firegiant.com>2020-07-21 14:33:33 -0700
commit832f4a076dbb9290a90057ccd98ba73288ac90f8 (patch)
tree547305c9c047f13f93947632bf527756caa18bbe /src
parent35d08c1563f69a1e0bfa47823f82d27120885b94 (diff)
downloadwix-832f4a076dbb9290a90057ccd98ba73288ac90f8.tar.gz
wix-832f4a076dbb9290a90057ccd98ba73288ac90f8.tar.bz2
wix-832f4a076dbb9290a90057ccd98ba73288ac90f8.zip
Introduce symbols for standard directories
Diffstat (limited to '')
-rw-r--r--src/WixToolset.Data/WindowsInstaller/WindowsInstallerStandard.cs83
1 files changed, 49 insertions, 34 deletions
diff --git a/src/WixToolset.Data/WindowsInstaller/WindowsInstallerStandard.cs b/src/WixToolset.Data/WindowsInstaller/WindowsInstallerStandard.cs
index c3cde117..0b40336b 100644
--- a/src/WixToolset.Data/WindowsInstaller/WindowsInstallerStandard.cs
+++ b/src/WixToolset.Data/WindowsInstaller/WindowsInstallerStandard.cs
@@ -11,38 +11,7 @@ namespace WixToolset.Data.WindowsInstaller
11 { 11 {
12 private static readonly Dictionary<string, WixActionSymbol> standardActionsById; 12 private static readonly Dictionary<string, WixActionSymbol> standardActionsById;
13 private static readonly HashSet<string> standardActionNames; 13 private static readonly HashSet<string> standardActionNames;
14 14 private static readonly Dictionary<string, DirectorySymbol> standardDirectoriesById;
15 private static readonly HashSet<string> standardDirectories = new HashSet<string>
16 {
17 "TARGETDIR",
18 "AdminToolsFolder",
19 "AppDataFolder",
20 "CommonAppDataFolder",
21 "CommonFilesFolder",
22 "DesktopFolder",
23 "FavoritesFolder",
24 "FontsFolder",
25 "LocalAppDataFolder",
26 "MyPicturesFolder",
27 "PersonalFolder",
28 "ProgramFilesFolder",
29 "ProgramMenuFolder",
30 "SendToFolder",
31 "StartMenuFolder",
32 "StartupFolder",
33 "System16Folder",
34 "SystemFolder",
35 "TempFolder",
36 "TemplateFolder",
37 "WindowsFolder",
38 "CommonFiles64Folder",
39 "ProgramFiles64Folder",
40 "System64Folder",
41 "NetHoodFolder",
42 "PrintHoodFolder",
43 "RecentFolder",
44 "WindowsVolume",
45 };
46 15
47 /// <summary> 16 /// <summary>
48 /// References: 17 /// References:
@@ -395,8 +364,44 @@ namespace WixToolset.Data.WindowsInstaller
395 new WixActionSymbol(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/WriteRegistryValues")) { Action="WriteRegistryValues", Sequence=5000, SequenceTable=SequenceTable.InstallExecuteSequence, Overridable = true }, 364 new WixActionSymbol(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/WriteRegistryValues")) { Action="WriteRegistryValues", Sequence=5000, SequenceTable=SequenceTable.InstallExecuteSequence, Overridable = true },
396 }; 365 };
397 366
367 var standardDirectories = new[]
368 {
369 new DirectorySymbol(null, new Identifier(AccessModifier.Public, "TARGETDIR")) { Name = "SourceDir" },
370 new DirectorySymbol(null, new Identifier(AccessModifier.Public, "AdminToolsFolder")) { Name = "Admin" },
371 new DirectorySymbol(null, new Identifier(AccessModifier.Public, "AppDataFolder")) { Name = "AppData" },
372 new DirectorySymbol(null, new Identifier(AccessModifier.Public, "CommonAppDataFolder")) { Name = "CommApp" },
373 new DirectorySymbol(null, new Identifier(AccessModifier.Public, "CommonFilesFolder")) { Name = "CFiles" },
374 new DirectorySymbol(null, new Identifier(AccessModifier.Public, "CommonFiles64Folder")) { Name = "CFiles64" },
375 new DirectorySymbol(null, new Identifier(AccessModifier.Public, "CommonFiles6432Folder")) { Name = "." },
376 new DirectorySymbol(null, new Identifier(AccessModifier.Public, "DesktopFolder")) { Name = "Desktop" },
377 new DirectorySymbol(null, new Identifier(AccessModifier.Public, "FavoritesFolder")) { Name = "Favs" },
378 new DirectorySymbol(null, new Identifier(AccessModifier.Public, "FontsFolder")) { Name = "Fonts" },
379 new DirectorySymbol(null, new Identifier(AccessModifier.Public, "LocalAppDataFolder")) { Name = "LocalApp" },
380 new DirectorySymbol(null, new Identifier(AccessModifier.Public, "MyPicturesFolder")) { Name = "Pictures" },
381 new DirectorySymbol(null, new Identifier(AccessModifier.Public, "NetHoodFolder")) { Name = "NetHood" },
382 new DirectorySymbol(null, new Identifier(AccessModifier.Public, "PersonalFolder")) { Name = "Personal" },
383 new DirectorySymbol(null, new Identifier(AccessModifier.Public, "PrintHoodFolder")) { Name = "Printers" },
384 new DirectorySymbol(null, new Identifier(AccessModifier.Public, "ProgramFilesFolder")) { Name = "PFiles" },
385 new DirectorySymbol(null, new Identifier(AccessModifier.Public, "ProgramFiles64Folder")) { Name = "PFiles64" },
386 new DirectorySymbol(null, new Identifier(AccessModifier.Public, "ProgramFiles6432Folder")) { Name = "." },
387 new DirectorySymbol(null, new Identifier(AccessModifier.Public, "ProgramMenuFolder")) { Name = "PMenu" },
388 new DirectorySymbol(null, new Identifier(AccessModifier.Public, "RecentFolder")) { Name = "Recent" },
389 new DirectorySymbol(null, new Identifier(AccessModifier.Public, "SendToFolder")) { Name = "SendTo" },
390 new DirectorySymbol(null, new Identifier(AccessModifier.Public, "StartMenuFolder")) { Name = "StrtMenu" },
391 new DirectorySymbol(null, new Identifier(AccessModifier.Public, "StartupFolder")) { Name = "StartUp" },
392 new DirectorySymbol(null, new Identifier(AccessModifier.Public, "SystemFolder")) { Name = "System" },
393 new DirectorySymbol(null, new Identifier(AccessModifier.Public, "System16Folder")) { Name = "System16" },
394 new DirectorySymbol(null, new Identifier(AccessModifier.Public, "System64Folder")) { Name = "System64" },
395 new DirectorySymbol(null, new Identifier(AccessModifier.Public, "System6432Folder")) { Name = "." },
396 new DirectorySymbol(null, new Identifier(AccessModifier.Public, "TempFolder")) { Name = "Temp" },
397 new DirectorySymbol(null, new Identifier(AccessModifier.Public, "TemplateFolder")) { Name = "Template" },
398 new DirectorySymbol(null, new Identifier(AccessModifier.Public, "WindowsFolder")) { Name = "Windows" },
399 new DirectorySymbol(null, new Identifier(AccessModifier.Public, "WindowsVolume")) { Name = "WinVol" },
400 };
401
398 standardActionNames = new HashSet<string>(standardActions.Select(a => a.Action)); 402 standardActionNames = new HashSet<string>(standardActions.Select(a => a.Action));
399 standardActionsById = standardActions.ToDictionary(a => a.Id.Id); 403 standardActionsById = standardActions.ToDictionary(a => a.Id.Id);
404 standardDirectoriesById = standardDirectories.ToDictionary(d => d.Id.Id);
400 } 405 }
401 406
402 /// <summary> 407 /// <summary>
@@ -412,11 +417,16 @@ namespace WixToolset.Data.WindowsInstaller
412 public static IEnumerable<WixActionSymbol> StandardActions() => standardActionsById.Values; 417 public static IEnumerable<WixActionSymbol> StandardActions() => standardActionsById.Values;
413 418
414 /// <summary> 419 /// <summary>
420 /// Standard directories.
421 /// </summary>
422 public static IEnumerable<DirectorySymbol> StandardDirectories() => standardDirectoriesById.Values;
423
424 /// <summary>
415 /// Find out if a directory is a standard directory. 425 /// Find out if a directory is a standard directory.
416 /// </summary> 426 /// </summary>
417 /// <param name="directoryName">Name of the directory.</param> 427 /// <param name="directoryId">Name of the directory.</param>
418 /// <returns>true if the directory is standard, false otherwise.</returns> 428 /// <returns>true if the directory is standard, false otherwise.</returns>
419 public static bool IsStandardDirectory(string directoryName) => standardDirectories.Contains(directoryName); 429 public static bool IsStandardDirectory(string directoryId) => standardDirectoriesById.ContainsKey(directoryId);
420 430
421 /// <summary> 431 /// <summary>
422 /// Find out if a property is a standard property. 432 /// Find out if a property is a standard property.
@@ -434,5 +444,10 @@ namespace WixToolset.Data.WindowsInstaller
434 /// Try to get standard action by sequence and action name. 444 /// Try to get standard action by sequence and action name.
435 /// </summary> 445 /// </summary>
436 public static bool TryGetStandardAction(string sequenceName, string actioname, out WixActionSymbol standardAction) => standardActionsById.TryGetValue(String.Concat(sequenceName, "/", actioname), out standardAction); 446 public static bool TryGetStandardAction(string sequenceName, string actioname, out WixActionSymbol standardAction) => standardActionsById.TryGetValue(String.Concat(sequenceName, "/", actioname), out standardAction);
447
448 /// <summary>
449 /// Try to get standard directory symbol by id.
450 /// </summary>
451 public static bool TryGetStandardDirectory(string directoryId, out DirectorySymbol symbol) => standardDirectoriesById.TryGetValue(directoryId, out symbol);
437 } 452 }
438} 453}