aboutsummaryrefslogtreecommitdiff
path: root/src/WixToolset.Data/WindowsInstallerStandard.cs
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/WixToolset.Data/WindowsInstallerStandard.cs506
1 files changed, 506 insertions, 0 deletions
diff --git a/src/WixToolset.Data/WindowsInstallerStandard.cs b/src/WixToolset.Data/WindowsInstallerStandard.cs
new file mode 100644
index 00000000..b8d24b62
--- /dev/null
+++ b/src/WixToolset.Data/WindowsInstallerStandard.cs
@@ -0,0 +1,506 @@
1// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information.
2
3namespace WixToolset.Data
4{
5 using System.Collections.Generic;
6 using WixToolset.Data.Tuples;
7
8 public class WindowsInstallerStandard
9 {
10 private static readonly HashSet<string> standardActionNames = new HashSet<string>
11 {
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("AdminExecuteSequence/InstallInitialize", AccessModifier.Public)) { Action="InstallInitialize", Sequence=1500, SequenceTable=SequenceTable.AdminExecuteSequence },
93 new WixActionTuple(null, new Identifier("AdvtExecuteSequence/InstallInitialize", AccessModifier.Public)) { Action="InstallInitialize", Sequence=1500, SequenceTable=SequenceTable.AdvtExecuteSequence },
94 new WixActionTuple(null, new Identifier("InstallExecuteSequence/InstallInitialize", AccessModifier.Public)) { Action="InstallInitialize", Sequence=1500, SequenceTable=SequenceTable.InstallExecuteSequence },
95
96 new WixActionTuple(null, new Identifier("InstallExecuteSequence/InstallExecute", AccessModifier.Public)) { Action="InstallExecute", Sequence=6500, SequenceTable=SequenceTable.InstallExecuteSequence, Condition="NOT Installed" },
97
98 new WixActionTuple(null, new Identifier("InstallExecuteSequence/InstallExecuteAgain", AccessModifier.Public)) { Action="InstallExecuteAgain", Sequence=6550, SequenceTable=SequenceTable.InstallExecuteSequence, Condition="NOT Installed" },
99
100 new WixActionTuple(null, new Identifier("AdminExecuteSequence/InstallFinalize", AccessModifier.Public)) { Action="InstallFinalize", Sequence=6600, SequenceTable=SequenceTable.AdminExecuteSequence },
101 new WixActionTuple(null, new Identifier("AdvtExecuteSequence/InstallFinalize", AccessModifier.Public)) { Action="InstallFinalize", Sequence=6600, SequenceTable=SequenceTable.AdvtExecuteSequence },
102 new WixActionTuple(null, new Identifier("InstallExecuteSequence/InstallFinalize", AccessModifier.Public)) { Action="InstallFinalize", Sequence=6600, SequenceTable=SequenceTable.InstallExecuteSequence },
103
104 new WixActionTuple(null, new Identifier("AdminExecuteSequence/InstallFiles", AccessModifier.Public)) { Action="InstallFiles", Sequence=4000, SequenceTable=SequenceTable.AdminExecuteSequence },
105 new WixActionTuple(null, new Identifier("InstallExecuteSequence/InstallFiles", AccessModifier.Public)) { Action="InstallFiles", Sequence=4000, SequenceTable=SequenceTable.InstallExecuteSequence },
106
107 new WixActionTuple(null, new Identifier("AdminExecuteSequence/InstallAdminPackage", AccessModifier.Public)) { Action="InstallAdminPackage", Sequence=3900, SequenceTable=SequenceTable.AdminExecuteSequence },
108
109 new WixActionTuple(null, new Identifier("AdminExecuteSequence/FileCost", AccessModifier.Public)) { Action="FileCost", Sequence=900, SequenceTable=SequenceTable.AdminExecuteSequence },
110 new WixActionTuple(null, new Identifier("AdminUISequence/FileCost", AccessModifier.Public)) { Action="FileCost", Sequence=900, SequenceTable=SequenceTable.AdminUISequence },
111 new WixActionTuple(null, new Identifier("InstallExecuteSequence/FileCost", AccessModifier.Public)) { Action="FileCost", Sequence=900, SequenceTable=SequenceTable.InstallExecuteSequence },
112 new WixActionTuple(null, new Identifier("InstallUISequence/FileCost", AccessModifier.Public)) { Action="FileCost", Sequence=900, SequenceTable=SequenceTable.InstallUISequence },
113
114 new WixActionTuple(null, new Identifier("AdminExecuteSequence/CostInitialize", AccessModifier.Public)) { Action="CostInitialize", Sequence=800, SequenceTable=SequenceTable.AdminExecuteSequence },
115 new WixActionTuple(null, new Identifier("AdminUISequence/CostInitialize", AccessModifier.Public)) { Action="CostInitialize", Sequence=800, SequenceTable=SequenceTable.AdminUISequence },
116 new WixActionTuple(null, new Identifier("AdvtExecuteSequence/CostInitialize", AccessModifier.Public)) { Action="CostInitialize", Sequence=800, SequenceTable=SequenceTable.AdvtExecuteSequence },
117 new WixActionTuple(null, new Identifier("InstallExecuteSequence/CostInitialize", AccessModifier.Public)) { Action="CostInitialize", Sequence=800, SequenceTable=SequenceTable.InstallExecuteSequence },
118 new WixActionTuple(null, new Identifier("InstallUISequence/CostInitialize", AccessModifier.Public)) { Action="CostInitialize", Sequence=800, SequenceTable=SequenceTable.InstallUISequence },
119
120 new WixActionTuple(null, new Identifier("AdminExecuteSequence/CostFinalize", AccessModifier.Public)) { Action="CostFinalize", Sequence=1000, SequenceTable=SequenceTable.AdminExecuteSequence },
121 new WixActionTuple(null, new Identifier("AdminUISequence/CostFinalize", AccessModifier.Public)) { Action="CostFinalize", Sequence=1000, SequenceTable=SequenceTable.AdminUISequence },
122 new WixActionTuple(null, new Identifier("AdvtExecuteSequence/CostFinalize", AccessModifier.Public)) { Action="CostFinalize", Sequence=1000, SequenceTable=SequenceTable.AdvtExecuteSequence },
123 new WixActionTuple(null, new Identifier("InstallExecuteSequence/CostFinalize", AccessModifier.Public)) { Action="CostFinalize", Sequence=1000, SequenceTable=SequenceTable.InstallExecuteSequence },
124 new WixActionTuple(null, new Identifier("InstallUISequence/CostFinalize", AccessModifier.Public)) { Action="CostFinalize", Sequence=1000, SequenceTable=SequenceTable.InstallUISequence },
125
126 new WixActionTuple(null, new Identifier("AdminExecuteSequence/InstallValidate", AccessModifier.Public)) { Action="InstallValidate", Sequence=1400, SequenceTable=SequenceTable.AdminExecuteSequence },
127 new WixActionTuple(null, new Identifier("AdvtExecuteSequence/InstallValidate", AccessModifier.Public)) { Action="InstallValidate", Sequence=1400, SequenceTable=SequenceTable.AdvtExecuteSequence },
128 new WixActionTuple(null, new Identifier("InstallExecuteSequence/InstallValidate", AccessModifier.Public)) { Action="InstallValidate", Sequence=1400, SequenceTable=SequenceTable.InstallExecuteSequence },
129
130 new WixActionTuple(null, new Identifier("AdminUISequence/ExecuteAction", AccessModifier.Public)) { Action="ExecuteAction", Sequence=1300, SequenceTable=SequenceTable.AdminUISequence },
131 new WixActionTuple(null, new Identifier("InstallUISequence/ExecuteAction", AccessModifier.Public)) { Action="ExecuteAction", Sequence=1300, SequenceTable=SequenceTable.InstallUISequence },
132
133 new WixActionTuple(null, new Identifier("AdvtExecuteSequence/CreateShortcuts", AccessModifier.Public)) { Action="CreateShortcuts", Sequence=4500, SequenceTable=SequenceTable.AdvtExecuteSequence },
134 new WixActionTuple(null, new Identifier("InstallExecuteSequence/CreateShortcuts", AccessModifier.Public)) { Action="CreateShortcuts", Sequence=4500, SequenceTable=SequenceTable.InstallExecuteSequence },
135
136 new WixActionTuple(null, new Identifier("AdvtExecuteSequence/MsiPublishAssemblies", AccessModifier.Public)) { Action="MsiPublishAssemblies", Sequence=6250, SequenceTable=SequenceTable.AdvtExecuteSequence },
137 new WixActionTuple(null, new Identifier("InstallExecuteSequence/MsiPublishAssemblies", AccessModifier.Public)) { Action="MsiPublishAssemblies", Sequence=6250, SequenceTable=SequenceTable.InstallExecuteSequence },
138
139 new WixActionTuple(null, new Identifier("AdvtExecuteSequence/PublishComponents", AccessModifier.Public)) { Action="PublishComponents", Sequence=6200, SequenceTable=SequenceTable.AdvtExecuteSequence },
140 new WixActionTuple(null, new Identifier("InstallExecuteSequence/PublishComponents", AccessModifier.Public)) { Action="PublishComponents", Sequence=6200, SequenceTable=SequenceTable.InstallExecuteSequence },
141
142 new WixActionTuple(null, new Identifier("AdvtExecuteSequence/PublishFeatures", AccessModifier.Public)) { Action="PublishFeatures", Sequence=6300, SequenceTable=SequenceTable.AdvtExecuteSequence },
143 new WixActionTuple(null, new Identifier("InstallExecuteSequence/PublishFeatures", AccessModifier.Public)) { Action="PublishFeatures", Sequence=6300, SequenceTable=SequenceTable.InstallExecuteSequence },
144
145 new WixActionTuple(null, new Identifier("AdvtExecuteSequence/PublishProduct", AccessModifier.Public)) { Action="PublishProduct", Sequence=6400, SequenceTable=SequenceTable.AdvtExecuteSequence },
146 new WixActionTuple(null, new Identifier("InstallExecuteSequence/PublishProduct", AccessModifier.Public)) { Action="PublishProduct", Sequence=6400, SequenceTable=SequenceTable.InstallExecuteSequence },
147
148 new WixActionTuple(null, new Identifier("AdvtExecuteSequence/RegisterClassInfo", AccessModifier.Public)) { Action="RegisterClassInfo", Sequence=4600, SequenceTable=SequenceTable.AdvtExecuteSequence },
149 new WixActionTuple(null, new Identifier("InstallExecuteSequence/RegisterClassInfo", AccessModifier.Public)) { Action="RegisterClassInfo", Sequence=4600, SequenceTable=SequenceTable.InstallExecuteSequence },
150
151 new WixActionTuple(null, new Identifier("AdvtExecuteSequence/RegisterExtensionInfo", AccessModifier.Public)) { Action="RegisterExtensionInfo", Sequence=4700, SequenceTable=SequenceTable.AdvtExecuteSequence },
152 new WixActionTuple(null, new Identifier("InstallExecuteSequence/RegisterExtensionInfo", AccessModifier.Public)) { Action="RegisterExtensionInfo", Sequence=4700, SequenceTable=SequenceTable.InstallExecuteSequence },
153
154 new WixActionTuple(null, new Identifier("AdvtExecuteSequence/RegisterMIMEInfo", AccessModifier.Public)) { Action="RegisterMIMEInfo", Sequence=4900, SequenceTable=SequenceTable.AdvtExecuteSequence },
155 new WixActionTuple(null, new Identifier("InstallExecuteSequence/RegisterMIMEInfo", AccessModifier.Public)) { Action="RegisterMIMEInfo", Sequence=4900, SequenceTable=SequenceTable.InstallExecuteSequence },
156
157 new WixActionTuple(null, new Identifier("AdvtExecuteSequence/RegisterProgIdInfo", AccessModifier.Public)) { Action="RegisterProgIdInfo", Sequence=4800, SequenceTable=SequenceTable.AdvtExecuteSequence },
158 new WixActionTuple(null, new Identifier("InstallExecuteSequence/RegisterProgIdInfo", AccessModifier.Public)) { Action="RegisterProgIdInfo", Sequence=4800, SequenceTable=SequenceTable.InstallExecuteSequence },
159
160 new WixActionTuple(null, new Identifier("InstallExecuteSequence/AllocateRegistrySpace", AccessModifier.Public)) { Action="AllocateRegistrySpace", Sequence=1550, SequenceTable=SequenceTable.InstallExecuteSequence },
161
162 new WixActionTuple(null, new Identifier("InstallUISequence/AppSearch", AccessModifier.Public)) { Action="AppSearch", Sequence=50, SequenceTable=SequenceTable.InstallUISequence },
163 new WixActionTuple(null, new Identifier("InstallExecuteSequence/AppSearch", AccessModifier.Public)) { Action="AppSearch", Sequence=50, SequenceTable=SequenceTable.InstallExecuteSequence },
164
165 new WixActionTuple(null, new Identifier("InstallExecuteSequence/BindImage", AccessModifier.Public)) { Action="BindImage", Sequence=4300, SequenceTable=SequenceTable.InstallExecuteSequence },
166 new WixActionTuple(null, new Identifier("InstallExecuteSequence/CreateFolders", AccessModifier.Public)) { Action="CreateFolders", Sequence=3700, SequenceTable=SequenceTable.InstallExecuteSequence },
167 new WixActionTuple(null, new Identifier("InstallExecuteSequence/DuplicateFiles", AccessModifier.Public)) { Action="DuplicateFiles", Sequence=4210, SequenceTable=SequenceTable.InstallExecuteSequence },
168
169 new WixActionTuple(null, new Identifier("InstallUISequence/FindRelatedProducts", AccessModifier.Public)) { Action="FindRelatedProducts", Sequence=25, SequenceTable=SequenceTable.InstallUISequence },
170 new WixActionTuple(null, new Identifier("InstallExecuteSequence/FindRelatedProducts", AccessModifier.Public)) { Action="FindRelatedProducts", Sequence=25, SequenceTable=SequenceTable.InstallExecuteSequence },
171
172 new WixActionTuple(null, new Identifier("InstallExecuteSequence/InstallODBC", AccessModifier.Public)) { Action="InstallODBC", Sequence=5400, SequenceTable=SequenceTable.InstallExecuteSequence },
173
174 new WixActionTuple(null, new Identifier("InstallExecuteSequence/InstallServices", AccessModifier.Public)) { Action="InstallServices", Sequence=5800, SequenceTable=SequenceTable.InstallExecuteSequence, Condition="VersionNT" },
175 new WixActionTuple(null, new Identifier("InstallExecuteSequence/MsiConfigureServices", AccessModifier.Public)) { Action="MsiConfigureServices", Sequence=5850, SequenceTable=SequenceTable.InstallExecuteSequence, Condition="VersionNT>=600" },
176
177 new WixActionTuple(null, new Identifier("InstallUISequence/IsolateComponents", AccessModifier.Public)) { Action="IsolateComponents", Sequence=950, SequenceTable=SequenceTable.InstallUISequence },
178 new WixActionTuple(null, new Identifier("InstallExecuteSequence/IsolateComponents", AccessModifier.Public)) { Action="IsolateComponents", Sequence=950, SequenceTable=SequenceTable.InstallExecuteSequence },
179
180 new WixActionTuple(null, new Identifier("AdminUISequence/LaunchConditions", AccessModifier.Public)) { Action="LaunchConditions", Sequence=100, SequenceTable=SequenceTable.AdminUISequence },
181 new WixActionTuple(null, new Identifier("AdminExecuteSequence/LaunchConditions", AccessModifier.Public)) { Action="LaunchConditions", Sequence=100, SequenceTable=SequenceTable.AdminExecuteSequence },
182 new WixActionTuple(null, new Identifier("InstallUISequence/LaunchConditions", AccessModifier.Public)) { Action="LaunchConditions", Sequence=100, SequenceTable=SequenceTable.InstallUISequence },
183 new WixActionTuple(null, new Identifier("InstallExecuteSequence/LaunchConditions", AccessModifier.Public)) { Action="LaunchConditions", Sequence=100, SequenceTable=SequenceTable.InstallExecuteSequence },
184
185 new WixActionTuple(null, new Identifier("InstallUISequence/MigrateFeatureStates", AccessModifier.Public)) { Action="MigrateFeatureStates", Sequence=1200, SequenceTable=SequenceTable.InstallUISequence },
186 new WixActionTuple(null, new Identifier("InstallExecuteSequence/MigrateFeatureStates", AccessModifier.Public)) { Action="MigrateFeatureStates", Sequence=1200, SequenceTable=SequenceTable.InstallExecuteSequence },
187
188 new WixActionTuple(null, new Identifier("InstallExecuteSequence/MoveFiles", AccessModifier.Public)) { Action="MoveFiles", Sequence=3800, SequenceTable=SequenceTable.InstallExecuteSequence },
189
190 new WixActionTuple(null, new Identifier("AdminExecuteSequence/PatchFiles", AccessModifier.Public)) { Action="PatchFiles", Sequence=4090, SequenceTable=SequenceTable.AdminExecuteSequence },
191 new WixActionTuple(null, new Identifier("InstallExecuteSequence/PatchFiles", AccessModifier.Public)) { Action="PatchFiles", Sequence=4090, SequenceTable=SequenceTable.InstallExecuteSequence },
192
193 new WixActionTuple(null, new Identifier("InstallExecuteSequence/ProcessComponents", AccessModifier.Public)) { Action="ProcessComponents", Sequence=1600, SequenceTable=SequenceTable.InstallExecuteSequence },
194
195 new WixActionTuple(null, new Identifier("InstallExecuteSequence/RegisterComPlus", AccessModifier.Public)) { Action="RegisterComPlus", Sequence=5700, SequenceTable=SequenceTable.InstallExecuteSequence },
196 new WixActionTuple(null, new Identifier("InstallExecuteSequence/RegisterFonts", AccessModifier.Public)) { Action="RegisterFonts", Sequence=5300, SequenceTable=SequenceTable.InstallExecuteSequence },
197 new WixActionTuple(null, new Identifier("InstallExecuteSequence/RegisterProduct", AccessModifier.Public)) { Action="RegisterProduct", Sequence=6100, SequenceTable=SequenceTable.InstallExecuteSequence },
198 new WixActionTuple(null, new Identifier("InstallExecuteSequence/RegisterTypeLibraries", AccessModifier.Public)) { Action="RegisterTypeLibraries", Sequence=5500, SequenceTable=SequenceTable.InstallExecuteSequence },
199 new WixActionTuple(null, new Identifier("InstallExecuteSequence/RegisterUser", AccessModifier.Public)) { Action="RegisterUser", Sequence=6000, SequenceTable=SequenceTable.InstallExecuteSequence },
200
201 new WixActionTuple(null, new Identifier("InstallExecuteSequence/RemoveDuplicateFiles", AccessModifier.Public)) { Action="RemoveDuplicateFiles", Sequence=3400, SequenceTable=SequenceTable.InstallExecuteSequence },
202 new WixActionTuple(null, new Identifier("InstallExecuteSequence/RemoveEnvironmentStrings", AccessModifier.Public)) { Action="RemoveEnvironmentStrings", Sequence=3300, SequenceTable=SequenceTable.InstallExecuteSequence },
203 new WixActionTuple(null, new Identifier("InstallExecuteSequence/RemoveFiles", AccessModifier.Public)) { Action="RemoveFiles", Sequence=3500, SequenceTable=SequenceTable.InstallExecuteSequence },
204 new WixActionTuple(null, new Identifier("InstallExecuteSequence/RemoveFolders", AccessModifier.Public)) { Action="RemoveFolders", Sequence=3600, SequenceTable=SequenceTable.InstallExecuteSequence },
205 new WixActionTuple(null, new Identifier("InstallExecuteSequence/RemoveIniValues", AccessModifier.Public)) { Action="RemoveIniValues", Sequence=3100, SequenceTable=SequenceTable.InstallExecuteSequence },
206 new WixActionTuple(null, new Identifier("InstallExecuteSequence/RemoveODBC", AccessModifier.Public)) { Action="RemoveODBC", Sequence=2400, SequenceTable=SequenceTable.InstallExecuteSequence },
207 new WixActionTuple(null, new Identifier("InstallExecuteSequence/RemoveRegistryValues", AccessModifier.Public)) { Action="RemoveRegistryValues", Sequence=2600, SequenceTable=SequenceTable.InstallExecuteSequence },
208 new WixActionTuple(null, new Identifier("InstallExecuteSequence/RemoveShortcuts", AccessModifier.Public)) { Action="RemoveShortcuts", Sequence=3200, SequenceTable=SequenceTable.InstallExecuteSequence },
209
210 new WixActionTuple(null, new Identifier("InstallExecuteSequence/SelfRegModules", AccessModifier.Public)) { Action="SelfRegModules", Sequence=5600, SequenceTable=SequenceTable.InstallExecuteSequence },
211 new WixActionTuple(null, new Identifier("InstallExecuteSequence/SelfUnregModules", AccessModifier.Public)) { Action="SelfUnregModules", Sequence=2200, SequenceTable=SequenceTable.InstallExecuteSequence },
212 new WixActionTuple(null, new Identifier("InstallExecuteSequence/SetODBCFolders", AccessModifier.Public)) { Action="SetODBCFolders", Sequence=1100, SequenceTable=SequenceTable.InstallExecuteSequence },
213
214 new WixActionTuple(null, new Identifier("InstallExecuteSequence/CCPSearch", AccessModifier.Public)) { Action="CCPSearch", Sequence=500, SequenceTable=SequenceTable.InstallExecuteSequence, Condition="NOT Installed" },
215 new WixActionTuple(null, new Identifier("InstallUISequence/CCPSearch", AccessModifier.Public)) { Action="CCPSearch", Sequence=500, SequenceTable=SequenceTable.InstallUISequence, Condition="NOT Installed" },
216
217 new WixActionTuple(null, new Identifier("InstallExecuteSequence/DeleteServices", AccessModifier.Public)) { Action="DeleteServices", Sequence=2000, SequenceTable=SequenceTable.InstallExecuteSequence, Condition="VersionNT" },
218
219 new WixActionTuple(null, new Identifier("InstallExecuteSequence/RMCCPSearch", AccessModifier.Public)) { Action="RMCCPSearch", Sequence=600, SequenceTable=SequenceTable.InstallExecuteSequence, Condition="NOT Installed" },
220 new WixActionTuple(null, new Identifier("InstallUISequence/RMCCPSearch", AccessModifier.Public)) { Action="RMCCPSearch", Sequence=600, SequenceTable=SequenceTable.InstallUISequence, Condition="NOT Installed" },
221
222 new WixActionTuple(null, new Identifier("InstallExecuteSequence/StartServices", AccessModifier.Public)) { Action="StartServices", Sequence=5900, SequenceTable=SequenceTable.InstallExecuteSequence, Condition="VersionNT" },
223 new WixActionTuple(null, new Identifier("InstallExecuteSequence/StopServices", AccessModifier.Public)) { Action="StopServices", Sequence=1900, SequenceTable=SequenceTable.InstallExecuteSequence, Condition="VersionNT" },
224
225 new WixActionTuple(null, new Identifier("InstallExecuteSequence/MsiUnpublishAssemblies", AccessModifier.Public)) { Action="MsiUnpublishAssemblies", Sequence=1750, SequenceTable=SequenceTable.InstallExecuteSequence },
226 new WixActionTuple(null, new Identifier("InstallExecuteSequence/UnpublishComponents", AccessModifier.Public)) { Action="UnpublishComponents", Sequence=1700, SequenceTable=SequenceTable.InstallExecuteSequence },
227 new WixActionTuple(null, new Identifier("InstallExecuteSequence/UnpublishFeatures", AccessModifier.Public)) { Action="UnpublishFeatures", Sequence=1800, SequenceTable=SequenceTable.InstallExecuteSequence },
228 new WixActionTuple(null, new Identifier("InstallExecuteSequence/UnregisterClassInfo", AccessModifier.Public)) { Action="UnregisterClassInfo", Sequence=2700, SequenceTable=SequenceTable.InstallExecuteSequence },
229 new WixActionTuple(null, new Identifier("InstallExecuteSequence/UnregisterComPlus", AccessModifier.Public)) { Action="UnregisterComPlus", Sequence=2100, SequenceTable=SequenceTable.InstallExecuteSequence },
230 new WixActionTuple(null, new Identifier("InstallExecuteSequence/UnregisterExtensionInfo", AccessModifier.Public)) { Action="UnregisterExtensionInfo", Sequence=2800, SequenceTable=SequenceTable.InstallExecuteSequence },
231 new WixActionTuple(null, new Identifier("InstallExecuteSequence/UnregisterFonts", AccessModifier.Public)) { Action="UnregisterFonts", Sequence=2500, SequenceTable=SequenceTable.InstallExecuteSequence },
232 new WixActionTuple(null, new Identifier("InstallExecuteSequence/UnregisterMIMEInfo", AccessModifier.Public)) { Action="UnregisterMIMEInfo", Sequence=3000, SequenceTable=SequenceTable.InstallExecuteSequence },
233 new WixActionTuple(null, new Identifier("InstallExecuteSequence/UnregisterProgIdInfo", AccessModifier.Public)) { Action="UnregisterProgIdInfo", Sequence=2900, SequenceTable=SequenceTable.InstallExecuteSequence },
234 new WixActionTuple(null, new Identifier("InstallExecuteSequence/UnregisterTypeLibraries", AccessModifier.Public)) { Action="UnregisterTypeLibraries", Sequence=2300, SequenceTable=SequenceTable.InstallExecuteSequence },
235
236 new WixActionTuple(null, new Identifier("InstallUISequence/ValidateProductID", AccessModifier.Public)) { Action="ValidateProductID", Sequence=700, SequenceTable=SequenceTable.InstallUISequence },
237 new WixActionTuple(null, new Identifier("InstallExecuteSequence/ValidateProductID", AccessModifier.Public)) { Action="ValidateProductID", Sequence=700, SequenceTable=SequenceTable.InstallExecuteSequence },
238
239 new WixActionTuple(null, new Identifier("InstallExecuteSequence/WriteEnvironmentStrings", AccessModifier.Public)) { Action="WriteEnvironmentStrings", Sequence=5200, SequenceTable=SequenceTable.InstallExecuteSequence },
240 new WixActionTuple(null, new Identifier("InstallExecuteSequence/WriteIniValues", AccessModifier.Public)) { Action="WriteIniValues", Sequence=5100, SequenceTable=SequenceTable.InstallExecuteSequence },
241 new WixActionTuple(null, new Identifier("InstallExecuteSequence/WriteRegistryValues", AccessModifier.Public)) { Action="WriteRegistryValues", Sequence=5000, SequenceTable=SequenceTable.InstallExecuteSequence },
242 };
243
244 private static readonly HashSet<string> standardDirectories = new HashSet<string>
245 {
246 "TARGETDIR",
247 "AdminToolsFolder",
248 "AppDataFolder",
249 "CommonAppDataFolder",
250 "CommonFilesFolder",
251 "DesktopFolder",
252 "FavoritesFolder",
253 "FontsFolder",
254 "LocalAppDataFolder",
255 "MyPicturesFolder",
256 "PersonalFolder",
257 "ProgramFilesFolder",
258 "ProgramMenuFolder",
259 "SendToFolder",
260 "StartMenuFolder",
261 "StartupFolder",
262 "System16Folder",
263 "SystemFolder",
264 "TempFolder",
265 "TemplateFolder",
266 "WindowsFolder",
267 "CommonFiles64Folder",
268 "ProgramFiles64Folder",
269 "System64Folder",
270 "NetHoodFolder",
271 "PrintHoodFolder",
272 "RecentFolder",
273 "WindowsVolume",
274 };
275
276 /// <summary>
277 /// References:
278 /// Title: Property Reference [Windows Installer]:
279 /// URL: http://msdn.microsoft.com/library/en-us/msi/setup/property_reference.asp
280 /// </summary>
281 private static readonly HashSet<string> standardProperties = new HashSet<string>
282 {
283 "~", // REG_MULTI_SZ/NULL marker
284 "ACTION",
285 "ADDDEFAULT",
286 "ADDLOCAL",
287 "ADDDSOURCE",
288 "AdminProperties",
289 "AdminUser",
290 "ADVERTISE",
291 "AFTERREBOOT",
292 "AllowProductCodeMismatches",
293 "AllowProductVersionMajorMismatches",
294 "ALLUSERS",
295 "Alpha",
296 "ApiPatchingSymbolFlags",
297 "ARPAUTHORIZEDCDFPREFIX",
298 "ARPCOMMENTS",
299 "ARPCONTACT",
300 "ARPHELPLINK",
301 "ARPHELPTELEPHONE",
302 "ARPINSTALLLOCATION",
303 "ARPNOMODIFY",
304 "ARPNOREMOVE",
305 "ARPNOREPAIR",
306 "ARPPRODUCTIONICON",
307 "ARPREADME",
308 "ARPSIZE",
309 "ARPSYSTEMCOMPONENT",
310 "ARPULRINFOABOUT",
311 "ARPURLUPDATEINFO",
312 "AVAILABLEFREEREG",
313 "BorderSize",
314 "BorderTop",
315 "CaptionHeight",
316 "CCP_DRIVE",
317 "ColorBits",
318 "COMPADDLOCAL",
319 "COMPADDSOURCE",
320 "COMPANYNAME",
321 "ComputerName",
322 "CostingComplete",
323 "Date",
324 "DefaultUIFont",
325 "DISABLEADVTSHORTCUTS",
326 "DISABLEMEDIA",
327 "DISABLEROLLBACK",
328 "DiskPrompt",
329 "DontRemoveTempFolderWhenFinished",
330 "EnableUserControl",
331 "EXECUTEACTION",
332 "EXECUTEMODE",
333 "FASTOEM",
334 "FILEADDDEFAULT",
335 "FILEADDLOCAL",
336 "FILEADDSOURCE",
337 "IncludeWholeFilesOnly",
338 "Installed",
339 "INSTALLLEVEL",
340 "Intel",
341 "Intel64",
342 "IsAdminPackage",
343 "LeftUnit",
344 "LIMITUI",
345 "ListOfPatchGUIDsToReplace",
346 "ListOfTargetProductCode",
347 "LOGACTION",
348 "LogonUser",
349 "Manufacturer",
350 "MEDIAPACKAGEPATH",
351 "MediaSourceDir",
352 "MinimumRequiredMsiVersion",
353 "MsiAMD64",
354 "MSIAPRSETTINGSIDENTIFIER",
355 "MSICHECKCRCS",
356 "MSIDISABLERMRESTART",
357 "MSIENFORCEUPGRADECOMPONENTRULES",
358 "MSIFASTINSTALL",
359 "MsiFileToUseToCreatePatchTables",
360 "MsiHiddenProperties",
361 "MSIINSTALLPERUSER",
362 "MSIINSTANCEGUID",
363 "MsiLogFileLocation",
364 "MsiLogging",
365 "MsiNetAssemblySupport",
366 "MSINEWINSTANCE",
367 "MSINODISABLEMEDIA",
368 "MsiNTProductType",
369 "MsiNTSuiteBackOffice",
370 "MsiNTSuiteDataCenter",
371 "MsiNTSuiteEnterprise",
372 "MsiNTSuiteSmallBusiness",
373 "MsiNTSuiteSmallBusinessRestricted",
374 "MsiNTSuiteWebServer",
375 "MsiNTSuitePersonal",
376 "MsiPatchRemovalList",
377 "MSIPATCHREMOVE",
378 "MSIRESTARTMANAGERCONTROL",
379 "MsiRestartManagerSessionKey",
380 "MSIRMSHUTDOWN",
381 "MsiRunningElevated",
382 "MsiUIHideCancel",
383 "MsiUIProgressOnly",
384 "MsiUISourceResOnly",
385 "MsiSystemRebootPending",
386 "MsiWin32AssemblySupport",
387 "NOCOMPANYNAME",
388 "NOUSERNAME",
389 "OLEAdvtSupport",
390 "OptimizePatchSizeForLargeFiles",
391 "OriginalDatabase",
392 "OutOfDiskSpace",
393 "OutOfNoRbDiskSpace",
394 "ParentOriginalDatabase",
395 "ParentProductCode",
396 "PATCH",
397 "PATCH_CACHE_DIR",
398 "PATCH_CACHE_ENABLED",
399 "PatchGUID",
400 "PATCHNEWPACKAGECODE",
401 "PATCHNEWSUMMARYCOMMENTS",
402 "PATCHNEWSUMMARYSUBJECT",
403 "PatchOutputPath",
404 "PatchSourceList",
405 "PhysicalMemory",
406 "PIDKEY",
407 "PIDTemplate",
408 "Preselected",
409 "PRIMARYFOLDER",
410 "PrimaryVolumePath",
411 "PrimaryVolumeSpaceAvailable",
412 "PrimaryVolumeSpaceRemaining",
413 "PrimaryVolumeSpaceRequired",
414 "Privileged",
415 "ProductCode",
416 "ProductID",
417 "ProductLanguage",
418 "ProductName",
419 "ProductState",
420 "ProductVersion",
421 "PROMPTROLLBACKCOST",
422 "REBOOT",
423 "REBOOTPROMPT",
424 "RedirectedDllSupport",
425 "REINSTALL",
426 "REINSTALLMODE",
427 "RemoveAdminTS",
428 "REMOVE",
429 "ReplacedInUseFiles",
430 "RestrictedUserControl",
431 "RESUME",
432 "RollbackDisabled",
433 "ROOTDRIVE",
434 "ScreenX",
435 "ScreenY",
436 "SecureCustomProperties",
437 "ServicePackLevel",
438 "ServicePackLevelMinor",
439 "SEQUENCE",
440 "SharedWindows",
441 "ShellAdvtSupport",
442 "SHORTFILENAMES",
443 "SourceDir",
444 "SOURCELIST",
445 "SystemLanguageID",
446 "TARGETDIR",
447 "TerminalServer",
448 "TextHeight",
449 "Time",
450 "TRANSFORMS",
451 "TRANSFORMSATSOURCE",
452 "TRANSFORMSSECURE",
453 "TTCSupport",
454 "UILevel",
455 "UpdateStarted",
456 "UpgradeCode",
457 "UPGRADINGPRODUCTCODE",
458 "UserLanguageID",
459 "USERNAME",
460 "UserSID",
461 "Version9X",
462 "VersionDatabase",
463 "VersionMsi",
464 "VersionNT",
465 "VersionNT64",
466 "VirtualMemory",
467 "WindowsBuild",
468 "WindowsVolume",
469 };
470
471 /// <summary>
472 /// Find out if an action is a standard action.
473 /// </summary>
474 /// <param name="actionName">Name of the action.</param>
475 /// <returns>true if the action is standard, false otherwise.</returns>
476 public static bool IsStandardAction(string actionName)
477 {
478 return standardActionNames.Contains(actionName);
479 }
480
481 /// <summary>
482 /// Array of standard actions.
483 /// </summary>
484 public static WixActionTuple[] StandardActions() => standardActions;
485
486 /// <summary>
487 /// Find out if a directory is a standard directory.
488 /// </summary>
489 /// <param name="directoryName">Name of the directory.</param>
490 /// <returns>true if the directory is standard, false otherwise.</returns>
491 public static bool IsStandardDirectory(string directoryName)
492 {
493 return standardDirectories.Contains(directoryName);
494 }
495
496 /// <summary>
497 /// Find out if a property is a standard property.
498 /// </summary>
499 /// <param name="propertyName">Name of the property.</param>
500 /// <returns>true if a property is standard, false otherwise.</returns>
501 public static bool IsStandardProperty(string propertyName)
502 {
503 return standardProperties.Contains(propertyName);
504 }
505 }
506}