aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRob Mensching <rob@firegiant.com>2020-02-05 14:34:11 -0800
committerRob Mensching <rob@firegiant.com>2020-02-05 14:43:36 -0800
commite87c38acec6597ab4d98820e2ba1fc891483c023 (patch)
tree72c7a92d460a30943bd09f4adfdb18bd0e25eb4a
parent2b001acb812edb523a072ac0bb4f49761616c080 (diff)
downloadwix-e87c38acec6597ab4d98820e2ba1fc891483c023.tar.gz
wix-e87c38acec6597ab4d98820e2ba1fc891483c023.tar.bz2
wix-e87c38acec6597ab4d98820e2ba1fc891483c023.zip
Improve handling of standard actions
-rw-r--r--src/WixToolset.Data/WindowsInstaller/WindowsInstallerStandard.cs426
1 files changed, 179 insertions, 247 deletions
diff --git a/src/WixToolset.Data/WindowsInstaller/WindowsInstallerStandard.cs b/src/WixToolset.Data/WindowsInstaller/WindowsInstallerStandard.cs
index 43a5e54c..5f01c3a0 100644
--- a/src/WixToolset.Data/WindowsInstaller/WindowsInstallerStandard.cs
+++ b/src/WixToolset.Data/WindowsInstaller/WindowsInstallerStandard.cs
@@ -2,244 +2,15 @@
2 2
3namespace WixToolset.Data.WindowsInstaller 3namespace WixToolset.Data.WindowsInstaller
4{ 4{
5 using System;
5 using System.Collections.Generic; 6 using System.Collections.Generic;
7 using System.Linq;
6 using WixToolset.Data.Tuples; 8 using WixToolset.Data.Tuples;
7 9
8 public static class WindowsInstallerStandard 10 public static class WindowsInstallerStandard
9 { 11 {
10 private static readonly HashSet<string> standardActionNames = new HashSet<string> 12 private static readonly Dictionary<string, WixActionTuple> standardActionsById;
11 { 13 private static readonly HashSet<string> standardActionNames;
12 "AllocateRegistrySpace",
13 "AppSearch",
14 "BindImage",
15 "CCPSearch",
16 "CostFinalize",
17 "CostInitialize",
18 "CreateFolders",
19 "CreateShortcuts",
20 "DeleteServices",
21 "DisableRollback",
22 "DuplicateFiles",
23 "ExecuteAction",
24 "FileCost",
25 "FindRelatedProducts",
26 "ForceReboot",
27 "InstallAdminPackage",
28 "InstallExecute",
29 "InstallExecuteAgain",
30 "InstallFiles",
31 "InstallFinalize",
32 "InstallInitialize",
33 "InstallODBC",
34 "InstallServices",
35 "InstallSFPCatalogFile",
36 "InstallValidate",
37 "IsolateComponents",
38 "LaunchConditions",
39 "MigrateFeatureStates",
40 "MoveFiles",
41 "MsiConfigureServices",
42 "MsiPublishAssemblies",
43 "MsiUnpublishAssemblies",
44 "PatchFiles",
45 "ProcessComponents",
46 "PublishComponents",
47 "PublishFeatures",
48 "PublishProduct",
49 "RegisterClassInfo",
50 "RegisterComPlus",
51 "RegisterExtensionInfo",
52 "RegisterFonts",
53 "RegisterMIMEInfo",
54 "RegisterProduct",
55 "RegisterProgIdInfo",
56 "RegisterTypeLibraries",
57 "RegisterUser",
58 "RemoveDuplicateFiles",
59 "RemoveEnvironmentStrings",
60 "RemoveExistingProducts",
61 "RemoveFiles",
62 "RemoveFolders",
63 "RemoveIniValues",
64 "RemoveODBC",
65 "RemoveRegistryValues",
66 "RemoveShortcuts",
67 "ResolveSource",
68 "RMCCPSearch",
69 "ScheduleReboot",
70 "SelfRegModules",
71 "SelfUnregModules",
72 "SetODBCFolders",
73 "StartServices",
74 "StopServices",
75 "UnpublishComponents",
76 "UnpublishFeatures",
77 "UnregisterClassInfo",
78 "UnregisterComPlus",
79 "UnregisterExtensionInfo",
80 "UnregisterFonts",
81 "UnregisterMIMEInfo",
82 "UnregisterProgIdInfo",
83 "UnregisterTypeLibraries",
84 "ValidateProductID",
85 "WriteEnvironmentStrings",
86 "WriteIniValues",
87 "WriteRegistryValues",
88 };
89
90 private static readonly WixActionTuple[] standardActions = new[]
91 {
92 new WixActionTuple(null, new Identifier(AccessModifier.Public, "AdminExecuteSequence/InstallInitialize")) { Action="InstallInitialize", Sequence=1500, SequenceTable=SequenceTable.AdminExecuteSequence, Overridable = true },
93 new WixActionTuple(null, new Identifier(AccessModifier.Public, "AdvertiseExecuteSequence/InstallInitialize")) { Action="InstallInitialize", Sequence=1500, SequenceTable=SequenceTable.AdvertiseExecuteSequence, Overridable = true },
94 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/InstallInitialize")) { Action="InstallInitialize", Sequence=1500, SequenceTable=SequenceTable.InstallExecuteSequence, Overridable = true },
95
96 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/InstallExecute")) { Action="InstallExecute", Sequence=6500, SequenceTable=SequenceTable.InstallExecuteSequence, Overridable = true, Condition="NOT Installed" },
97
98 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/InstallExecuteAgain")) { Action="InstallExecuteAgain", Sequence=6550, SequenceTable=SequenceTable.InstallExecuteSequence, Overridable = true, Condition="NOT Installed" },
99
100 new WixActionTuple(null, new Identifier(AccessModifier.Public, "AdminExecuteSequence/InstallFinalize")) { Action="InstallFinalize", Sequence=6600, SequenceTable=SequenceTable.AdminExecuteSequence, Overridable = true },
101 new WixActionTuple(null, new Identifier(AccessModifier.Public, "AdvertiseExecuteSequence/InstallFinalize")) { Action="InstallFinalize", Sequence=6600, SequenceTable=SequenceTable.AdvertiseExecuteSequence, Overridable = true },
102 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/InstallFinalize")) { Action="InstallFinalize", Sequence=6600, SequenceTable=SequenceTable.InstallExecuteSequence, Overridable = true },
103
104 new WixActionTuple(null, new Identifier(AccessModifier.Public, "AdminExecuteSequence/InstallFiles")) { Action="InstallFiles", Sequence=4000, SequenceTable=SequenceTable.AdminExecuteSequence, Overridable = true },
105 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/InstallFiles")) { Action="InstallFiles", Sequence=4000, SequenceTable=SequenceTable.InstallExecuteSequence, Overridable = true },
106
107 new WixActionTuple(null, new Identifier(AccessModifier.Public, "AdminExecuteSequence/InstallAdminPackage")) { Action="InstallAdminPackage", Sequence=3900, SequenceTable=SequenceTable.AdminExecuteSequence, Overridable = true },
108
109 new WixActionTuple(null, new Identifier(AccessModifier.Public, "AdminExecuteSequence/FileCost")) { Action="FileCost", Sequence=900, SequenceTable=SequenceTable.AdminExecuteSequence, Overridable = true },
110 new WixActionTuple(null, new Identifier(AccessModifier.Public, "AdminUISequence/FileCost")) { Action="FileCost", Sequence=900, SequenceTable=SequenceTable.AdminUISequence, Overridable = true },
111 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/FileCost")) { Action="FileCost", Sequence=900, SequenceTable=SequenceTable.InstallExecuteSequence , Overridable = true },
112 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallUISequence/FileCost")) { Action="FileCost", Sequence=900, SequenceTable=SequenceTable.InstallUISequence , Overridable = true },
113
114 new WixActionTuple(null, new Identifier(AccessModifier.Public, "AdminExecuteSequence/CostInitialize")) { Action="CostInitialize", Sequence=800, SequenceTable=SequenceTable.AdminExecuteSequence , Overridable = true },
115 new WixActionTuple(null, new Identifier(AccessModifier.Public, "AdminUISequence/CostInitialize")) { Action="CostInitialize", Sequence=800, SequenceTable=SequenceTable.AdminUISequence , Overridable = true },
116 new WixActionTuple(null, new Identifier(AccessModifier.Public, "AdvertiseExecuteSequence/CostInitialize")) { Action="CostInitialize", Sequence=800, SequenceTable=SequenceTable.AdvertiseExecuteSequence , Overridable = true },
117 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/CostInitialize")) { Action="CostInitialize", Sequence=800, SequenceTable=SequenceTable.InstallExecuteSequence , Overridable = true },
118 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallUISequence/CostInitialize")) { Action="CostInitialize", Sequence=800, SequenceTable=SequenceTable.InstallUISequence , Overridable = true },
119
120 new WixActionTuple(null, new Identifier(AccessModifier.Public, "AdminExecuteSequence/CostFinalize")) { Action="CostFinalize", Sequence=1000, SequenceTable=SequenceTable.AdminExecuteSequence , Overridable = true },
121 new WixActionTuple(null, new Identifier(AccessModifier.Public, "AdminUISequence/CostFinalize")) { Action="CostFinalize", Sequence=1000, SequenceTable=SequenceTable.AdminUISequence , Overridable = true },
122 new WixActionTuple(null, new Identifier(AccessModifier.Public, "AdvertiseExecuteSequence/CostFinalize")) { Action="CostFinalize", Sequence=1000, SequenceTable=SequenceTable.AdvertiseExecuteSequence , Overridable = true },
123 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/CostFinalize")) { Action="CostFinalize", Sequence=1000, SequenceTable=SequenceTable.InstallExecuteSequence , Overridable = true },
124 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallUISequence/CostFinalize")) { Action="CostFinalize", Sequence=1000, SequenceTable=SequenceTable.InstallUISequence , Overridable = true },
125
126 new WixActionTuple(null, new Identifier(AccessModifier.Public, "AdminExecuteSequence/InstallValidate")) { Action="InstallValidate", Sequence=1400, SequenceTable=SequenceTable.AdminExecuteSequence , Overridable = true },
127 new WixActionTuple(null, new Identifier(AccessModifier.Public, "AdvertiseExecuteSequence/InstallValidate")) { Action="InstallValidate", Sequence=1400, SequenceTable=SequenceTable.AdvertiseExecuteSequence , Overridable = true },
128 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/InstallValidate")) { Action="InstallValidate", Sequence=1400, SequenceTable=SequenceTable.InstallExecuteSequence , Overridable = true },
129
130 new WixActionTuple(null, new Identifier(AccessModifier.Public, "AdminUISequence/ExecuteAction")) { Action="ExecuteAction", Sequence=1300, SequenceTable=SequenceTable.AdminUISequence , Overridable = true },
131 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallUISequence/ExecuteAction")) { Action="ExecuteAction", Sequence=1300, SequenceTable=SequenceTable.InstallUISequence , Overridable = true },
132
133 new WixActionTuple(null, new Identifier(AccessModifier.Public, "AdvertiseExecuteSequence/CreateShortcuts")) { Action="CreateShortcuts", Sequence=4500, SequenceTable=SequenceTable.AdvertiseExecuteSequence , Overridable = true },
134 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/CreateShortcuts")) { Action="CreateShortcuts", Sequence=4500, SequenceTable=SequenceTable.InstallExecuteSequence , Overridable = true },
135
136 new WixActionTuple(null, new Identifier(AccessModifier.Public, "AdvertiseExecuteSequence/MsiPublishAssemblies")) { Action="MsiPublishAssemblies", Sequence=6250, SequenceTable=SequenceTable.AdvertiseExecuteSequence , Overridable = true },
137 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/MsiPublishAssemblies")) { Action="MsiPublishAssemblies", Sequence=6250, SequenceTable=SequenceTable.InstallExecuteSequence , Overridable = true },
138
139 new WixActionTuple(null, new Identifier(AccessModifier.Public, "AdvertiseExecuteSequence/PublishComponents")) { Action="PublishComponents", Sequence=6200, SequenceTable=SequenceTable.AdvertiseExecuteSequence , Overridable = true },
140 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/PublishComponents")) { Action="PublishComponents", Sequence=6200, SequenceTable=SequenceTable.InstallExecuteSequence , Overridable = true },
141
142 new WixActionTuple(null, new Identifier(AccessModifier.Public, "AdvertiseExecuteSequence/PublishFeatures")) { Action="PublishFeatures", Sequence=6300, SequenceTable=SequenceTable.AdvertiseExecuteSequence , Overridable = true },
143 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/PublishFeatures")) { Action="PublishFeatures", Sequence=6300, SequenceTable=SequenceTable.InstallExecuteSequence , Overridable = true },
144
145 new WixActionTuple(null, new Identifier(AccessModifier.Public, "AdvertiseExecuteSequence/PublishProduct")) { Action="PublishProduct", Sequence=6400, SequenceTable=SequenceTable.AdvertiseExecuteSequence , Overridable = true },
146 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/PublishProduct")) { Action="PublishProduct", Sequence=6400, SequenceTable=SequenceTable.InstallExecuteSequence , Overridable = true },
147
148 new WixActionTuple(null, new Identifier(AccessModifier.Public, "AdvertiseExecuteSequence/RegisterClassInfo")) { Action="RegisterClassInfo", Sequence=4600, SequenceTable=SequenceTable.AdvertiseExecuteSequence , Overridable = true },
149 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/RegisterClassInfo")) { Action="RegisterClassInfo", Sequence=4600, SequenceTable=SequenceTable.InstallExecuteSequence , Overridable = true },
150
151 new WixActionTuple(null, new Identifier(AccessModifier.Public, "AdvertiseExecuteSequence/RegisterExtensionInfo")) { Action="RegisterExtensionInfo", Sequence=4700, SequenceTable=SequenceTable.AdvertiseExecuteSequence , Overridable = true },
152 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/RegisterExtensionInfo")) { Action="RegisterExtensionInfo", Sequence=4700, SequenceTable=SequenceTable.InstallExecuteSequence , Overridable = true },
153
154 new WixActionTuple(null, new Identifier(AccessModifier.Public, "AdvertiseExecuteSequence/RegisterMIMEInfo")) { Action="RegisterMIMEInfo", Sequence=4900, SequenceTable=SequenceTable.AdvertiseExecuteSequence , Overridable = true },
155 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/RegisterMIMEInfo")) { Action="RegisterMIMEInfo", Sequence=4900, SequenceTable=SequenceTable.InstallExecuteSequence , Overridable = true },
156
157 new WixActionTuple(null, new Identifier(AccessModifier.Public, "AdvertiseExecuteSequence/RegisterProgIdInfo")) { Action="RegisterProgIdInfo", Sequence=4800, SequenceTable=SequenceTable.AdvertiseExecuteSequence , Overridable = true },
158 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/RegisterProgIdInfo")) { Action="RegisterProgIdInfo", Sequence=4800, SequenceTable=SequenceTable.InstallExecuteSequence , Overridable = true },
159
160 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/AllocateRegistrySpace")) { Action="AllocateRegistrySpace", Sequence=1550, SequenceTable=SequenceTable.InstallExecuteSequence , Overridable = true },
161
162 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallUISequence/AppSearch")) { Action="AppSearch", Sequence=50, SequenceTable=SequenceTable.InstallUISequence , Overridable = true },
163 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/AppSearch")) { Action="AppSearch", Sequence=50, SequenceTable=SequenceTable.InstallExecuteSequence , Overridable = true },
164
165 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/BindImage")) { Action="BindImage", Sequence=4300, SequenceTable=SequenceTable.InstallExecuteSequence , Overridable = true },
166 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/CreateFolders")) { Action="CreateFolders", Sequence=3700, SequenceTable=SequenceTable.InstallExecuteSequence , Overridable = true },
167 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/DuplicateFiles")) { Action="DuplicateFiles", Sequence=4210, SequenceTable=SequenceTable.InstallExecuteSequence , Overridable = true },
168
169 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallUISequence/FindRelatedProducts")) { Action="FindRelatedProducts", Sequence=25, SequenceTable=SequenceTable.InstallUISequence , Overridable = true },
170 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/FindRelatedProducts")) { Action="FindRelatedProducts", Sequence=25, SequenceTable=SequenceTable.InstallExecuteSequence , Overridable = true },
171
172 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/InstallODBC")) { Action="InstallODBC", Sequence=5400, SequenceTable=SequenceTable.InstallExecuteSequence , Overridable = true },
173
174 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/InstallServices")) { Action="InstallServices", Sequence=5800, SequenceTable=SequenceTable.InstallExecuteSequence, Overridable = true, Condition="VersionNT" },
175 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/MsiConfigureServices")) { Action="MsiConfigureServices", Sequence=5850, SequenceTable=SequenceTable.InstallExecuteSequence, Overridable = true, Condition="VersionNT>=600" },
176
177 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallUISequence/IsolateComponents")) { Action="IsolateComponents", Sequence=950, SequenceTable=SequenceTable.InstallUISequence , Overridable = true },
178 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/IsolateComponents")) { Action="IsolateComponents", Sequence=950, SequenceTable=SequenceTable.InstallExecuteSequence , Overridable = true },
179
180 new WixActionTuple(null, new Identifier(AccessModifier.Public, "AdminUISequence/LaunchConditions")) { Action="LaunchConditions", Sequence=100, SequenceTable=SequenceTable.AdminUISequence , Overridable = true },
181 new WixActionTuple(null, new Identifier(AccessModifier.Public, "AdminExecuteSequence/LaunchConditions")) { Action="LaunchConditions", Sequence=100, SequenceTable=SequenceTable.AdminExecuteSequence , Overridable = true },
182 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallUISequence/LaunchConditions")) { Action="LaunchConditions", Sequence=100, SequenceTable=SequenceTable.InstallUISequence , Overridable = true },
183 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/LaunchConditions")) { Action="LaunchConditions", Sequence=100, SequenceTable=SequenceTable.InstallExecuteSequence , Overridable = true },
184
185 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallUISequence/MigrateFeatureStates")) { Action="MigrateFeatureStates", Sequence=1200, SequenceTable=SequenceTable.InstallUISequence , Overridable = true },
186 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/MigrateFeatureStates")) { Action="MigrateFeatureStates", Sequence=1200, SequenceTable=SequenceTable.InstallExecuteSequence , Overridable = true },
187
188 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/MoveFiles")) { Action="MoveFiles", Sequence=3800, SequenceTable=SequenceTable.InstallExecuteSequence , Overridable = true },
189
190 new WixActionTuple(null, new Identifier(AccessModifier.Public, "AdminExecuteSequence/PatchFiles")) { Action="PatchFiles", Sequence=4090, SequenceTable=SequenceTable.AdminExecuteSequence , Overridable = true },
191 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/PatchFiles")) { Action="PatchFiles", Sequence=4090, SequenceTable=SequenceTable.InstallExecuteSequence , Overridable = true },
192
193 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/ProcessComponents")) { Action="ProcessComponents", Sequence=1600, SequenceTable=SequenceTable.InstallExecuteSequence , Overridable = true },
194
195 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/RegisterComPlus")) { Action="RegisterComPlus", Sequence=5700, SequenceTable=SequenceTable.InstallExecuteSequence , Overridable = true },
196 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/RegisterFonts")) { Action="RegisterFonts", Sequence=5300, SequenceTable=SequenceTable.InstallExecuteSequence , Overridable = true },
197 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/RegisterProduct")) { Action="RegisterProduct", Sequence=6100, SequenceTable=SequenceTable.InstallExecuteSequence , Overridable = true },
198 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/RegisterTypeLibraries")) { Action="RegisterTypeLibraries", Sequence=5500, SequenceTable=SequenceTable.InstallExecuteSequence , Overridable = true },
199 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/RegisterUser")) { Action="RegisterUser", Sequence=6000, SequenceTable=SequenceTable.InstallExecuteSequence , Overridable = true },
200
201 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/RemoveDuplicateFiles")) { Action="RemoveDuplicateFiles", Sequence=3400, SequenceTable=SequenceTable.InstallExecuteSequence , Overridable = true },
202 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/RemoveEnvironmentStrings")) { Action="RemoveEnvironmentStrings", Sequence=3300, SequenceTable=SequenceTable.InstallExecuteSequence , Overridable = true },
203 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/RemoveFiles")) { Action="RemoveFiles", Sequence=3500, SequenceTable=SequenceTable.InstallExecuteSequence , Overridable = true },
204 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/RemoveFolders")) { Action="RemoveFolders", Sequence=3600, SequenceTable=SequenceTable.InstallExecuteSequence , Overridable = true },
205 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/RemoveIniValues")) { Action="RemoveIniValues", Sequence=3100, SequenceTable=SequenceTable.InstallExecuteSequence , Overridable = true },
206 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/RemoveODBC")) { Action="RemoveODBC", Sequence=2400, SequenceTable=SequenceTable.InstallExecuteSequence , Overridable = true },
207 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/RemoveRegistryValues")) { Action="RemoveRegistryValues", Sequence=2600, SequenceTable=SequenceTable.InstallExecuteSequence , Overridable = true },
208 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/RemoveShortcuts")) { Action="RemoveShortcuts", Sequence=3200, SequenceTable=SequenceTable.InstallExecuteSequence , Overridable = true },
209
210 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/SelfRegModules")) { Action="SelfRegModules", Sequence=5600, SequenceTable=SequenceTable.InstallExecuteSequence , Overridable = true },
211 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/SelfUnregModules")) { Action="SelfUnregModules", Sequence=2200, SequenceTable=SequenceTable.InstallExecuteSequence , Overridable = true },
212 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/SetODBCFolders")) { Action="SetODBCFolders", Sequence=1100, SequenceTable=SequenceTable.InstallExecuteSequence , Overridable = true },
213
214 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/CCPSearch")) { Action="CCPSearch", Sequence=500, SequenceTable=SequenceTable.InstallExecuteSequence, Overridable = true, Condition="NOT Installed" },
215 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallUISequence/CCPSearch")) { Action="CCPSearch", Sequence=500, SequenceTable=SequenceTable.InstallUISequence, Overridable = true, Condition="NOT Installed" },
216
217 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/DeleteServices")) { Action="DeleteServices", Sequence=2000, SequenceTable=SequenceTable.InstallExecuteSequence, Overridable = true, Condition="VersionNT" },
218
219 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/RMCCPSearch")) { Action="RMCCPSearch", Sequence=600, SequenceTable=SequenceTable.InstallExecuteSequence, Overridable = true, Condition="NOT Installed" },
220 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallUISequence/RMCCPSearch")) { Action="RMCCPSearch", Sequence=600, SequenceTable=SequenceTable.InstallUISequence, Overridable = true, Condition="NOT Installed" },
221
222 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/StartServices")) { Action="StartServices", Sequence=5900, SequenceTable=SequenceTable.InstallExecuteSequence, Overridable = true, Condition="VersionNT" },
223 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/StopServices")) { Action="StopServices", Sequence=1900, SequenceTable=SequenceTable.InstallExecuteSequence, Overridable = true, Condition="VersionNT" },
224
225 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/MsiUnpublishAssemblies")) { Action="MsiUnpublishAssemblies", Sequence=1750, SequenceTable=SequenceTable.InstallExecuteSequence , Overridable = true },
226 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/UnpublishComponents")) { Action="UnpublishComponents", Sequence=1700, SequenceTable=SequenceTable.InstallExecuteSequence , Overridable = true },
227 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/UnpublishFeatures")) { Action="UnpublishFeatures", Sequence=1800, SequenceTable=SequenceTable.InstallExecuteSequence , Overridable = true },
228 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/UnregisterClassInfo")) { Action="UnregisterClassInfo", Sequence=2700, SequenceTable=SequenceTable.InstallExecuteSequence , Overridable = true },
229 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/UnregisterComPlus")) { Action="UnregisterComPlus", Sequence=2100, SequenceTable=SequenceTable.InstallExecuteSequence , Overridable = true },
230 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/UnregisterExtensionInfo")) { Action="UnregisterExtensionInfo", Sequence=2800, SequenceTable=SequenceTable.InstallExecuteSequence , Overridable = true },
231 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/UnregisterFonts")) { Action="UnregisterFonts", Sequence=2500, SequenceTable=SequenceTable.InstallExecuteSequence , Overridable = true },
232 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/UnregisterMIMEInfo")) { Action="UnregisterMIMEInfo", Sequence=3000, SequenceTable=SequenceTable.InstallExecuteSequence , Overridable = true },
233 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/UnregisterProgIdInfo")) { Action="UnregisterProgIdInfo", Sequence=2900, SequenceTable=SequenceTable.InstallExecuteSequence , Overridable = true },
234 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/UnregisterTypeLibraries")) { Action="UnregisterTypeLibraries", Sequence=2300, SequenceTable=SequenceTable.InstallExecuteSequence , Overridable = true },
235
236 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallUISequence/ValidateProductID")) { Action="ValidateProductID", Sequence=700, SequenceTable=SequenceTable.InstallUISequence , Overridable = true },
237 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/ValidateProductID")) { Action="ValidateProductID", Sequence=700, SequenceTable=SequenceTable.InstallExecuteSequence , Overridable = true },
238
239 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/WriteEnvironmentStrings")) { Action="WriteEnvironmentStrings", Sequence=5200, SequenceTable=SequenceTable.InstallExecuteSequence , Overridable = true },
240 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/WriteIniValues")) { Action="WriteIniValues", Sequence=5100, SequenceTable=SequenceTable.InstallExecuteSequence , Overridable = true },
241 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/WriteRegistryValues")) { Action="WriteRegistryValues", Sequence=5000, SequenceTable=SequenceTable.InstallExecuteSequence , Overridable = true },
242 };
243 14
244 private static readonly HashSet<string> standardDirectories = new HashSet<string> 15 private static readonly HashSet<string> standardDirectories = new HashSet<string>
245 { 16 {
@@ -468,39 +239,200 @@ namespace WixToolset.Data.WindowsInstaller
468 "WindowsVolume", 239 "WindowsVolume",
469 }; 240 };
470 241
242 static WindowsInstallerStandard()
243 {
244 var standardActions = new[]
245 {
246 new WixActionTuple(null, new Identifier(AccessModifier.Public, "AdminExecuteSequence/InstallInitialize")) { Action="InstallInitialize", Sequence=1500, SequenceTable=SequenceTable.AdminExecuteSequence, Overridable = true },
247 new WixActionTuple(null, new Identifier(AccessModifier.Public, "AdvertiseExecuteSequence/InstallInitialize")) { Action="InstallInitialize", Sequence=1500, SequenceTable=SequenceTable.AdvertiseExecuteSequence, Overridable = true },
248 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/InstallInitialize")) { Action="InstallInitialize", Sequence=1500, SequenceTable=SequenceTable.InstallExecuteSequence, Overridable = true },
249
250 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/InstallExecute")) { Action="InstallExecute", Sequence=6500, SequenceTable=SequenceTable.InstallExecuteSequence, Overridable = true, Condition="NOT Installed" },
251
252 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/InstallExecuteAgain")) { Action="InstallExecuteAgain", Sequence=6550, SequenceTable=SequenceTable.InstallExecuteSequence, Overridable = true, Condition="NOT Installed" },
253
254 new WixActionTuple(null, new Identifier(AccessModifier.Public, "AdminExecuteSequence/InstallFinalize")) { Action="InstallFinalize", Sequence=6600, SequenceTable=SequenceTable.AdminExecuteSequence, Overridable = true },
255 new WixActionTuple(null, new Identifier(AccessModifier.Public, "AdvertiseExecuteSequence/InstallFinalize")) { Action="InstallFinalize", Sequence=6600, SequenceTable=SequenceTable.AdvertiseExecuteSequence, Overridable = true },
256 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/InstallFinalize")) { Action="InstallFinalize", Sequence=6600, SequenceTable=SequenceTable.InstallExecuteSequence, Overridable = true },
257
258 new WixActionTuple(null, new Identifier(AccessModifier.Public, "AdminExecuteSequence/InstallFiles")) { Action="InstallFiles", Sequence=4000, SequenceTable=SequenceTable.AdminExecuteSequence, Overridable = true },
259 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/InstallFiles")) { Action="InstallFiles", Sequence=4000, SequenceTable=SequenceTable.InstallExecuteSequence, Overridable = true },
260
261 new WixActionTuple(null, new Identifier(AccessModifier.Public, "AdminExecuteSequence/InstallAdminPackage")) { Action="InstallAdminPackage", Sequence=3900, SequenceTable=SequenceTable.AdminExecuteSequence, Overridable = true },
262
263 new WixActionTuple(null, new Identifier(AccessModifier.Public, "AdminExecuteSequence/FileCost")) { Action="FileCost", Sequence=900, SequenceTable=SequenceTable.AdminExecuteSequence, Overridable = true },
264 new WixActionTuple(null, new Identifier(AccessModifier.Public, "AdminUISequence/FileCost")) { Action="FileCost", Sequence=900, SequenceTable=SequenceTable.AdminUISequence, Overridable = true },
265 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/FileCost")) { Action="FileCost", Sequence=900, SequenceTable=SequenceTable.InstallExecuteSequence , Overridable = true },
266 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallUISequence/FileCost")) { Action="FileCost", Sequence=900, SequenceTable=SequenceTable.InstallUISequence , Overridable = true },
267
268 new WixActionTuple(null, new Identifier(AccessModifier.Public, "AdminExecuteSequence/CostInitialize")) { Action="CostInitialize", Sequence=800, SequenceTable=SequenceTable.AdminExecuteSequence , Overridable = true },
269 new WixActionTuple(null, new Identifier(AccessModifier.Public, "AdminUISequence/CostInitialize")) { Action="CostInitialize", Sequence=800, SequenceTable=SequenceTable.AdminUISequence , Overridable = true },
270 new WixActionTuple(null, new Identifier(AccessModifier.Public, "AdvertiseExecuteSequence/CostInitialize")) { Action="CostInitialize", Sequence=800, SequenceTable=SequenceTable.AdvertiseExecuteSequence , Overridable = true },
271 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/CostInitialize")) { Action="CostInitialize", Sequence=800, SequenceTable=SequenceTable.InstallExecuteSequence , Overridable = true },
272 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallUISequence/CostInitialize")) { Action="CostInitialize", Sequence=800, SequenceTable=SequenceTable.InstallUISequence , Overridable = true },
273
274 new WixActionTuple(null, new Identifier(AccessModifier.Public, "AdminExecuteSequence/CostFinalize")) { Action="CostFinalize", Sequence=1000, SequenceTable=SequenceTable.AdminExecuteSequence , Overridable = true },
275 new WixActionTuple(null, new Identifier(AccessModifier.Public, "AdminUISequence/CostFinalize")) { Action="CostFinalize", Sequence=1000, SequenceTable=SequenceTable.AdminUISequence , Overridable = true },
276 new WixActionTuple(null, new Identifier(AccessModifier.Public, "AdvertiseExecuteSequence/CostFinalize")) { Action="CostFinalize", Sequence=1000, SequenceTable=SequenceTable.AdvertiseExecuteSequence , Overridable = true },
277 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/CostFinalize")) { Action="CostFinalize", Sequence=1000, SequenceTable=SequenceTable.InstallExecuteSequence , Overridable = true },
278 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallUISequence/CostFinalize")) { Action="CostFinalize", Sequence=1000, SequenceTable=SequenceTable.InstallUISequence , Overridable = true },
279
280 new WixActionTuple(null, new Identifier(AccessModifier.Public, "AdminExecuteSequence/InstallValidate")) { Action="InstallValidate", Sequence=1400, SequenceTable=SequenceTable.AdminExecuteSequence , Overridable = true },
281 new WixActionTuple(null, new Identifier(AccessModifier.Public, "AdvertiseExecuteSequence/InstallValidate")) { Action="InstallValidate", Sequence=1400, SequenceTable=SequenceTable.AdvertiseExecuteSequence , Overridable = true },
282 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/InstallValidate")) { Action="InstallValidate", Sequence=1400, SequenceTable=SequenceTable.InstallExecuteSequence , Overridable = true },
283
284 new WixActionTuple(null, new Identifier(AccessModifier.Public, "AdminUISequence/ExecuteAction")) { Action="ExecuteAction", Sequence=1300, SequenceTable=SequenceTable.AdminUISequence , Overridable = true },
285 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallUISequence/ExecuteAction")) { Action="ExecuteAction", Sequence=1300, SequenceTable=SequenceTable.InstallUISequence , Overridable = true },
286
287 new WixActionTuple(null, new Identifier(AccessModifier.Public, "AdvertiseExecuteSequence/CreateShortcuts")) { Action="CreateShortcuts", Sequence=4500, SequenceTable=SequenceTable.AdvertiseExecuteSequence , Overridable = true },
288 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/CreateShortcuts")) { Action="CreateShortcuts", Sequence=4500, SequenceTable=SequenceTable.InstallExecuteSequence , Overridable = true },
289
290 new WixActionTuple(null, new Identifier(AccessModifier.Public, "AdvertiseExecuteSequence/MsiPublishAssemblies")) { Action="MsiPublishAssemblies", Sequence=6250, SequenceTable=SequenceTable.AdvertiseExecuteSequence , Overridable = true },
291 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/MsiPublishAssemblies")) { Action="MsiPublishAssemblies", Sequence=6250, SequenceTable=SequenceTable.InstallExecuteSequence , Overridable = true },
292
293 new WixActionTuple(null, new Identifier(AccessModifier.Public, "AdvertiseExecuteSequence/PublishComponents")) { Action="PublishComponents", Sequence=6200, SequenceTable=SequenceTable.AdvertiseExecuteSequence , Overridable = true },
294 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/PublishComponents")) { Action="PublishComponents", Sequence=6200, SequenceTable=SequenceTable.InstallExecuteSequence , Overridable = true },
295
296 new WixActionTuple(null, new Identifier(AccessModifier.Public, "AdvertiseExecuteSequence/PublishFeatures")) { Action="PublishFeatures", Sequence=6300, SequenceTable=SequenceTable.AdvertiseExecuteSequence , Overridable = true },
297 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/PublishFeatures")) { Action="PublishFeatures", Sequence=6300, SequenceTable=SequenceTable.InstallExecuteSequence , Overridable = true },
298
299 new WixActionTuple(null, new Identifier(AccessModifier.Public, "AdvertiseExecuteSequence/PublishProduct")) { Action="PublishProduct", Sequence=6400, SequenceTable=SequenceTable.AdvertiseExecuteSequence , Overridable = true },
300 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/PublishProduct")) { Action="PublishProduct", Sequence=6400, SequenceTable=SequenceTable.InstallExecuteSequence , Overridable = true },
301
302 new WixActionTuple(null, new Identifier(AccessModifier.Public, "AdvertiseExecuteSequence/RegisterClassInfo")) { Action="RegisterClassInfo", Sequence=4600, SequenceTable=SequenceTable.AdvertiseExecuteSequence , Overridable = true },
303 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/RegisterClassInfo")) { Action="RegisterClassInfo", Sequence=4600, SequenceTable=SequenceTable.InstallExecuteSequence , Overridable = true },
304
305 new WixActionTuple(null, new Identifier(AccessModifier.Public, "AdvertiseExecuteSequence/RegisterExtensionInfo")) { Action="RegisterExtensionInfo", Sequence=4700, SequenceTable=SequenceTable.AdvertiseExecuteSequence , Overridable = true },
306 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/RegisterExtensionInfo")) { Action="RegisterExtensionInfo", Sequence=4700, SequenceTable=SequenceTable.InstallExecuteSequence , Overridable = true },
307
308 new WixActionTuple(null, new Identifier(AccessModifier.Public, "AdvertiseExecuteSequence/RegisterMIMEInfo")) { Action="RegisterMIMEInfo", Sequence=4900, SequenceTable=SequenceTable.AdvertiseExecuteSequence , Overridable = true },
309 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/RegisterMIMEInfo")) { Action="RegisterMIMEInfo", Sequence=4900, SequenceTable=SequenceTable.InstallExecuteSequence , Overridable = true },
310
311 new WixActionTuple(null, new Identifier(AccessModifier.Public, "AdvertiseExecuteSequence/RegisterProgIdInfo")) { Action="RegisterProgIdInfo", Sequence=4800, SequenceTable=SequenceTable.AdvertiseExecuteSequence , Overridable = true },
312 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/RegisterProgIdInfo")) { Action="RegisterProgIdInfo", Sequence=4800, SequenceTable=SequenceTable.InstallExecuteSequence , Overridable = true },
313
314 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/AllocateRegistrySpace")) { Action="AllocateRegistrySpace", Sequence=1550, SequenceTable=SequenceTable.InstallExecuteSequence , Overridable = true },
315
316 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallUISequence/AppSearch")) { Action="AppSearch", Sequence=50, SequenceTable=SequenceTable.InstallUISequence , Overridable = true },
317 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/AppSearch")) { Action="AppSearch", Sequence=50, SequenceTable=SequenceTable.InstallExecuteSequence , Overridable = true },
318
319 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/BindImage")) { Action="BindImage", Sequence=4300, SequenceTable=SequenceTable.InstallExecuteSequence , Overridable = true },
320 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/CreateFolders")) { Action="CreateFolders", Sequence=3700, SequenceTable=SequenceTable.InstallExecuteSequence , Overridable = true },
321 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/DuplicateFiles")) { Action="DuplicateFiles", Sequence=4210, SequenceTable=SequenceTable.InstallExecuteSequence , Overridable = true },
322
323 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallUISequence/FindRelatedProducts")) { Action="FindRelatedProducts", Sequence=25, SequenceTable=SequenceTable.InstallUISequence , Overridable = true },
324 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/FindRelatedProducts")) { Action="FindRelatedProducts", Sequence=25, SequenceTable=SequenceTable.InstallExecuteSequence , Overridable = true },
325
326 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/InstallODBC")) { Action="InstallODBC", Sequence=5400, SequenceTable=SequenceTable.InstallExecuteSequence , Overridable = true },
327
328 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/InstallServices")) { Action="InstallServices", Sequence=5800, SequenceTable=SequenceTable.InstallExecuteSequence, Overridable = true, Condition="VersionNT" },
329 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/MsiConfigureServices")) { Action="MsiConfigureServices", Sequence=5850, SequenceTable=SequenceTable.InstallExecuteSequence, Overridable = true, Condition="VersionNT>=600" },
330
331 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallUISequence/IsolateComponents")) { Action="IsolateComponents", Sequence=950, SequenceTable=SequenceTable.InstallUISequence , Overridable = true },
332 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/IsolateComponents")) { Action="IsolateComponents", Sequence=950, SequenceTable=SequenceTable.InstallExecuteSequence , Overridable = true },
333
334 new WixActionTuple(null, new Identifier(AccessModifier.Public, "AdminUISequence/LaunchConditions")) { Action="LaunchConditions", Sequence=100, SequenceTable=SequenceTable.AdminUISequence , Overridable = true },
335 new WixActionTuple(null, new Identifier(AccessModifier.Public, "AdminExecuteSequence/LaunchConditions")) { Action="LaunchConditions", Sequence=100, SequenceTable=SequenceTable.AdminExecuteSequence , Overridable = true },
336 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallUISequence/LaunchConditions")) { Action="LaunchConditions", Sequence=100, SequenceTable=SequenceTable.InstallUISequence , Overridable = true },
337 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/LaunchConditions")) { Action="LaunchConditions", Sequence=100, SequenceTable=SequenceTable.InstallExecuteSequence , Overridable = true },
338
339 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallUISequence/MigrateFeatureStates")) { Action="MigrateFeatureStates", Sequence=1200, SequenceTable=SequenceTable.InstallUISequence , Overridable = true },
340 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/MigrateFeatureStates")) { Action="MigrateFeatureStates", Sequence=1200, SequenceTable=SequenceTable.InstallExecuteSequence , Overridable = true },
341
342 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/MoveFiles")) { Action="MoveFiles", Sequence=3800, SequenceTable=SequenceTable.InstallExecuteSequence , Overridable = true },
343
344 new WixActionTuple(null, new Identifier(AccessModifier.Public, "AdminExecuteSequence/PatchFiles")) { Action="PatchFiles", Sequence=4090, SequenceTable=SequenceTable.AdminExecuteSequence , Overridable = true },
345 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/PatchFiles")) { Action="PatchFiles", Sequence=4090, SequenceTable=SequenceTable.InstallExecuteSequence , Overridable = true },
346
347 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/ProcessComponents")) { Action="ProcessComponents", Sequence=1600, SequenceTable=SequenceTable.InstallExecuteSequence , Overridable = true },
348
349 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/RegisterComPlus")) { Action="RegisterComPlus", Sequence=5700, SequenceTable=SequenceTable.InstallExecuteSequence , Overridable = true },
350 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/RegisterFonts")) { Action="RegisterFonts", Sequence=5300, SequenceTable=SequenceTable.InstallExecuteSequence , Overridable = true },
351 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/RegisterProduct")) { Action="RegisterProduct", Sequence=6100, SequenceTable=SequenceTable.InstallExecuteSequence , Overridable = true },
352 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/RegisterTypeLibraries")) { Action="RegisterTypeLibraries", Sequence=5500, SequenceTable=SequenceTable.InstallExecuteSequence , Overridable = true },
353 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/RegisterUser")) { Action="RegisterUser", Sequence=6000, SequenceTable=SequenceTable.InstallExecuteSequence , Overridable = true },
354
355 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/RemoveDuplicateFiles")) { Action="RemoveDuplicateFiles", Sequence=3400, SequenceTable=SequenceTable.InstallExecuteSequence , Overridable = true },
356 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/RemoveEnvironmentStrings")) { Action="RemoveEnvironmentStrings", Sequence=3300, SequenceTable=SequenceTable.InstallExecuteSequence , Overridable = true },
357 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/RemoveFiles")) { Action="RemoveFiles", Sequence=3500, SequenceTable=SequenceTable.InstallExecuteSequence , Overridable = true },
358 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/RemoveFolders")) { Action="RemoveFolders", Sequence=3600, SequenceTable=SequenceTable.InstallExecuteSequence , Overridable = true },
359 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/RemoveIniValues")) { Action="RemoveIniValues", Sequence=3100, SequenceTable=SequenceTable.InstallExecuteSequence , Overridable = true },
360 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/RemoveODBC")) { Action="RemoveODBC", Sequence=2400, SequenceTable=SequenceTable.InstallExecuteSequence , Overridable = true },
361 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/RemoveRegistryValues")) { Action="RemoveRegistryValues", Sequence=2600, SequenceTable=SequenceTable.InstallExecuteSequence , Overridable = true },
362 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/RemoveShortcuts")) { Action="RemoveShortcuts", Sequence=3200, SequenceTable=SequenceTable.InstallExecuteSequence , Overridable = true },
363
364 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/SelfRegModules")) { Action="SelfRegModules", Sequence=5600, SequenceTable=SequenceTable.InstallExecuteSequence , Overridable = true },
365 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/SelfUnregModules")) { Action="SelfUnregModules", Sequence=2200, SequenceTable=SequenceTable.InstallExecuteSequence , Overridable = true },
366 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/SetODBCFolders")) { Action="SetODBCFolders", Sequence=1100, SequenceTable=SequenceTable.InstallExecuteSequence , Overridable = true },
367
368 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/CCPSearch")) { Action="CCPSearch", Sequence=500, SequenceTable=SequenceTable.InstallExecuteSequence, Overridable = true, Condition="NOT Installed" },
369 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallUISequence/CCPSearch")) { Action="CCPSearch", Sequence=500, SequenceTable=SequenceTable.InstallUISequence, Overridable = true, Condition="NOT Installed" },
370
371 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/DeleteServices")) { Action="DeleteServices", Sequence=2000, SequenceTable=SequenceTable.InstallExecuteSequence, Overridable = true, Condition="VersionNT" },
372
373 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/RMCCPSearch")) { Action="RMCCPSearch", Sequence=600, SequenceTable=SequenceTable.InstallExecuteSequence, Overridable = true, Condition="NOT Installed" },
374 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallUISequence/RMCCPSearch")) { Action="RMCCPSearch", Sequence=600, SequenceTable=SequenceTable.InstallUISequence, Overridable = true, Condition="NOT Installed" },
375
376 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/StartServices")) { Action="StartServices", Sequence=5900, SequenceTable=SequenceTable.InstallExecuteSequence, Overridable = true, Condition="VersionNT" },
377 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/StopServices")) { Action="StopServices", Sequence=1900, SequenceTable=SequenceTable.InstallExecuteSequence, Overridable = true, Condition="VersionNT" },
378
379 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/MsiUnpublishAssemblies")) { Action="MsiUnpublishAssemblies", Sequence=1750, SequenceTable=SequenceTable.InstallExecuteSequence , Overridable = true },
380 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/UnpublishComponents")) { Action="UnpublishComponents", Sequence=1700, SequenceTable=SequenceTable.InstallExecuteSequence , Overridable = true },
381 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/UnpublishFeatures")) { Action="UnpublishFeatures", Sequence=1800, SequenceTable=SequenceTable.InstallExecuteSequence , Overridable = true },
382 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/UnregisterClassInfo")) { Action="UnregisterClassInfo", Sequence=2700, SequenceTable=SequenceTable.InstallExecuteSequence , Overridable = true },
383 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/UnregisterComPlus")) { Action="UnregisterComPlus", Sequence=2100, SequenceTable=SequenceTable.InstallExecuteSequence , Overridable = true },
384 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/UnregisterExtensionInfo")) { Action="UnregisterExtensionInfo", Sequence=2800, SequenceTable=SequenceTable.InstallExecuteSequence , Overridable = true },
385 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/UnregisterFonts")) { Action="UnregisterFonts", Sequence=2500, SequenceTable=SequenceTable.InstallExecuteSequence , Overridable = true },
386 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/UnregisterMIMEInfo")) { Action="UnregisterMIMEInfo", Sequence=3000, SequenceTable=SequenceTable.InstallExecuteSequence , Overridable = true },
387 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/UnregisterProgIdInfo")) { Action="UnregisterProgIdInfo", Sequence=2900, SequenceTable=SequenceTable.InstallExecuteSequence , Overridable = true },
388 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/UnregisterTypeLibraries")) { Action="UnregisterTypeLibraries", Sequence=2300, SequenceTable=SequenceTable.InstallExecuteSequence , Overridable = true },
389
390 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallUISequence/ValidateProductID")) { Action="ValidateProductID", Sequence=700, SequenceTable=SequenceTable.InstallUISequence , Overridable = true },
391 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/ValidateProductID")) { Action="ValidateProductID", Sequence=700, SequenceTable=SequenceTable.InstallExecuteSequence , Overridable = true },
392
393 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/WriteEnvironmentStrings")) { Action="WriteEnvironmentStrings", Sequence=5200, SequenceTable=SequenceTable.InstallExecuteSequence , Overridable = true },
394 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/WriteIniValues")) { Action="WriteIniValues", Sequence=5100, SequenceTable=SequenceTable.InstallExecuteSequence , Overridable = true },
395 new WixActionTuple(null, new Identifier(AccessModifier.Public, "InstallExecuteSequence/WriteRegistryValues")) { Action="WriteRegistryValues", Sequence=5000, SequenceTable=SequenceTable.InstallExecuteSequence , Overridable = true },
396 };
397
398 standardActionNames = new HashSet<string>(standardActions.Select(a => a.Action));
399 standardActionsById = standardActions.ToDictionary(a => a.Id.Id);
400 }
401
471 /// <summary> 402 /// <summary>
472 /// Find out if an action is a standard action. 403 /// Find out if an action is a standard action.
473 /// </summary> 404 /// </summary>
474 /// <param name="actionName">Name of the action.</param> 405 /// <param name="actionName">Name of the action.</param>
475 /// <returns>true if the action is standard, false otherwise.</returns> 406 /// <returns>true if the action is standard, false otherwise.</returns>
476 public static bool IsStandardAction(string actionName) 407 public static bool IsStandardAction(string actionName) => standardActionNames.Contains(actionName);
477 {
478 return standardActionNames.Contains(actionName);
479 }
480 408
481 /// <summary> 409 /// <summary>
482 /// Array of standard actions. 410 /// Standard actions.
483 /// </summary> 411 /// </summary>
484 public static WixActionTuple[] StandardActions() => standardActions; 412 public static IEnumerable<WixActionTuple> StandardActions() => standardActionsById.Values;
485 413
486 /// <summary> 414 /// <summary>
487 /// Find out if a directory is a standard directory. 415 /// Find out if a directory is a standard directory.
488 /// </summary> 416 /// </summary>
489 /// <param name="directoryName">Name of the directory.</param> 417 /// <param name="directoryName">Name of the directory.</param>
490 /// <returns>true if the directory is standard, false otherwise.</returns> 418 /// <returns>true if the directory is standard, false otherwise.</returns>
491 public static bool IsStandardDirectory(string directoryName) 419 public static bool IsStandardDirectory(string directoryName) => standardDirectories.Contains(directoryName);
492 {
493 return standardDirectories.Contains(directoryName);
494 }
495 420
496 /// <summary> 421 /// <summary>
497 /// Find out if a property is a standard property. 422 /// Find out if a property is a standard property.
498 /// </summary> 423 /// </summary>
499 /// <param name="propertyName">Name of the property.</param> 424 /// <param name="propertyName">Name of the property.</param>
500 /// <returns>true if a property is standard, false otherwise.</returns> 425 /// <returns>true if a property is standard, false otherwise.</returns>
501 public static bool IsStandardProperty(string propertyName) 426 public static bool IsStandardProperty(string propertyName) => standardProperties.Contains(propertyName);
502 { 427
503 return standardProperties.Contains(propertyName); 428 /// <summary>
504 } 429 /// Try to get standard action by id.
430 /// </summary>
431 public static bool TryGetStandardAction(string id, out WixActionTuple standardAction) => standardActionsById.TryGetValue(id, out standardAction);
432
433 /// <summary>
434 /// Try to get standard action by sequence and action name.
435 /// </summary>
436 public static bool TryGetStandardAction(string sequenceName, string actioname, out WixActionTuple standardAction) => standardActionsById.TryGetValue(String.Concat(sequenceName, "/", actioname), out standardAction);
505 } 437 }
506} 438}