@joebigelow / wix-1 / commits / 832f4a07

Introduce symbols for standard directories

Rob Mensching committed Jul 21, 2020 at 14:20 UTC 832f4a076dbb9290a90057ccd98ba73288ac90f8
1 file changed +49 -34
src/WixToolset.Data/WindowsInstaller/WindowsInstallerStandard.cs
+49 -34
@@ -11,38 +11,7 @@ namespace WixToolset.Data.WindowsInstaller
11 {
12 private static readonly Dictionary<string, WixActionSymbol> standardActionsById;
13 private static readonly HashSet<string> standardActionNames;
14 -
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 - };
14 + private static readonly Dictionary<string, DirectorySymbol> standardDirectoriesById;
15
16 /// <summary>
17 /// References:
@@ -395,8 +364,44 @@ namespace WixToolset.Data.WindowsInstaller
364 new WixActionSymbol(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/WriteRegistryValues")) { Action="WriteRegistryValues", Sequence=5000, SequenceTable=SequenceTable.InstallExecuteSequence, Overridable = true },
365 };
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 +
402 standardActionNames = new HashSet<string>(standardActions.Select(a => a.Action));
403 standardActionsById = standardActions.ToDictionary(a => a.Id.Id);
404 + standardDirectoriesById = standardDirectories.ToDictionary(d => d.Id.Id);
405 }
406
407 /// <summary>
@@ -411,12 +416,17 @@ namespace WixToolset.Data.WindowsInstaller
416 /// </summary>
417 public static IEnumerable<WixActionSymbol> StandardActions() => standardActionsById.Values;
418
419 + /// <summary>
420 + /// Standard directories.
421 + /// </summary>
422 + public static IEnumerable<DirectorySymbol> StandardDirectories() => standardDirectoriesById.Values;
423 +
424 /// <summary>
425 /// Find out if a directory is a standard directory.
426 /// </summary>
417 - /// <param name="directoryName">Name of the directory.</param>
427 + /// <param name="directoryId">Name of the directory.</param>
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);
430
431 /// <summary>
432 /// Find out if a property is a standard property.
@@ -434,5 +444,10 @@ namespace WixToolset.Data.WindowsInstaller
444 /// Try to get standard action by sequence and action name.
445 /// </summary>
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);
452 }
453 }