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
}