Support platform-specific CAs (including ARM64).
Bob Arnson committed
May 25, 2020 at 21:49 UTC
3aa4f95a7ac23567efbaebdae57007636e7f6058
13 files changed
+477
-375
appveyor.cmd
+3
@@ -9,5 +9,8 @@ msbuild -p:Configuration=Release src\test\WixToolsetTest.Util\WixToolsetTest.Uti
9
10
msbuild -p:Configuration=Release -t:Pack src\wixext\WixToolset.Util.wixext.csproj
11
12
+msbuild -p:Configuration=Release src\test\WixToolsetTest.Util\WixToolsetTest.Util.csproj
13
+dotnet test -c Release --no-build src\test\WixToolsetTest.Util
14
+
15
@popd
16
@endlocal
\ No newline at end of file
src/ca/XmlConfig.cpp
+17
-2
@@ -588,8 +588,9 @@ extern "C" UINT __stdcall ExecXmlConfig(
588
HRESULT hrOpenFailure = S_OK;
589
UINT er = ERROR_SUCCESS;
590
591
- BOOL fIsWow64Process = FALSE;
591
+#ifndef _WIN64
592
BOOL fIsFSRedirectDisabled = FALSE;
593
+#endif
594
BOOL fPreserveDate = FALSE;
595
596
LPWSTR pwzCustomActionData = NULL;
@@ -635,10 +636,12 @@ extern "C" UINT __stdcall ExecXmlConfig(
636
hr = WcaReadIntegerFromCaData(&pwz, (int*) &xa);
637
ExitOnFailure(hr, "failed to process CustomActionData");
638
639
+#ifndef _WIN64
640
// Initialize the Wow64 API - store the result in fWow64APIPresent
641
// If it fails, this doesn't warrant an error yet, because we only need the Wow64 API in some cases
642
WcaInitializeWow64();
641
- fIsWow64Process = WcaIsWow64Process();
643
+ BOOL fIsWow64Process = WcaIsWow64Process();
644
+#endif
645
646
if (xaOpenFile != xa && xaOpenFilex64 != xa)
647
{
@@ -657,6 +660,7 @@ extern "C" UINT __stdcall ExecXmlConfig(
660
// Open the file
661
ReleaseNullObject(pixd);
662
663
+#ifndef _WIN64
664
if (xaOpenFilex64 == xa)
665
{
666
if (!fIsWow64Process)
@@ -670,6 +674,7 @@ extern "C" UINT __stdcall ExecXmlConfig(
674
675
fIsFSRedirectDisabled = TRUE;
676
}
677
+#endif
678
679
hr = XmlLoadDocumentFromFileEx(pwzFile, XML_LOAD_PRESERVE_WHITESPACE, &pixd);
680
if (FAILED(hr))
@@ -945,15 +950,18 @@ extern "C" UINT __stdcall ExecXmlConfig(
950
ExitOnFailure(hr, "failed to set modified time of file : %ls", pwzFile);
951
}
952
953
+#ifndef _WIN64
954
if (fIsFSRedirectDisabled)
955
{
956
fIsFSRedirectDisabled = FALSE;
957
WcaRevertWow64FSRedirection();
958
}
959
+#endif
960
}
961
}
962
963
LExit:
964
+#ifndef _WIN64
965
// Make sure we revert FS Redirection if necessary before exiting
966
if (fIsFSRedirectDisabled)
967
{
@@ -961,6 +969,7 @@ LExit:
969
WcaRevertWow64FSRedirection();
970
}
971
WcaFinalizeWow64();
972
+#endif
973
974
ReleaseStr(pwzCustomActionData);
975
ReleaseStr(pwzData);
@@ -1001,7 +1010,9 @@ extern "C" UINT __stdcall ExecXmlConfigRollback(
1010
UINT er = ERROR_SUCCESS;
1011
1012
int iIs64Bit;
1013
+#ifndef _WIN64
1014
BOOL fIs64Bit = FALSE;
1015
+#endif
1016
1017
LPWSTR pwzCustomActionData = NULL;
1018
LPWSTR pwz = NULL;
@@ -1035,6 +1046,7 @@ extern "C" UINT __stdcall ExecXmlConfigRollback(
1046
hr = WcaReadStreamFromCaData(&pwz, &pbData, &cbData);
1047
ExitOnFailure(hr, "failed to read file contents from custom action data");
1048
1049
+#ifndef _WIN64
1050
fIs64Bit = (BOOL)iIs64Bit;
1051
1052
if (fIs64Bit)
@@ -1055,6 +1067,7 @@ extern "C" UINT __stdcall ExecXmlConfigRollback(
1067
hr = WcaDisableWow64FSRedirection();
1068
ExitOnFailure(hr, "Custom action was told to rollback a 64-bit component, but was unable to Disable Filesystem Redirection through the Wow64 API.");
1069
}
1070
+#endif
1071
1072
hr = FileGetTime(pwzFileName, NULL, NULL, &ft);
1073
ExitOnFailure(hr, "Failed to get modified date of file %ls.", pwzFileName);
@@ -1082,11 +1095,13 @@ LExit:
1095
1096
ReleaseFile(hFile);
1097
1098
+#ifndef _WIN64
1099
if (fIs64Bit)
1100
{
1101
WcaRevertWow64FSRedirection();
1102
WcaFinalizeWow64();
1103
}
1104
+#endif
1105
1106
ReleaseMem(pbData);
1107
src/ca/XmlFile.cpp
+12
-11
@@ -464,9 +464,7 @@ LExit:
464
ReleaseStr(pwzCurrentFile);
465
ReleaseStr(pwzCustomActionData);
466
467
- if (FAILED(hr))
468
- er = ERROR_INSTALL_FAILURE;
469
- return WcaFinalize(er);
467
+ return WcaFinalize(FAILED(hr) ? ERROR_INSTALL_FAILURE : er);
468
}
469
470
@@ -483,7 +481,6 @@ extern "C" UINT __stdcall ExecXmlFile(
481
HRESULT hrOpenFailure = S_OK;
482
UINT er = ERROR_SUCCESS;
483
486
- BOOL fIsWow64Process = FALSE;
484
BOOL fIsFSRedirectDisabled = FALSE;
485
BOOL fPreserveDate = FALSE;
486
@@ -533,10 +530,12 @@ extern "C" UINT __stdcall ExecXmlFile(
530
hr = WcaReadIntegerFromCaData(&pwz, (int*) &xa);
531
ExitOnFailure(hr, "failed to process CustomActionData");
532
533
+#ifndef _WIN64
534
// Initialize the Wow64 API - store the result in fWow64APIPresent
535
// If it fails, this doesn't warrant an error yet, because we only need the Wow64 API in some cases
536
WcaInitializeWow64();
539
- fIsWow64Process = WcaIsWow64Process();
537
+ BOOL fIsWow64Process = WcaIsWow64Process();
538
+#endif
539
540
if (xaOpenFile != xa && xaOpenFilex64 != xa)
541
ExitOnFailure(hr = E_INVALIDARG, "invalid custom action data");
@@ -558,6 +557,7 @@ extern "C" UINT __stdcall ExecXmlFile(
557
558
if (xaOpenFilex64 == xa)
559
{
560
+#ifndef _WIN64
561
if (!fIsWow64Process)
562
{
563
hr = E_NOTIMPL;
@@ -568,6 +568,7 @@ extern "C" UINT __stdcall ExecXmlFile(
568
ExitOnFailure(hr, "Custom action was told to act on a 64-bit component, but was unable to disable filesystem redirection through the Wow64 API.");
569
570
fIsFSRedirectDisabled = TRUE;
571
+#endif
572
}
573
574
hr = XmlLoadDocumentFromFileEx(pwzFile, XML_LOAD_PRESERVE_WHITESPACE, &pixd);
@@ -810,7 +811,9 @@ LExit:
811
fIsFSRedirectDisabled = FALSE;
812
WcaRevertWow64FSRedirection();
813
}
814
+#ifndef _WIN64
815
WcaFinalizeWow64();
816
+#endif
817
818
ReleaseStr(pwzCustomActionData);
819
ReleaseStr(pwzData);
@@ -829,9 +832,7 @@ LExit:
832
833
XmlUninitialize();
834
832
- if (FAILED(hr))
833
- er = ERROR_INSTALL_FAILURE;
834
- return WcaFinalize(er);
835
+ return WcaFinalize(FAILED(hr) ? ERROR_INSTALL_FAILURE : er);
836
}
837
838
@@ -882,6 +883,7 @@ extern "C" UINT __stdcall ExecXmlFileRollback(
883
hr = WcaReadStreamFromCaData(&pwz, &pbData, &cbData);
884
ExitOnFailure(hr, "failed to read file contents from custom action data");
885
886
+#ifndef _WIN64
887
fIs64Bit = (BOOL)iIs64Bit;
888
889
if (fIs64Bit)
@@ -902,6 +904,7 @@ extern "C" UINT __stdcall ExecXmlFileRollback(
904
hr = WcaDisableWow64FSRedirection();
905
ExitOnFailure(hr, "Custom action was told to rollback a 64-bit component, but was unable to Disable Filesystem Redirection through the Wow64 API.");
906
}
907
+#endif
908
909
// Always preserve the modified date on rollback
910
hr = FileGetTime(pwzFileName, NULL, NULL, &ft);
@@ -937,8 +940,6 @@ LExit:
940
941
ReleaseMem(pbData);
942
940
- if (FAILED(hr))
941
- er = ERROR_INSTALL_FAILURE;
942
- return WcaFinalize(er);
943
+ return WcaFinalize(FAILED(hr) ? ERROR_INSTALL_FAILURE : er);
944
}
945
src/ca/qtexecca.cpp
+4
@@ -131,6 +131,7 @@ HRESULT ExecCommon64(
131
HRESULT hr = S_OK;
132
LPWSTR pwzCommand = NULL;
133
DWORD dwTimeout = 0;
134
+#ifndef _WIN64
135
BOOL fIsWow64Initialized = FALSE;
136
BOOL fRedirected = FALSE;
137
@@ -145,6 +146,7 @@ HRESULT ExecCommon64(
146
hr = WcaDisableWow64FSRedirection();
147
ExitOnFailure(hr, "Failed to enable filesystem redirection.");
148
fRedirected = TRUE;
149
+#endif
150
151
hr = BuildCommandLine(wzArgumentsProperty, &pwzCommand);
152
ExitOnFailure(hr, "Failed to get Command Line");
@@ -157,6 +159,7 @@ HRESULT ExecCommon64(
159
LExit:
160
ReleaseStr(pwzCommand);
161
162
+#ifndef _WIN64
163
if (fRedirected)
164
{
165
WcaRevertWow64FSRedirection();
@@ -166,6 +169,7 @@ LExit:
169
{
170
WcaFinalizeWow64();
171
}
172
+#endif
173
174
return hr;
175
}
src/ca/scaperfexec.cpp
+3
-3
@@ -87,10 +87,10 @@ extern "C" UINT __stdcall RegisterPerfmon(
87
88
HMODULE hMod = NULL;
89
PFNPERFCOUNTERTEXTSTRINGS pfnPerfCounterTextString;
90
- DWORD_PTR dwRet;
90
+ DWORD dwRet;
91
LPWSTR pwzShortPath = NULL;
92
- DWORD_PTR cchShortPath = MAX_PATH;
93
- DWORD_PTR cchShortPathLength = 0;
92
+ DWORD cchShortPath = MAX_PATH;
93
+ DWORD cchShortPathLength = 0;
94
95
LPWSTR pwzCommand = NULL;
96
src/ca/utilca.vcxproj
+25
-1
@@ -6,6 +6,30 @@
6
<Import Project="..\..\packages\WixToolset.WcaUtil.4.0.11\build\WixToolset.WcaUtil.props" Condition="Exists('..\..\packages\WixToolset.WcaUtil.4.0.11\build\WixToolset.WcaUtil.props')" />
7
8
<ItemGroup Label="ProjectConfigurations">
9
+ <ProjectConfiguration Include="Debug|ARM">
10
+ <Configuration>Debug</Configuration>
11
+ <Platform>ARM</Platform>
12
+ </ProjectConfiguration>
13
+ <ProjectConfiguration Include="Release|ARM">
14
+ <Configuration>Release</Configuration>
15
+ <Platform>ARM</Platform>
16
+ </ProjectConfiguration>
17
+ <ProjectConfiguration Include="Debug|ARM64">
18
+ <Configuration>Debug</Configuration>
19
+ <Platform>ARM64</Platform>
20
+ </ProjectConfiguration>
21
+ <ProjectConfiguration Include="Release|ARM64">
22
+ <Configuration>Release</Configuration>
23
+ <Platform>ARM64</Platform>
24
+ </ProjectConfiguration>
25
+ <ProjectConfiguration Include="Debug|X64">
26
+ <Configuration>Debug</Configuration>
27
+ <Platform>X64</Platform>
28
+ </ProjectConfiguration>
29
+ <ProjectConfiguration Include="Release|X64">
30
+ <Configuration>Release</Configuration>
31
+ <Platform>X64</Platform>
32
+ </ProjectConfiguration>
33
<ProjectConfiguration Include="Debug|Win32">
34
<Configuration>Debug</Configuration>
35
<Platform>Win32</Platform>
@@ -20,7 +44,7 @@
44
<ProjectGuid>{076018F7-19BD-423A-ABBF-229273DA08D8}</ProjectGuid>
45
<ConfigurationType>DynamicLibrary</ConfigurationType>
46
<TargetName>utilca</TargetName>
23
- <PlatformToolset>v141</PlatformToolset>
47
+ <PlatformToolset>v142</PlatformToolset>
48
<CharacterSet>Unicode</CharacterSet>
49
<ProjectModuleDefinitionFile>utilca.def</ProjectModuleDefinitionFile>
50
<Description>WiX Toolset Util CustomAction</Description>
src/test/WixToolsetTest.Util/UtilExtensionFixture.cs
+37
-27
@@ -43,13 +43,13 @@ namespace WixToolsetTest.Util
43
var results = build.BuildAndQuery(BuildX64, "Binary", "CustomAction", "Wix4FileShare", "Wix4FileSharePermissions");
44
Assert.Equal(new[]
45
{
46
- "Binary:Wix4UtilCA_X86\t[Binary data]",
47
- "CustomAction:Wix4ConfigureSmbInstall_X86\t1\tWix4UtilCA_X86\tConfigureSmbInstall\t",
48
- "CustomAction:Wix4ConfigureSmbUninstall_X86\t1\tWix4UtilCA_X86\tConfigureSmbUninstall\t",
49
- "CustomAction:Wix4CreateSmb_X86\t11265\tWix4UtilCA_X86\tCreateSmb\t",
50
- "CustomAction:Wix4CreateSmbRollback_X86\t11585\tWix4UtilCA_X86\tDropSmb\t",
51
- "CustomAction:Wix4DropSmb_X86\t11265\tWix4UtilCA_X86\tDropSmb\t",
52
- "CustomAction:Wix4DropSmbRollback_X86\t11585\tWix4UtilCA_X86\tCreateSmb\t",
46
+ "Binary:Wix4UtilCA_X64\t[Binary data]",
47
+ "CustomAction:Wix4ConfigureSmbInstall_X64\t1\tWix4UtilCA_X64\tConfigureSmbInstall\t",
48
+ "CustomAction:Wix4ConfigureSmbUninstall_X64\t1\tWix4UtilCA_X64\tConfigureSmbUninstall\t",
49
+ "CustomAction:Wix4CreateSmb_X64\t11265\tWix4UtilCA_X64\tCreateSmb\t",
50
+ "CustomAction:Wix4CreateSmbRollback_X64\t11585\tWix4UtilCA_X64\tDropSmb\t",
51
+ "CustomAction:Wix4DropSmb_X64\t11265\tWix4UtilCA_X64\tDropSmb\t",
52
+ "CustomAction:Wix4DropSmbRollback_X64\t11585\tWix4UtilCA_X64\tCreateSmb\t",
53
"Wix4FileShare:ExampleFileShare\texample\tfilF5_pLhBuF5b4N9XEo52g_hUM5Lo\tAn example file share\tINSTALLFOLDER",
54
"Wix4FileSharePermissions:ExampleFileShare\tEveryone\t1",
55
}, results.OrderBy(s => s).ToArray());
@@ -61,13 +61,13 @@ namespace WixToolsetTest.Util
61
var folder = TestData.Get(@"TestData\CloseApplication");
62
var build = new Builder(folder, typeof(UtilExtensionFactory), new[] { folder });
63
64
- var results = build.BuildAndQuery(BuildX64, "Binary", "CustomAction", "Wix4CloseApplication");
64
+ var results = build.BuildAndQuery(BuildARM64, "Binary", "CustomAction", "Wix4CloseApplication");
65
Assert.Equal(new[]
66
{
67
- "Binary:Wix4UtilCA_X86\t[Binary data]",
68
- "CustomAction:Wix4CheckRebootRequired_X86\t65\tWix4UtilCA_X86\tWixCheckRebootRequired\t",
69
- "CustomAction:Wix4CloseApplications_X86\t1\tWix4UtilCA_X86\tWixCloseApplications\t",
70
- "CustomAction:Wix4CloseApplicationsDeferred_X86\t3073\tWix4UtilCA_X86\tWixCloseApplicationsDeferred\t",
67
+ "Binary:Wix4UtilCA_A64\t[Binary data]",
68
+ "CustomAction:Wix4CheckRebootRequired_A64\t65\tWix4UtilCA_A64\tWixCheckRebootRequired\t",
69
+ "CustomAction:Wix4CloseApplications_A64\t1\tWix4UtilCA_A64\tWixCloseApplications\t",
70
+ "CustomAction:Wix4CloseApplicationsDeferred_A64\t3073\tWix4UtilCA_A64\tWixCloseApplicationsDeferred\t",
71
"Wix4CloseApplication:CloseMyApp\texplorer.exe\t\t\t3\t\tMYAPPISRUNNING\t\t",
72
}, results.OrderBy(s => s).ToArray());
73
}
@@ -81,10 +81,10 @@ namespace WixToolsetTest.Util
81
var results = build.BuildAndQuery(BuildX64, "Binary", "CustomAction", "RemoveFile", "Wix4InternetShortcut");
82
Assert.Equal(new[]
83
{
84
- "Binary:Wix4UtilCA_X86\t[Binary data]",
85
- "CustomAction:Wix4CreateInternetShortcuts_X86\t3073\tWix4UtilCA_X86\tWixCreateInternetShortcuts\t",
86
- "CustomAction:Wix4RollbackInternetShortcuts_X86\t3329\tWix4UtilCA_X86\tWixRollbackInternetShortcuts\t",
87
- "CustomAction:Wix4SchedInternetShortcuts_X86\t1\tWix4UtilCA_X86\tWixSchedInternetShortcuts\t",
84
+ "Binary:Wix4UtilCA_X64\t[Binary data]",
85
+ "CustomAction:Wix4CreateInternetShortcuts_X64\t3073\tWix4UtilCA_X64\tWixCreateInternetShortcuts\t",
86
+ "CustomAction:Wix4RollbackInternetShortcuts_X64\t3329\tWix4UtilCA_X64\tWixRollbackInternetShortcuts\t",
87
+ "CustomAction:Wix4SchedInternetShortcuts_X64\t1\tWix4UtilCA_X64\tWixSchedInternetShortcuts\t",
88
"RemoveFile:wixshortcut\tfilF5_pLhBuF5b4N9XEo52g_hUM5Lo\tvtpzs3bw.lnk|WiX Toolset.lnk\tINSTALLFOLDER\t2",
89
"Wix4InternetShortcut:wixshortcut\tfilF5_pLhBuF5b4N9XEo52g_hUM5Lo\tINSTALLFOLDER\tWiX Toolset.lnk\thttps://wixtoolset.org\t0\t\t0",
90
}, results.OrderBy(s => s).ToArray());
@@ -113,19 +113,19 @@ namespace WixToolsetTest.Util
113
var folder = TestData.Get(@"TestData\EventManifest");
114
var build = new Builder(folder, typeof(UtilExtensionFactory), new[] { folder });
115
116
- var results = build.BuildAndQuery(BuildX64, "Binary", "CustomAction", "Wix4EventManifest", "Wix4XmlFile");
116
+ var results = build.BuildAndQuery(BuildARM64, "Binary", "CustomAction", "Wix4EventManifest", "Wix4XmlFile");
117
Assert.Equal(new[]
118
{
119
- "Binary:Wix4UtilCA_X86\t[Binary data]",
120
- "CustomAction:Wix4ConfigureEventManifestRegister_X86\t1\tWix4UtilCA_X86\tConfigureEventManifestRegister\t",
121
- "CustomAction:Wix4ConfigureEventManifestUnregister_X86\t1\tWix4UtilCA_X86\tConfigureEventManifestUnregister\t",
122
- "CustomAction:Wix4ExecXmlFile_X86\t11265\tWix4UtilCA_X86\tExecXmlFile\t",
123
- "CustomAction:Wix4ExecXmlFileRollback_X86\t11521\tWix4UtilCA_X86\tExecXmlFileRollback\t",
124
- "CustomAction:Wix4RegisterEventManifest_X86\t3073\tWix4UtilCA_X86\tCAQuietExec\t",
125
- "CustomAction:Wix4RollbackRegisterEventManifest_X86\t3393\tWix4UtilCA_X86\tCAQuietExec\t",
126
- "CustomAction:Wix4RollbackUnregisterEventManifest_X86\t3329\tWix4UtilCA_X86\tCAQuietExec\t",
127
- "CustomAction:Wix4SchedXmlFile_X86\t1\tWix4UtilCA_X86\tSchedXmlFile\t",
128
- "CustomAction:Wix4UnregisterEventManifest_X86\t3137\tWix4UtilCA_X86\tCAQuietExec\t",
119
+ "Binary:Wix4UtilCA_A64\t[Binary data]",
120
+ "CustomAction:Wix4ConfigureEventManifestRegister_A64\t1\tWix4UtilCA_A64\tConfigureEventManifestRegister\t",
121
+ "CustomAction:Wix4ConfigureEventManifestUnregister_A64\t1\tWix4UtilCA_A64\tConfigureEventManifestUnregister\t",
122
+ "CustomAction:Wix4ExecXmlFile_A64\t11265\tWix4UtilCA_A64\tExecXmlFile\t",
123
+ "CustomAction:Wix4ExecXmlFileRollback_A64\t11521\tWix4UtilCA_A64\tExecXmlFileRollback\t",
124
+ "CustomAction:Wix4RegisterEventManifest_A64\t3073\tWix4UtilCA_A64\tCAQuietExec\t",
125
+ "CustomAction:Wix4RollbackRegisterEventManifest_A64\t3393\tWix4UtilCA_A64\tCAQuietExec\t",
126
+ "CustomAction:Wix4RollbackUnregisterEventManifest_A64\t3329\tWix4UtilCA_A64\tCAQuietExec\t",
127
+ "CustomAction:Wix4SchedXmlFile_A64\t1\tWix4UtilCA_A64\tSchedXmlFile\t",
128
+ "CustomAction:Wix4UnregisterEventManifest_A64\t3137\tWix4UtilCA_A64\tCAQuietExec\t",
129
"Wix4EventManifest:Manifest.dll\t[#Manifest.dll]",
130
"Wix4XmlFile:Config_Manifest.dllMessageFile\t[#Manifest.dll]\t/*/*/*/*[\\[]@messageFileName[\\]]\tmessageFileName\t[Manifest.dll]\t4100\tManifest.dll\t",
131
"Wix4XmlFile:Config_Manifest.dllResourceFile\t[#Manifest.dll]\t/*/*/*/*[\\[]@resourceFileName[\\]]\tresourceFileName\t[Manifest.dll]\t4100\tManifest.dll\t",
@@ -203,5 +203,15 @@ namespace WixToolsetTest.Util
203
var result = WixRunner.Execute(newArgs.ToArray());
204
result.AssertSuccess();
205
}
206
+
207
+ private static void BuildARM64(string[] args)
208
+ {
209
+ var newArgs = args.ToList();
210
+ newArgs.Add("-platform");
211
+ newArgs.Add("arm64");
212
+
213
+ var result = WixRunner.Execute(newArgs.ToArray());
214
+ result.AssertSuccess();
215
+ }
216
}
217
}
src/wixext/UtilCompiler.cs
+21
-21
@@ -875,7 +875,7 @@ namespace WixToolset.Util
875
876
this.ParseHelper.ParseForExtensionElements(this.Context.Extensions, intermediate, section, element);
877
878
- this.ParseHelper.CreateCustomActionReference(sourceLineNumbers, section, "CloseApplications", this.Context.Platform, CustomActionPlatforms.ARM | CustomActionPlatforms.X86);
878
+ this.ParseHelper.CreateCustomActionReference(sourceLineNumbers, section, "CloseApplications", this.Context.Platform, CustomActionPlatforms.X86 | CustomActionPlatforms.X64 | CustomActionPlatforms.ARM | CustomActionPlatforms.ARM64);
879
880
if (!this.Messaging.EncounteredError)
881
{
@@ -1181,8 +1181,8 @@ namespace WixToolset.Util
1181
}
1182
}
1183
1184
- this.ParseHelper.CreateCustomActionReference(sourceLineNumbers, section, "ConfigureSmbInstall", this.Context.Platform, CustomActionPlatforms.ARM | CustomActionPlatforms.X86);
1185
- this.ParseHelper.CreateCustomActionReference(sourceLineNumbers, section, "ConfigureSmbUninstall", this.Context.Platform, CustomActionPlatforms.ARM | CustomActionPlatforms.X86);
1184
+ this.ParseHelper.CreateCustomActionReference(sourceLineNumbers, section, "ConfigureSmbInstall", this.Context.Platform, CustomActionPlatforms.X86 | CustomActionPlatforms.X64 | CustomActionPlatforms.ARM | CustomActionPlatforms.ARM64);
1185
+ this.ParseHelper.CreateCustomActionReference(sourceLineNumbers, section, "ConfigureSmbUninstall", this.Context.Platform, CustomActionPlatforms.X86 | CustomActionPlatforms.X64 | CustomActionPlatforms.ARM | CustomActionPlatforms.ARM64);
1186
1187
if (!this.Messaging.EncounteredError)
1188
{
@@ -1489,7 +1489,7 @@ namespace WixToolset.Util
1489
IconIndex = iconIndex,
1490
});
1491
1492
- this.ParseHelper.CreateCustomActionReference(sourceLineNumbers, section, "SchedInternetShortcuts", this.Context.Platform, CustomActionPlatforms.ARM | CustomActionPlatforms.X86);
1492
+ this.ParseHelper.CreateCustomActionReference(sourceLineNumbers, section, "SchedInternetShortcuts", this.Context.Platform, CustomActionPlatforms.X86 | CustomActionPlatforms.X64 | CustomActionPlatforms.ARM | CustomActionPlatforms.ARM64);
1493
1494
// make sure we have a CreateFolder table so that the immediate CA can add temporary rows to handle installation and uninstallation
1495
this.ParseHelper.EnsureTable(section, sourceLineNumbers, "CreateFolder");
@@ -1677,8 +1677,8 @@ namespace WixToolset.Util
1677
this.ParseHelper.CreateRegistryTuple(section, sourceLineNumbers, RegistryRootType.LocalMachine, performanceKey, "Counter Types", sbCounterTypes.ToString(), componentId, false);
1678
}
1679
1680
- this.ParseHelper.CreateCustomActionReference(sourceLineNumbers, section, "InstallPerfCounterData", this.Context.Platform, CustomActionPlatforms.ARM | CustomActionPlatforms.X86);
1681
- this.ParseHelper.CreateCustomActionReference(sourceLineNumbers, section, "UninstallPerfCounterData", this.Context.Platform, CustomActionPlatforms.ARM | CustomActionPlatforms.X86);
1680
+ this.ParseHelper.CreateCustomActionReference(sourceLineNumbers, section, "InstallPerfCounterData", this.Context.Platform, CustomActionPlatforms.X86 | CustomActionPlatforms.X64 | CustomActionPlatforms.ARM | CustomActionPlatforms.ARM64);
1681
+ this.ParseHelper.CreateCustomActionReference(sourceLineNumbers, section, "UninstallPerfCounterData", this.Context.Platform, CustomActionPlatforms.X86 | CustomActionPlatforms.X64 | CustomActionPlatforms.ARM | CustomActionPlatforms.ARM64);
1682
}
1683
1684
/// <summary>
@@ -2156,8 +2156,8 @@ namespace WixToolset.Util
2156
});
2157
}
2158
2159
- this.ParseHelper.CreateCustomActionReference(sourceLineNumbers, section, "ConfigurePerfmonInstall", this.Context.Platform, CustomActionPlatforms.ARM | CustomActionPlatforms.X86);
2160
- this.ParseHelper.CreateCustomActionReference(sourceLineNumbers, section, "ConfigurePerfmonUninstall", this.Context.Platform, CustomActionPlatforms.ARM | CustomActionPlatforms.X86);
2159
+ this.ParseHelper.CreateCustomActionReference(sourceLineNumbers, section, "ConfigurePerfmonInstall", this.Context.Platform, CustomActionPlatforms.X86 | CustomActionPlatforms.X64 | CustomActionPlatforms.ARM | CustomActionPlatforms.ARM64);
2160
+ this.ParseHelper.CreateCustomActionReference(sourceLineNumbers, section, "ConfigurePerfmonUninstall", this.Context.Platform, CustomActionPlatforms.X86 | CustomActionPlatforms.X64 | CustomActionPlatforms.ARM | CustomActionPlatforms.ARM64);
2161
}
2162
2163
@@ -2204,8 +2204,8 @@ namespace WixToolset.Util
2204
});
2205
}
2206
2207
- this.ParseHelper.CreateCustomActionReference(sourceLineNumbers, section, "ConfigurePerfmonManifestRegister", this.Context.Platform, CustomActionPlatforms.ARM | CustomActionPlatforms.X86);
2208
- this.ParseHelper.CreateCustomActionReference(sourceLineNumbers, section, "ConfigurePerfmonManifestUnregister", this.Context.Platform, CustomActionPlatforms.ARM | CustomActionPlatforms.X86);
2207
+ this.ParseHelper.CreateCustomActionReference(sourceLineNumbers, section, "ConfigurePerfmonManifestRegister", this.Context.Platform, CustomActionPlatforms.X86 | CustomActionPlatforms.X64 | CustomActionPlatforms.ARM | CustomActionPlatforms.ARM64);
2208
+ this.ParseHelper.CreateCustomActionReference(sourceLineNumbers, section, "ConfigurePerfmonManifestUnregister", this.Context.Platform, CustomActionPlatforms.X86 | CustomActionPlatforms.X64 | CustomActionPlatforms.ARM | CustomActionPlatforms.ARM64);
2209
}
2210
2211
/// <summary>
@@ -2248,7 +2248,7 @@ namespace WixToolset.Util
2248
2249
if (!this.Messaging.EncounteredError)
2250
{
2251
- this.ParseHelper.CreateCustomActionReference(sourceLineNumbers, section, "SchedFormatFiles", this.Context.Platform, CustomActionPlatforms.X64 | CustomActionPlatforms.X86);
2251
+ this.ParseHelper.CreateCustomActionReference(sourceLineNumbers, section, "SchedFormatFiles", this.Context.Platform, CustomActionPlatforms.X86 | CustomActionPlatforms.X64 | CustomActionPlatforms.ARM | CustomActionPlatforms.ARM64);
2252
2253
section.AddTuple(new WixFormatFilesTuple(sourceLineNumbers)
2254
{
@@ -2348,8 +2348,8 @@ namespace WixToolset.Util
2348
2349
}
2350
2351
- this.ParseHelper.CreateCustomActionReference(sourceLineNumbers, section, "ConfigureEventManifestRegister", this.Context.Platform, CustomActionPlatforms.ARM | CustomActionPlatforms.X86);
2352
- this.ParseHelper.CreateCustomActionReference(sourceLineNumbers, section, "ConfigureEventManifestUnregister", this.Context.Platform, CustomActionPlatforms.ARM | CustomActionPlatforms.X86);
2351
+ this.ParseHelper.CreateCustomActionReference(sourceLineNumbers, section, "ConfigureEventManifestRegister", this.Context.Platform, CustomActionPlatforms.X86 | CustomActionPlatforms.X64 | CustomActionPlatforms.ARM | CustomActionPlatforms.ARM64);
2352
+ this.ParseHelper.CreateCustomActionReference(sourceLineNumbers, section, "ConfigureEventManifestUnregister", this.Context.Platform, CustomActionPlatforms.X86 | CustomActionPlatforms.X64 | CustomActionPlatforms.ARM | CustomActionPlatforms.ARM64);
2353
2354
if (null != messageFile || null != parameterFile || null != resourceFile)
2355
{
@@ -2460,7 +2460,7 @@ namespace WixToolset.Util
2460
2461
if (!this.Messaging.EncounteredError)
2462
{
2463
- this.ParseHelper.CreateCustomActionReference(sourceLineNumbers, section, "SchedSecureObjects", this.Context.Platform, CustomActionPlatforms.ARM | CustomActionPlatforms.X64 | CustomActionPlatforms.X86);
2463
+ this.ParseHelper.CreateCustomActionReference(sourceLineNumbers, section, "SchedSecureObjects", this.Context.Platform, CustomActionPlatforms.X86 | CustomActionPlatforms.X64 | CustomActionPlatforms.ARM | CustomActionPlatforms.ARM64);
2464
2465
var id = this.ParseHelper.CreateIdentifier("sec", objectId, tableName, domain, user);
2466
section.AddTuple(new SecureObjectsTuple(sourceLineNumbers, id)
@@ -2809,7 +2809,7 @@ namespace WixToolset.Util
2809
2810
if (!this.Messaging.EncounteredError)
2811
{
2812
- this.ParseHelper.CreateCustomActionReference(sourceLineNumbers, section, "RemoveFoldersEx", this.Context.Platform, CustomActionPlatforms.X86);
2812
+ this.ParseHelper.CreateCustomActionReference(sourceLineNumbers, section, "RemoveFoldersEx", this.Context.Platform, CustomActionPlatforms.X86 | CustomActionPlatforms.X64 | CustomActionPlatforms.ARM | CustomActionPlatforms.ARM64);
2813
2814
section.AddTuple(new WixRemoveFolderExTuple(sourceLineNumbers, id)
2815
{
@@ -2885,7 +2885,7 @@ namespace WixToolset.Util
2885
2886
if (!this.Messaging.EncounteredError)
2887
{
2888
- this.ParseHelper.CreateCustomActionReference(sourceLineNumbers, section, "RegisterRestartResources", this.Context.Platform, CustomActionPlatforms.ARM | CustomActionPlatforms.X86);
2888
+ this.ParseHelper.CreateCustomActionReference(sourceLineNumbers, section, "RegisterRestartResources", this.Context.Platform, CustomActionPlatforms.X86 | CustomActionPlatforms.X64 | CustomActionPlatforms.ARM | CustomActionPlatforms.ARM64);
2889
2890
section.AddTuple(new WixRestartResourceTuple(sourceLineNumbers, id)
2891
{
@@ -2977,7 +2977,7 @@ namespace WixToolset.Util
2977
2978
if (!this.Messaging.EncounteredError)
2979
{
2980
- this.ParseHelper.CreateCustomActionReference(sourceLineNumbers, section, "SchedServiceConfig", this.Context.Platform, CustomActionPlatforms.ARM | CustomActionPlatforms.X86);
2980
+ this.ParseHelper.CreateCustomActionReference(sourceLineNumbers, section, "SchedServiceConfig", this.Context.Platform, CustomActionPlatforms.X86 | CustomActionPlatforms.X64 | CustomActionPlatforms.ARM | CustomActionPlatforms.ARM64);
2981
2982
section.AddTuple(new ServiceConfigTuple(sourceLineNumbers)
2983
{
@@ -3081,7 +3081,7 @@ namespace WixToolset.Util
3081
Attributes = attributes,
3082
});
3083
3084
- this.ParseHelper.CreateCustomActionReference(sourceLineNumbers, section, "TouchFileDuringInstall", this.Context.Platform, CustomActionPlatforms.X86);
3084
+ this.ParseHelper.CreateCustomActionReference(sourceLineNumbers, section, "TouchFileDuringInstall", this.Context.Platform, CustomActionPlatforms.X86 | CustomActionPlatforms.X64 | CustomActionPlatforms.ARM | CustomActionPlatforms.ARM64);
3085
}
3086
}
3087
@@ -3285,7 +3285,7 @@ namespace WixToolset.Util
3285
3286
if (null != componentId)
3287
{
3288
- this.ParseHelper.CreateCustomActionReference(sourceLineNumbers, section, "ConfigureUsers", this.Context.Platform, CustomActionPlatforms.ARM | CustomActionPlatforms.X86);
3288
+ this.ParseHelper.CreateCustomActionReference(sourceLineNumbers, section, "ConfigureUsers", this.Context.Platform, CustomActionPlatforms.X86 | CustomActionPlatforms.X64 | CustomActionPlatforms.ARM | CustomActionPlatforms.ARM64);
3289
}
3290
3291
if (!this.Messaging.EncounteredError)
@@ -3669,7 +3669,7 @@ namespace WixToolset.Util
3669
}
3670
}
3671
3672
- this.ParseHelper.CreateCustomActionReference(sourceLineNumbers, section, "SchedXmlConfig", this.Context.Platform, CustomActionPlatforms.ARM | CustomActionPlatforms.X86);
3672
+ this.ParseHelper.CreateCustomActionReference(sourceLineNumbers, section, "SchedXmlConfig", this.Context.Platform, CustomActionPlatforms.X86 | CustomActionPlatforms.X64 | CustomActionPlatforms.ARM | CustomActionPlatforms.ARM64);
3673
}
3674
3675
/// <summary>
@@ -3720,7 +3720,7 @@ namespace WixToolset.Util
3720
3721
private void AddReferenceToSchedXmlFile(SourceLineNumber sourceLineNumbers, IntermediateSection section)
3722
{
3723
- this.ParseHelper.CreateCustomActionReference(sourceLineNumbers, section, "SchedXmlFile", this.Context.Platform, CustomActionPlatforms.ARM | CustomActionPlatforms.X86);
3723
+ this.ParseHelper.CreateCustomActionReference(sourceLineNumbers, section, "SchedXmlFile", this.Context.Platform, CustomActionPlatforms.X86 | CustomActionPlatforms.X64 | CustomActionPlatforms.ARM | CustomActionPlatforms.ARM64);
3724
}
3725
3726
/// <summary>
src/wixlib/UtilExtension.wxs
-93
@@ -63,62 +63,6 @@
63
</UI>
64
</Fragment>
65
66
- <Fragment>
67
- <CustomAction Id="$(var.Prefix)FailWhenDeferred$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="WixFailWhenDeferred" Execute="deferred" Return="check" SuppressModularization="yes" />
68
-
69
- <InstallExecuteSequence>
70
- <Custom Action="$(var.Prefix)FailWhenDeferred$(var.Suffix)" Before="InstallFinalize" Overridable="yes">WIXFAILWHENDEFERRED=1 AND VersionNT > 400</Custom>
71
- </InstallExecuteSequence>
72
- </Fragment>
73
-
74
- <Fragment>
75
- <CustomAction Id="$(var.Prefix)WaitForEvent$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="WixWaitForEvent" Execute="immediate" Return="check" SuppressModularization="yes" />
76
-
77
- <InstallExecuteSequence>
78
- <Custom Action="$(var.Prefix)WaitForEvent$(var.Suffix)" Before="InstallFinalize" Overridable="yes" />
79
- </InstallExecuteSequence>
80
- </Fragment>
81
-
82
- <Fragment>
83
- <CustomAction Id="$(var.Prefix)WaitForEventDeferred$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="WixWaitForEvent" Execute="deferred" Return="check" SuppressModularization="yes" />
84
-
85
- <InstallExecuteSequence>
86
- <Custom Action="$(var.Prefix)WaitForEventDeferred$(var.Suffix)" After="InstallInitialize" Overridable="yes" />
87
- </InstallExecuteSequence>
88
- </Fragment>
89
-
90
- <Fragment>
91
- <CustomAction Id="$(var.Prefix)ExitEarlyWithSuccess$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="WixExitEarlyWithSuccess" Execute="immediate" Return="check" SuppressModularization="yes" />
92
-
93
- <InstallExecuteSequence>
94
- <Custom Action="$(var.Prefix)ExitEarlyWithSuccess$(var.Suffix)" After="FindRelatedProducts" Overridable="yes">NEWERVERSIONDETECTED AND VersionNT > 400</Custom>
95
- </InstallExecuteSequence>
96
- </Fragment>
97
-
98
- <Fragment>
99
- <CustomAction Id="$(var.Prefix)RemoveFoldersEx$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="WixRemoveFoldersEx" Execute="immediate" Return="ignore" />
100
-
101
- <InstallExecuteSequence>
102
- <Custom Action="$(var.Prefix)RemoveFoldersEx$(var.Suffix)" Before="CostInitialize" />
103
- </InstallExecuteSequence>
104
- </Fragment>
105
-
106
- <Fragment>
107
- <CustomAction Id="$(var.Prefix)BroadcastSettingChange$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="WixBroadcastSettingChange" Execute="immediate" Return="ignore" SuppressModularization="yes" />
108
-
109
- <InstallExecuteSequence>
110
- <Custom Action="$(var.Prefix)BroadcastSettingChange$(var.Suffix)" After="InstallFinalize" Overridable="yes" />
111
- </InstallExecuteSequence>
112
- </Fragment>
113
-
114
- <Fragment>
115
- <CustomAction Id="$(var.Prefix)BroadcastEnvironmentChange$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="WixBroadcastEnvironmentChange" Execute="immediate" Return="ignore" SuppressModularization="yes" />
116
-
117
- <InstallExecuteSequence>
118
- <Custom Action="$(var.Prefix)BroadcastEnvironmentChange$(var.Suffix)" After="InstallFinalize" Overridable="yes" />
119
- </InstallExecuteSequence>
120
- </Fragment>
121
-
66
<!-- WiX OS-detection properties and custom action -->
67
<Fragment>
68
<CustomAction Id="$(var.Prefix)QueryOsInfo$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="WixQueryOsInfo" Execute="firstSequence" Return="check" SuppressModularization="yes" />
@@ -382,43 +326,6 @@
326
<CustomActionRef Id="$(var.Prefix)QueryOsDriverInfo$(var.Suffix)" />
327
</Fragment>
328
385
- <!-- ShellExec custom actions (for when only one is needed; multiple executions need their own IDs) -->
386
- <Fragment>
387
- <PropertyRef Id="WixShellExecBinaryId" />
388
- <CustomAction Id="$(var.Prefix)ShellExecBinary$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="WixShellExecBinary" Execute="immediate" Return="check" Impersonate="yes" />
389
- </Fragment>
390
-
391
- <Fragment>
392
- <PropertyRef Id="WixShellExecTarget" />
393
- <CustomAction Id="$(var.Prefix)ShellExec$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="WixShellExec" Execute="immediate" Return="check" Impersonate="yes" />
394
- </Fragment>
395
-
396
- <Fragment>
397
- <PropertyRef Id="WixUnelevatedShellExecTarget" />
398
- <CustomAction Id="$(var.Prefix)UnelevatedShellExec$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="WixUnelevatedShellExec" Execute="immediate" Return="check" Impersonate="yes" />
399
- </Fragment>
400
-
401
- <Fragment>
402
- <PropertyRef Id="WixQuietExecCmdLine" />
403
- <CustomAction Id="$(var.Prefix)QuietExec$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="WixQuietExec" Execute="immediate" Return="check" Impersonate="yes" />
404
- </Fragment>
405
-
406
- <Fragment>
407
- <PropertyRef Id="WixQuietExec64CmdLine" />
408
- <CustomAction Id="$(var.Prefix)QuietExec64$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="WixQuietExec64" Execute="immediate" Return="check" Impersonate="yes" />
409
- </Fragment>
410
-
411
- <!-- SilentExec custom actions differ from QtExec in that they do not log the commandline or output of the exe -->
412
- <Fragment>
413
- <PropertyRef Id="WixSilentExecCmdLine" />
414
- <CustomAction Id="$(var.Prefix)SilentExec$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="WixSilentExec" Execute="immediate" Return="check" Impersonate="yes" />
415
- </Fragment>
416
-
417
- <Fragment>
418
- <PropertyRef Id="WixSilentExec64CmdLine" />
419
- <CustomAction Id="$(var.Prefix)SilentExec64$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="WixSilentExec64" Execute="immediate" Return="check" Impersonate="yes" />
420
- </Fragment>
421
-
329
<Fragment>
330
<BundleExtension Id="WixUtilBundleExtension" SourceFile="utilbe.dll" Name="WixUtilBundleExtension\utilbe.dll" />
331
</Fragment>
src/wixlib/UtilExtension_Platform.wxi
+299
-217
@@ -3,221 +3,303 @@
3
4
5
<Include xmlns="http://wixtoolset.org/schemas/v4/wxs">
6
- <?include caDecor.wxi ?>
7
-
8
- <!--
9
- The following actions do not support X64.
10
- -->
11
- <?if $(var.platform)!=x64 ?>
12
-
13
- <Fragment>
14
- <CustomAction Id="$(var.Prefix)CheckRebootRequired$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="WixCheckRebootRequired" Execute="immediate" Return="ignore" SuppressModularization="yes" />
15
-
16
- <InstallExecuteSequence>
17
- <!-- Condition this so it runs on install and MMode, but not uninstall -->
18
- <Custom Action="$(var.Prefix)CheckRebootRequired$(var.Suffix)" After="InstallFinalize" Overridable="yes">NOT REMOVE~="ALL" AND VersionNT > 400</Custom>
19
- </InstallExecuteSequence>
20
- </Fragment>
21
-
22
- <Fragment>
23
- <CustomAction Id="$(var.Prefix)CloseApplications$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="WixCloseApplications" Execute="immediate" Return="check" SuppressModularization="yes" />
24
- <CustomAction Id="$(var.Prefix)CloseApplicationsDeferred$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="WixCloseApplicationsDeferred" Impersonate="no" Execute="deferred" Return="check" SuppressModularization="yes" />
25
- <CustomActionRef Id="$(var.Prefix)CheckRebootRequired$(var.Suffix)" />
26
-
27
- <InstallExecuteSequence>
28
- <Custom Action="$(var.Prefix)CloseApplications$(var.Suffix)" Before="InstallFiles" Overridable="yes">VersionNT > 400</Custom>
29
- </InstallExecuteSequence>
30
- </Fragment>
31
-
32
- <Fragment>
33
- <CustomAction Id="$(var.Prefix)RegisterRestartResources$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="WixRegisterRestartResources$(var.Suffix)" Execute="immediate" Return="check" SuppressModularization="yes" />
34
-
35
- <InstallExecuteSequence>
36
- <Custom Action="$(var.Prefix)RegisterRestartResources$(var.Suffix)" Before="InstallValidate" Overridable="yes" />
37
- </InstallExecuteSequence>
38
- </Fragment>
39
-
40
- <Fragment>
41
- <UIRef Id="ConfigureUsersErrorText" />
42
-
43
- <CustomAction Id="$(var.Prefix)ConfigureUsers$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="ConfigureUsers" Execute="immediate" Return="check" SuppressModularization="yes" />
44
- <CustomAction Id="$(var.Prefix)CreateUser$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="CreateUser" Impersonate="no" Execute="deferred" Return="check" HideTarget="yes" SuppressModularization="yes" />
45
- <CustomAction Id="$(var.Prefix)CreateUserRollback$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="RemoveUser" Impersonate="no" Execute="rollback" Return="check" HideTarget="yes" SuppressModularization="yes" />
46
- <!-- RemoveUser is a type commit action because it is not possible to rollback the removal of a user -->
47
- <CustomAction Id="$(var.Prefix)RemoveUser$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="RemoveUser" Impersonate="no" Execute="commit" Return="ignore" HideTarget="yes" SuppressModularization="yes" />
48
-
49
- <InstallExecuteSequence>
50
- <Custom Action="$(var.Prefix)ConfigureUsers$(var.Suffix)" Before="InstallFiles" Overridable="yes">VersionNT > 400</Custom>
51
- </InstallExecuteSequence>
52
- </Fragment>
53
-
54
- <Fragment>
55
- <UIRef Id="ConfigureSmbErrorsText" />
56
-
57
- <CustomAction Id="$(var.Prefix)ConfigureSmbInstall$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="ConfigureSmbInstall" Execute="immediate" Return="check" SuppressModularization="yes" />
58
- <CustomAction Id="$(var.Prefix)ConfigureSmbUninstall$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="ConfigureSmbUninstall" Execute="immediate" Return="check" SuppressModularization="yes" />
59
- <CustomAction Id="$(var.Prefix)CreateSmb$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="CreateSmb" Impersonate="no" Execute="deferred" Return="check" HideTarget="yes" SuppressModularization="yes" />
60
- <CustomAction Id="$(var.Prefix)CreateSmbRollback$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="DropSmb" Impersonate="no" Execute="rollback" Return="ignore" HideTarget="yes" SuppressModularization="yes" />
61
- <CustomAction Id="$(var.Prefix)DropSmb$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="DropSmb" Impersonate="no" Execute="deferred" Return="check" HideTarget="yes" SuppressModularization="yes" />
62
- <CustomAction Id="$(var.Prefix)DropSmbRollback$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="CreateSmb" Impersonate="no" Execute="rollback" Return="ignore" HideTarget="yes" SuppressModularization="yes" />
63
-
64
- <InstallExecuteSequence>
65
- <Custom Action="$(var.Prefix)ConfigureSmbInstall$(var.Suffix)" After="InstallFiles" Overridable="yes">VersionNT > 400</Custom>
66
- <Custom Action="$(var.Prefix)ConfigureSmbUninstall$(var.Suffix)" After="RemoveFiles" Overridable="yes">VersionNT > 400</Custom>
67
- </InstallExecuteSequence>
68
- </Fragment>
69
-
70
- <Fragment>
71
- <UIRef Id="PerCounterDataErrorsText" />
72
-
73
- <CustomAction Id="$(var.Prefix)InstallPerfCounterData$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="InstallPerfCounterData" Execute="immediate" Return="check" SuppressModularization="yes" />
74
- <CustomAction Id="$(var.Prefix)UninstallPerfCounterData$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="UninstallPerfCounterData" Execute="immediate" Return="check" SuppressModularization="yes" />
75
- <CustomAction Id="$(var.Prefix)RegisterPerfCounterData$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="RegisterPerfCounterData" Impersonate="no" Execute="deferred" Return="check" HideTarget="yes" SuppressModularization="yes" />
76
- <CustomAction Id="$(var.Prefix)UnregisterPerfCounterData$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="UnregisterPerfCounterData" Impersonate="no" Execute="deferred" Return="check" HideTarget="yes" SuppressModularization="yes" />
77
- <CustomAction Id="$(var.Prefix)RollbackRegisterPerfCounterData$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="UnregisterPerfCounterData" Impersonate="no" Execute="rollback" Return="check" HideTarget="yes" SuppressModularization="yes" />
78
- <CustomAction Id="$(var.Prefix)RollbackUnregisterPerfCounterData$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="RegisterPerfCounterData" Impersonate="no" Execute="rollback" Return="check" HideTarget="yes" SuppressModularization="yes" />
79
-
80
- <InstallExecuteSequence>
81
- <Custom Action="$(var.Prefix)InstallPerfCounterData$(var.Suffix)" After="WriteRegistryValues" Overridable="yes">VersionNT > 400</Custom>
82
- <Custom Action="$(var.Prefix)UninstallPerfCounterData$(var.Suffix)" Before="RemoveRegistryValues" Overridable="yes">VersionNT > 400</Custom>
83
- </InstallExecuteSequence>
84
- </Fragment>
85
-
86
- <Fragment>
87
- <UIRef Id="ConfigurePerfmonErrorsText" />
88
-
89
- <CustomAction Id="$(var.Prefix)ConfigurePerfmonInstall$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="ConfigurePerfmonInstall" Execute="immediate" Return="check" SuppressModularization="yes" />
90
- <CustomAction Id="$(var.Prefix)ConfigurePerfmonUninstall$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="ConfigurePerfmonUninstall" Execute="immediate" Return="check" SuppressModularization="yes" />
91
- <CustomAction Id="$(var.Prefix)RegisterPerfmon$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="RegisterPerfmon" Impersonate="no" Execute="deferred" Return="check" SuppressModularization="yes" />
92
- <CustomAction Id="$(var.Prefix)UnregisterPerfmon$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="UnregisterPerfmon" Impersonate="no" Execute="deferred" Return="check" SuppressModularization="yes" />
93
- <CustomAction Id="$(var.Prefix)RollbackRegisterPerfmon$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="UnregisterPerfmon" Impersonate="no" Execute="rollback" Return="check" SuppressModularization="yes" />
94
- <CustomAction Id="$(var.Prefix)RollbackUnregisterPerfmon$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="RegisterPerfmon" Impersonate="no" Execute="rollback" Return="check" SuppressModularization="yes" />
95
-
96
- <InstallExecuteSequence>
97
- <Custom Action="$(var.Prefix)ConfigurePerfmonInstall$(var.Suffix)" After="WriteRegistryValues" Overridable="yes">VersionNT > 400</Custom>
98
- <Custom Action="$(var.Prefix)ConfigurePerfmonUninstall$(var.Suffix)" Before="RemoveRegistryValues" Overridable="yes">VersionNT > 400</Custom>
99
- </InstallExecuteSequence>
100
- </Fragment>
101
-
102
- <Fragment>
103
- <CustomAction Id="$(var.Prefix)ConfigurePerfmonManifestRegister$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="ConfigurePerfmonManifestRegister" Execute="immediate" Return="check" SuppressModularization="yes" />
104
- <CustomAction Id="$(var.Prefix)ConfigurePerfmonManifestUnregister$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="ConfigurePerfmonManifestUnregister" Execute="immediate" Return="check" SuppressModularization="yes" />
105
- <CustomAction Id="$(var.Prefix)RegisterPerfmonManifest$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="CAQuietExec" Impersonate="no" Execute="deferred" Return="check" SuppressModularization="yes" />
106
- <CustomAction Id="$(var.Prefix)UnregisterPerfmonManifest$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="CAQuietExec" Impersonate="no" Execute="deferred" Return="ignore" SuppressModularization="yes" />
107
- <CustomAction Id="$(var.Prefix)RollbackRegisterPerfmonManifest$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="CAQuietExec" Impersonate="no" Execute="rollback" Return="ignore" SuppressModularization="yes" />
108
- <CustomAction Id="$(var.Prefix)RollbackUnregisterPerfmonManifest$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="CAQuietExec" Impersonate="no" Execute="rollback" Return="check" SuppressModularization="yes" />
109
-
110
- <InstallExecuteSequence>
111
- <Custom Action="$(var.Prefix)ConfigurePerfmonManifestRegister$(var.Suffix)" After="InstallFiles" Overridable="yes">VersionNT > 400</Custom>
112
- <Custom Action="$(var.Prefix)ConfigurePerfmonManifestUnregister$(var.Suffix)" After="RemoveRegistryValues" Overridable="yes">VersionNT > 400</Custom>
113
- </InstallExecuteSequence>
114
- </Fragment>
115
-
116
- <Fragment>
117
- <CustomAction Id="$(var.Prefix)ConfigureEventManifestRegister$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="ConfigureEventManifestRegister" Execute="immediate" Return="check" SuppressModularization="yes" />
118
- <CustomAction Id="$(var.Prefix)ConfigureEventManifestUnregister$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="ConfigureEventManifestUnregister" Execute="immediate" Return="check" SuppressModularization="yes" />
119
- <CustomAction Id="$(var.Prefix)RegisterEventManifest$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="CAQuietExec" Impersonate="no" Execute="deferred" Return="check" SuppressModularization="yes" />
120
- <CustomAction Id="$(var.Prefix)UnregisterEventManifest$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="CAQuietExec" Impersonate="no" Execute="deferred" Return="ignore" SuppressModularization="yes" />
121
- <CustomAction Id="$(var.Prefix)RollbackRegisterEventManifest$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="CAQuietExec" Impersonate="no" Execute="rollback" Return="ignore" SuppressModularization="yes" />
122
- <CustomAction Id="$(var.Prefix)RollbackUnregisterEventManifest$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="CAQuietExec" Impersonate="no" Execute="rollback" Return="check" SuppressModularization="yes" />
123
-
124
- <InstallExecuteSequence>
125
- <Custom Action="$(var.Prefix)ConfigureEventManifestRegister$(var.Suffix)" After="$(var.Prefix)SchedXmlFile$(var.Suffix)" Overridable="yes">VersionNT > 400</Custom>
126
- <Custom Action="$(var.Prefix)ConfigureEventManifestUnregister$(var.Suffix)" After="RemoveRegistryValues" Overridable="yes">VersionNT > 400</Custom>
127
- </InstallExecuteSequence>
128
- </Fragment>
129
-
130
- <Fragment>
131
- <CustomAction Id="$(var.Prefix)SchedServiceConfig$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="SchedServiceConfig" Execute="immediate" Return="check" SuppressModularization="yes" />
132
- <CustomAction Id="$(var.Prefix)ExecServiceConfig$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="ExecServiceConfig" Execute="deferred" Impersonate="no" Return="check" SuppressModularization="yes" />
133
- <CustomAction Id="$(var.Prefix)RollbackServiceConfig$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="RollbackServiceConfig" Execute="rollback" Impersonate="no" Return="check" SuppressModularization="yes" />
134
-
135
- <InstallExecuteSequence>
136
- <!-- Condition this so it runs on install and MMode, but not uninstall -->
137
- <Custom Action="$(var.Prefix)SchedServiceConfig$(var.Suffix)" After="InstallServices" Overridable="yes">NOT REMOVE~="ALL" AND VersionNT > 400</Custom>
138
- </InstallExecuteSequence>
139
- </Fragment>
140
-
141
- <Fragment>
142
- <CustomAction Id="$(var.Prefix)TouchFileDuringInstall$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="WixTouchFileDuringInstall" Execute="immediate" Return="check" SuppressModularization="yes" />
143
- <CustomAction Id="$(var.Prefix)TouchFileDuringUninstall$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="WixTouchFileDuringUninstall" Execute="immediate" Return="check" SuppressModularization="yes" />
144
- <CustomAction Id="$(var.Prefix)ExecuteTouchFile$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="WixExecuteTouchFile" Execute="deferred" Impersonate="no" Return="check" SuppressModularization="yes" />
145
- <CustomAction Id="$(var.Prefix)RollbackTouchFile$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="WixExecuteTouchFile" Execute="rollback" Impersonate="no" Return="check" SuppressModularization="yes" />
146
-
147
- <InstallExecuteSequence>
148
- <Custom Action="$(var.Prefix)TouchFileDuringUninstall" Before="RemoveFiles" Overridable="yes" />
149
- <Custom Action="$(var.Prefix)TouchFileDuringInstall" After="InstallFiles" Overridable="yes" />
150
- </InstallExecuteSequence>
151
- </Fragment>
152
-
153
- <Fragment>
154
- <UIRef Id="XmlFileErrorsText" />
155
-
156
- <CustomAction Id="$(var.Prefix)SchedXmlFile$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="SchedXmlFile" Execute="immediate" Return="check" SuppressModularization="yes" />
157
- <CustomAction Id="$(var.Prefix)ExecXmlFile$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="ExecXmlFile" Execute="deferred" Impersonate="no" Return="check" HideTarget="yes" SuppressModularization="yes" />
158
- <CustomAction Id="$(var.Prefix)ExecXmlFileRollback$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="ExecXmlFileRollback" Execute="rollback" Impersonate="no" Return="check" HideTarget="yes" SuppressModularization="yes" />
159
-
160
- <InstallExecuteSequence>
161
- <Custom Action="$(var.Prefix)SchedXmlFile$(var.Suffix)" After="DuplicateFiles" Overridable="yes">VersionNT > 400</Custom>
162
- </InstallExecuteSequence>
163
- </Fragment>
164
-
165
- <Fragment>
166
- <UIRef Id="XmlConfigErrorsText" />
167
-
168
- <CustomAction Id="$(var.Prefix)SchedXmlConfig$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="SchedXmlConfig" Execute="immediate" Return="check" SuppressModularization="yes" />
169
- <CustomAction Id="$(var.Prefix)ExecXmlConfig$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="ExecXmlConfig" Execute="deferred" Impersonate="no" Return="check" HideTarget="yes" SuppressModularization="yes" />
170
- <CustomAction Id="$(var.Prefix)ExecXmlConfigRollback$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="ExecXmlConfigRollback" Execute="rollback" Impersonate="no" Return="check" HideTarget="yes" SuppressModularization="yes" />
171
-
172
- <InstallExecuteSequence>
173
- <Custom Action="$(var.Prefix)SchedXmlConfig$(var.Suffix)" After="DuplicateFiles" Overridable="yes">VersionNT > 400</Custom>
174
- </InstallExecuteSequence>
175
- </Fragment>
176
-
177
- <Fragment>
178
- <CustomAction Id="$(var.Prefix)SchedInternetShortcuts$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="WixSchedInternetShortcuts" Execute="immediate" Return="check" SuppressModularization="yes" />
179
- <CustomAction Id="$(var.Prefix)RollbackInternetShortcuts$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="WixRollbackInternetShortcuts" Impersonate="no" Execute="rollback" Return="check" SuppressModularization="yes" />
180
- <CustomAction Id="$(var.Prefix)CreateInternetShortcuts$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="WixCreateInternetShortcuts" Impersonate="no" Execute="deferred" Return="check" SuppressModularization="yes" />
181
-
182
- <InstallExecuteSequence>
183
- <Custom Action="$(var.Prefix)SchedInternetShortcuts$(var.Suffix)" Before="RemoveFolders" Overridable="yes">VersionNT > 400</Custom>
184
- <Custom Action="$(var.Prefix)RollbackInternetShortcuts$(var.Suffix)" Before="$(var.Prefix)CreateInternetShortcuts$(var.Suffix)" Overridable="yes">VersionNT > 400</Custom>
185
- <Custom Action="$(var.Prefix)CreateInternetShortcuts$(var.Suffix)" After="CreateShortcuts" Overridable="yes">VersionNT > 400</Custom>
186
- </InstallExecuteSequence>
187
- </Fragment>
188
-
189
- <?endif ?>
190
-
191
-
192
- <!--
193
- The following actions do support all platforms.
194
- -->
195
- <Fragment>
196
- <UIRef Id="SecureObjectsErrors" />
197
-
198
- <CustomAction Id="$(var.Prefix)SchedSecureObjects$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="SchedSecureObjects" Execute="immediate" Return="check" SuppressModularization="yes" />
199
- <CustomAction Id="$(var.Prefix)SchedSecureObjectsRollback$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="SchedSecureObjectsRollback" Execute="immediate" Return="check" SuppressModularization="yes" />
200
- <CustomAction Id="$(var.Prefix)ExecSecureObjects$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="ExecSecureObjects" Execute="deferred" Impersonate="no" Return="check" HideTarget="yes" SuppressModularization="yes" />
201
- <CustomAction Id="$(var.Prefix)ExecSecureObjectsRollback$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="ExecSecureObjectsRollback" Execute="rollback" Impersonate="no" Return="check" HideTarget="yes" SuppressModularization="yes" />
202
-
203
- <InstallExecuteSequence>
204
- <!-- Condition this so it runs on install and MMode, but not uninstall -->
205
- <Custom Action="$(var.Prefix)SchedSecureObjects$(var.Suffix)" After="InstallServices" Overridable="yes">NOT REMOVE~="ALL" AND VersionNT > 400</Custom>
206
- <Custom Action="$(var.Prefix)SchedSecureObjectsRollback$(var.Suffix)" After="UnpublishFeatures" Overridable="yes">VersionNT > 400</Custom>
207
- </InstallExecuteSequence>
208
- </Fragment>
209
-
210
- <Fragment>
211
- <CustomAction Id="$(var.Prefix)SchedFormatFiles$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="WixSchedFormatFiles" Execute="immediate" Return="check" SuppressModularization="yes" />
212
- <CustomAction Id="$(var.Prefix)ExecFormatFiles$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="WixExecFormatFiles" Execute="deferred" Impersonate="no" Return="check" SuppressModularization="yes" />
213
- <CustomAction Id="$(var.Prefix)RollbackFormatFiles$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="WixExecFormatFiles" Execute="rollback" Impersonate="no" Return="check" SuppressModularization="yes" />
214
-
215
- <InstallExecuteSequence>
216
- <Custom Action="$(var.Prefix)SchedFormatFiles$(var.Suffix)" After="InstallFiles" />
217
- </InstallExecuteSequence>
218
- </Fragment>
219
-
220
- <Fragment>
221
- <Binary Id="$(var.Prefix)UtilCA$(var.Suffix)" SourceFile="!(bindpath.$(var.platform))utilca.dll" />
222
- </Fragment>
6
+ <?include caDecor.wxi ?>
7
+
8
+ <Fragment>
9
+ <CustomAction Id="$(var.Prefix)FailWhenDeferred$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="WixFailWhenDeferred" Execute="deferred" Return="check" SuppressModularization="yes" />
10
+
11
+ <InstallExecuteSequence>
12
+ <Custom Action="$(var.Prefix)FailWhenDeferred$(var.Suffix)" Before="InstallFinalize" Overridable="yes">WIXFAILWHENDEFERRED=1 AND VersionNT > 400</Custom>
13
+ </InstallExecuteSequence>
14
+ </Fragment>
15
+
16
+ <Fragment>
17
+ <CustomAction Id="$(var.Prefix)WaitForEvent$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="WixWaitForEvent" Execute="immediate" Return="check" SuppressModularization="yes" />
18
+
19
+ <InstallExecuteSequence>
20
+ <Custom Action="$(var.Prefix)WaitForEvent$(var.Suffix)" Before="InstallFinalize" Overridable="yes" />
21
+ </InstallExecuteSequence>
22
+ </Fragment>
23
+
24
+ <Fragment>
25
+ <CustomAction Id="$(var.Prefix)WaitForEventDeferred$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="WixWaitForEvent" Execute="deferred" Return="check" SuppressModularization="yes" />
26
+
27
+ <InstallExecuteSequence>
28
+ <Custom Action="$(var.Prefix)WaitForEventDeferred$(var.Suffix)" After="InstallInitialize" Overridable="yes" />
29
+ </InstallExecuteSequence>
30
+ </Fragment>
31
+
32
+ <Fragment>
33
+ <CustomAction Id="$(var.Prefix)ExitEarlyWithSuccess$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="WixExitEarlyWithSuccess" Execute="immediate" Return="check" SuppressModularization="yes" />
34
+
35
+ <InstallExecuteSequence>
36
+ <Custom Action="$(var.Prefix)ExitEarlyWithSuccess$(var.Suffix)" After="FindRelatedProducts" Overridable="yes">NEWERVERSIONDETECTED AND VersionNT > 400</Custom>
37
+ </InstallExecuteSequence>
38
+ </Fragment>
39
+
40
+ <Fragment>
41
+ <CustomAction Id="$(var.Prefix)RemoveFoldersEx$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="WixRemoveFoldersEx" Execute="immediate" Return="ignore" />
42
+
43
+ <InstallExecuteSequence>
44
+ <Custom Action="$(var.Prefix)RemoveFoldersEx$(var.Suffix)" Before="CostInitialize" />
45
+ </InstallExecuteSequence>
46
+ </Fragment>
47
+
48
+ <Fragment>
49
+ <CustomAction Id="$(var.Prefix)BroadcastSettingChange$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="WixBroadcastSettingChange" Execute="immediate" Return="ignore" SuppressModularization="yes" />
50
+
51
+ <InstallExecuteSequence>
52
+ <Custom Action="$(var.Prefix)BroadcastSettingChange$(var.Suffix)" After="InstallFinalize" Overridable="yes" />
53
+ </InstallExecuteSequence>
54
+ </Fragment>
55
+
56
+ <Fragment>
57
+ <CustomAction Id="$(var.Prefix)BroadcastEnvironmentChange$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="WixBroadcastEnvironmentChange" Execute="immediate" Return="ignore" SuppressModularization="yes" />
58
+
59
+ <InstallExecuteSequence>
60
+ <Custom Action="$(var.Prefix)BroadcastEnvironmentChange$(var.Suffix)" After="InstallFinalize" Overridable="yes" />
61
+ </InstallExecuteSequence>
62
+ </Fragment>
63
+
64
+ <!-- ShellExec custom actions (for when only one is needed; multiple executions need their own IDs) -->
65
+ <Fragment>
66
+ <PropertyRef Id="WixShellExecBinaryId" />
67
+ <CustomAction Id="$(var.Prefix)ShellExecBinary$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="WixShellExecBinary" Execute="immediate" Return="check" Impersonate="yes" />
68
+ </Fragment>
69
+
70
+ <Fragment>
71
+ <PropertyRef Id="WixShellExecTarget" />
72
+ <CustomAction Id="$(var.Prefix)ShellExec$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="WixShellExec" Execute="immediate" Return="check" Impersonate="yes" />
73
+ </Fragment>
74
+
75
+ <Fragment>
76
+ <PropertyRef Id="WixUnelevatedShellExecTarget" />
77
+ <CustomAction Id="$(var.Prefix)UnelevatedShellExec$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="WixUnelevatedShellExec" Execute="immediate" Return="check" Impersonate="yes" />
78
+ </Fragment>
79
+
80
+ <Fragment>
81
+ <PropertyRef Id="WixQuietExecCmdLine" />
82
+ <CustomAction Id="$(var.Prefix)QuietExec$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="WixQuietExec" Execute="immediate" Return="check" Impersonate="yes" />
83
+ </Fragment>
84
+
85
+ <Fragment>
86
+ <PropertyRef Id="WixQuietExec64CmdLine" />
87
+ <CustomAction Id="$(var.Prefix)QuietExec64$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="WixQuietExec64" Execute="immediate" Return="check" Impersonate="yes" />
88
+ </Fragment>
89
+
90
+ <!-- SilentExec custom actions differ from QtExec in that they do not log the commandline or output of the exe -->
91
+ <Fragment>
92
+ <PropertyRef Id="WixSilentExecCmdLine" />
93
+ <CustomAction Id="$(var.Prefix)SilentExec$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="WixSilentExec" Execute="immediate" Return="check" Impersonate="yes" />
94
+ </Fragment>
95
+
96
+ <Fragment>
97
+ <PropertyRef Id="WixSilentExec64CmdLine" />
98
+ <CustomAction Id="$(var.Prefix)SilentExec64$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="WixSilentExec64" Execute="immediate" Return="check" Impersonate="yes" />
99
+ </Fragment>
100
+
101
+ <Fragment>
102
+ <CustomAction Id="$(var.Prefix)CheckRebootRequired$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="WixCheckRebootRequired" Execute="immediate" Return="ignore" SuppressModularization="yes" />
103
+
104
+ <InstallExecuteSequence>
105
+ <!-- Condition this so it runs on install and MMode, but not uninstall -->
106
+ <Custom Action="$(var.Prefix)CheckRebootRequired$(var.Suffix)" After="InstallFinalize" Overridable="yes">NOT REMOVE~="ALL" AND VersionNT > 400</Custom>
107
+ </InstallExecuteSequence>
108
+ </Fragment>
109
+
110
+ <Fragment>
111
+ <CustomAction Id="$(var.Prefix)CloseApplications$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="WixCloseApplications" Execute="immediate" Return="check" SuppressModularization="yes" />
112
+ <CustomAction Id="$(var.Prefix)CloseApplicationsDeferred$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="WixCloseApplicationsDeferred" Impersonate="no" Execute="deferred" Return="check" SuppressModularization="yes" />
113
+ <CustomActionRef Id="$(var.Prefix)CheckRebootRequired$(var.Suffix)" />
114
+
115
+ <InstallExecuteSequence>
116
+ <Custom Action="$(var.Prefix)CloseApplications$(var.Suffix)" Before="InstallFiles" Overridable="yes">VersionNT > 400</Custom>
117
+ </InstallExecuteSequence>
118
+ </Fragment>
119
+
120
+ <Fragment>
121
+ <CustomAction Id="$(var.Prefix)RegisterRestartResources$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="WixRegisterRestartResources$(var.Suffix)" Execute="immediate" Return="check" SuppressModularization="yes" />
122
+
123
+ <InstallExecuteSequence>
124
+ <Custom Action="$(var.Prefix)RegisterRestartResources$(var.Suffix)" Before="InstallValidate" Overridable="yes" />
125
+ </InstallExecuteSequence>
126
+ </Fragment>
127
+
128
+ <Fragment>
129
+ <UIRef Id="ConfigureUsersErrorText" />
130
+
131
+ <CustomAction Id="$(var.Prefix)ConfigureUsers$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="ConfigureUsers" Execute="immediate" Return="check" SuppressModularization="yes" />
132
+ <CustomAction Id="$(var.Prefix)CreateUser$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="CreateUser" Impersonate="no" Execute="deferred" Return="check" HideTarget="yes" SuppressModularization="yes" />
133
+ <CustomAction Id="$(var.Prefix)CreateUserRollback$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="RemoveUser" Impersonate="no" Execute="rollback" Return="check" HideTarget="yes" SuppressModularization="yes" />
134
+ <!-- RemoveUser is a type commit action because it is not possible to rollback the removal of a user -->
135
+ <CustomAction Id="$(var.Prefix)RemoveUser$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="RemoveUser" Impersonate="no" Execute="commit" Return="ignore" HideTarget="yes" SuppressModularization="yes" />
136
+
137
+ <InstallExecuteSequence>
138
+ <Custom Action="$(var.Prefix)ConfigureUsers$(var.Suffix)" Before="InstallFiles" Overridable="yes">VersionNT > 400</Custom>
139
+ </InstallExecuteSequence>
140
+ </Fragment>
141
+
142
+ <Fragment>
143
+ <UIRef Id="ConfigureSmbErrorsText" />
144
+
145
+ <CustomAction Id="$(var.Prefix)ConfigureSmbInstall$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="ConfigureSmbInstall" Execute="immediate" Return="check" SuppressModularization="yes" />
146
+ <CustomAction Id="$(var.Prefix)ConfigureSmbUninstall$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="ConfigureSmbUninstall" Execute="immediate" Return="check" SuppressModularization="yes" />
147
+ <CustomAction Id="$(var.Prefix)CreateSmb$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="CreateSmb" Impersonate="no" Execute="deferred" Return="check" HideTarget="yes" SuppressModularization="yes" />
148
+ <CustomAction Id="$(var.Prefix)CreateSmbRollback$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="DropSmb" Impersonate="no" Execute="rollback" Return="ignore" HideTarget="yes" SuppressModularization="yes" />
149
+ <CustomAction Id="$(var.Prefix)DropSmb$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="DropSmb" Impersonate="no" Execute="deferred" Return="check" HideTarget="yes" SuppressModularization="yes" />
150
+ <CustomAction Id="$(var.Prefix)DropSmbRollback$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="CreateSmb" Impersonate="no" Execute="rollback" Return="ignore" HideTarget="yes" SuppressModularization="yes" />
151
+
152
+ <InstallExecuteSequence>
153
+ <Custom Action="$(var.Prefix)ConfigureSmbInstall$(var.Suffix)" After="InstallFiles" Overridable="yes">VersionNT > 400</Custom>
154
+ <Custom Action="$(var.Prefix)ConfigureSmbUninstall$(var.Suffix)" After="RemoveFiles" Overridable="yes">VersionNT > 400</Custom>
155
+ </InstallExecuteSequence>
156
+ </Fragment>
157
+
158
+ <Fragment>
159
+ <UIRef Id="PerCounterDataErrorsText" />
160
+
161
+ <CustomAction Id="$(var.Prefix)InstallPerfCounterData$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="InstallPerfCounterData" Execute="immediate" Return="check" SuppressModularization="yes" />
162
+ <CustomAction Id="$(var.Prefix)UninstallPerfCounterData$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="UninstallPerfCounterData" Execute="immediate" Return="check" SuppressModularization="yes" />
163
+ <CustomAction Id="$(var.Prefix)RegisterPerfCounterData$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="RegisterPerfCounterData" Impersonate="no" Execute="deferred" Return="check" HideTarget="yes" SuppressModularization="yes" />
164
+ <CustomAction Id="$(var.Prefix)UnregisterPerfCounterData$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="UnregisterPerfCounterData" Impersonate="no" Execute="deferred" Return="check" HideTarget="yes" SuppressModularization="yes" />
165
+ <CustomAction Id="$(var.Prefix)RollbackRegisterPerfCounterData$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="UnregisterPerfCounterData" Impersonate="no" Execute="rollback" Return="check" HideTarget="yes" SuppressModularization="yes" />
166
+ <CustomAction Id="$(var.Prefix)RollbackUnregisterPerfCounterData$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="RegisterPerfCounterData" Impersonate="no" Execute="rollback" Return="check" HideTarget="yes" SuppressModularization="yes" />
167
+
168
+ <InstallExecuteSequence>
169
+ <Custom Action="$(var.Prefix)InstallPerfCounterData$(var.Suffix)" After="WriteRegistryValues" Overridable="yes">VersionNT > 400</Custom>
170
+ <Custom Action="$(var.Prefix)UninstallPerfCounterData$(var.Suffix)" Before="RemoveRegistryValues" Overridable="yes">VersionNT > 400</Custom>
171
+ </InstallExecuteSequence>
172
+ </Fragment>
173
+
174
+ <Fragment>
175
+ <UIRef Id="ConfigurePerfmonErrorsText" />
176
+
177
+ <CustomAction Id="$(var.Prefix)ConfigurePerfmonInstall$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="ConfigurePerfmonInstall" Execute="immediate" Return="check" SuppressModularization="yes" />
178
+ <CustomAction Id="$(var.Prefix)ConfigurePerfmonUninstall$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="ConfigurePerfmonUninstall" Execute="immediate" Return="check" SuppressModularization="yes" />
179
+ <CustomAction Id="$(var.Prefix)RegisterPerfmon$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="RegisterPerfmon" Impersonate="no" Execute="deferred" Return="check" SuppressModularization="yes" />
180
+ <CustomAction Id="$(var.Prefix)UnregisterPerfmon$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="UnregisterPerfmon" Impersonate="no" Execute="deferred" Return="check" SuppressModularization="yes" />
181
+ <CustomAction Id="$(var.Prefix)RollbackRegisterPerfmon$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="UnregisterPerfmon" Impersonate="no" Execute="rollback" Return="check" SuppressModularization="yes" />
182
+ <CustomAction Id="$(var.Prefix)RollbackUnregisterPerfmon$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="RegisterPerfmon" Impersonate="no" Execute="rollback" Return="check" SuppressModularization="yes" />
183
+
184
+ <InstallExecuteSequence>
185
+ <Custom Action="$(var.Prefix)ConfigurePerfmonInstall$(var.Suffix)" After="WriteRegistryValues" Overridable="yes">VersionNT > 400</Custom>
186
+ <Custom Action="$(var.Prefix)ConfigurePerfmonUninstall$(var.Suffix)" Before="RemoveRegistryValues" Overridable="yes">VersionNT > 400</Custom>
187
+ </InstallExecuteSequence>
188
+ </Fragment>
189
+
190
+ <Fragment>
191
+ <CustomAction Id="$(var.Prefix)ConfigurePerfmonManifestRegister$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="ConfigurePerfmonManifestRegister" Execute="immediate" Return="check" SuppressModularization="yes" />
192
+ <CustomAction Id="$(var.Prefix)ConfigurePerfmonManifestUnregister$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="ConfigurePerfmonManifestUnregister" Execute="immediate" Return="check" SuppressModularization="yes" />
193
+ <CustomAction Id="$(var.Prefix)RegisterPerfmonManifest$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="CAQuietExec" Impersonate="no" Execute="deferred" Return="check" SuppressModularization="yes" />
194
+ <CustomAction Id="$(var.Prefix)UnregisterPerfmonManifest$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="CAQuietExec" Impersonate="no" Execute="deferred" Return="ignore" SuppressModularization="yes" />
195
+ <CustomAction Id="$(var.Prefix)RollbackRegisterPerfmonManifest$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="CAQuietExec" Impersonate="no" Execute="rollback" Return="ignore" SuppressModularization="yes" />
196
+ <CustomAction Id="$(var.Prefix)RollbackUnregisterPerfmonManifest$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="CAQuietExec" Impersonate="no" Execute="rollback" Return="check" SuppressModularization="yes" />
197
+
198
+ <InstallExecuteSequence>
199
+ <Custom Action="$(var.Prefix)ConfigurePerfmonManifestRegister$(var.Suffix)" After="InstallFiles" Overridable="yes">VersionNT > 400</Custom>
200
+ <Custom Action="$(var.Prefix)ConfigurePerfmonManifestUnregister$(var.Suffix)" After="RemoveRegistryValues" Overridable="yes">VersionNT > 400</Custom>
201
+ </InstallExecuteSequence>
202
+ </Fragment>
203
+
204
+ <Fragment>
205
+ <CustomAction Id="$(var.Prefix)ConfigureEventManifestRegister$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="ConfigureEventManifestRegister" Execute="immediate" Return="check" SuppressModularization="yes" />
206
+ <CustomAction Id="$(var.Prefix)ConfigureEventManifestUnregister$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="ConfigureEventManifestUnregister" Execute="immediate" Return="check" SuppressModularization="yes" />
207
+ <CustomAction Id="$(var.Prefix)RegisterEventManifest$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="CAQuietExec" Impersonate="no" Execute="deferred" Return="check" SuppressModularization="yes" />
208
+ <CustomAction Id="$(var.Prefix)UnregisterEventManifest$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="CAQuietExec" Impersonate="no" Execute="deferred" Return="ignore" SuppressModularization="yes" />
209
+ <CustomAction Id="$(var.Prefix)RollbackRegisterEventManifest$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="CAQuietExec" Impersonate="no" Execute="rollback" Return="ignore" SuppressModularization="yes" />
210
+ <CustomAction Id="$(var.Prefix)RollbackUnregisterEventManifest$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="CAQuietExec" Impersonate="no" Execute="rollback" Return="check" SuppressModularization="yes" />
211
+
212
+ <InstallExecuteSequence>
213
+ <Custom Action="$(var.Prefix)ConfigureEventManifestRegister$(var.Suffix)" After="$(var.Prefix)SchedXmlFile$(var.Suffix)" Overridable="yes">VersionNT > 400</Custom>
214
+ <Custom Action="$(var.Prefix)ConfigureEventManifestUnregister$(var.Suffix)" After="RemoveRegistryValues" Overridable="yes">VersionNT > 400</Custom>
215
+ </InstallExecuteSequence>
216
+ </Fragment>
217
+
218
+ <Fragment>
219
+ <CustomAction Id="$(var.Prefix)SchedServiceConfig$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="SchedServiceConfig" Execute="immediate" Return="check" SuppressModularization="yes" />
220
+ <CustomAction Id="$(var.Prefix)ExecServiceConfig$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="ExecServiceConfig" Execute="deferred" Impersonate="no" Return="check" SuppressModularization="yes" />
221
+ <CustomAction Id="$(var.Prefix)RollbackServiceConfig$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="RollbackServiceConfig" Execute="rollback" Impersonate="no" Return="check" SuppressModularization="yes" />
222
+
223
+ <InstallExecuteSequence>
224
+ <!-- Condition this so it runs on install and MMode, but not uninstall -->
225
+ <Custom Action="$(var.Prefix)SchedServiceConfig$(var.Suffix)" After="InstallServices" Overridable="yes">NOT REMOVE~="ALL" AND VersionNT > 400</Custom>
226
+ </InstallExecuteSequence>
227
+ </Fragment>
228
+
229
+ <Fragment>
230
+ <CustomAction Id="$(var.Prefix)TouchFileDuringInstall$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="WixTouchFileDuringInstall" Execute="immediate" Return="check" SuppressModularization="yes" />
231
+ <CustomAction Id="$(var.Prefix)TouchFileDuringUninstall$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="WixTouchFileDuringUninstall" Execute="immediate" Return="check" SuppressModularization="yes" />
232
+ <CustomAction Id="$(var.Prefix)ExecuteTouchFile$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="WixExecuteTouchFile" Execute="deferred" Impersonate="no" Return="check" SuppressModularization="yes" />
233
+ <CustomAction Id="$(var.Prefix)RollbackTouchFile$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="WixExecuteTouchFile" Execute="rollback" Impersonate="no" Return="check" SuppressModularization="yes" />
234
+
235
+ <InstallExecuteSequence>
236
+ <Custom Action="$(var.Prefix)TouchFileDuringUninstall" Before="RemoveFiles" Overridable="yes" />
237
+ <Custom Action="$(var.Prefix)TouchFileDuringInstall" After="InstallFiles" Overridable="yes" />
238
+ </InstallExecuteSequence>
239
+ </Fragment>
240
+
241
+ <Fragment>
242
+ <UIRef Id="XmlFileErrorsText" />
243
+
244
+ <CustomAction Id="$(var.Prefix)SchedXmlFile$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="SchedXmlFile" Execute="immediate" Return="check" SuppressModularization="yes" />
245
+ <CustomAction Id="$(var.Prefix)ExecXmlFile$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="ExecXmlFile" Execute="deferred" Impersonate="no" Return="check" HideTarget="yes" SuppressModularization="yes" />
246
+ <CustomAction Id="$(var.Prefix)ExecXmlFileRollback$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="ExecXmlFileRollback" Execute="rollback" Impersonate="no" Return="check" HideTarget="yes" SuppressModularization="yes" />
247
+
248
+ <InstallExecuteSequence>
249
+ <Custom Action="$(var.Prefix)SchedXmlFile$(var.Suffix)" After="DuplicateFiles" Overridable="yes">VersionNT > 400</Custom>
250
+ </InstallExecuteSequence>
251
+ </Fragment>
252
+
253
+ <Fragment>
254
+ <UIRef Id="XmlConfigErrorsText" />
255
+
256
+ <CustomAction Id="$(var.Prefix)SchedXmlConfig$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="SchedXmlConfig" Execute="immediate" Return="check" SuppressModularization="yes" />
257
+ <CustomAction Id="$(var.Prefix)ExecXmlConfig$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="ExecXmlConfig" Execute="deferred" Impersonate="no" Return="check" HideTarget="yes" SuppressModularization="yes" />
258
+ <CustomAction Id="$(var.Prefix)ExecXmlConfigRollback$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="ExecXmlConfigRollback" Execute="rollback" Impersonate="no" Return="check" HideTarget="yes" SuppressModularization="yes" />
259
+
260
+ <InstallExecuteSequence>
261
+ <Custom Action="$(var.Prefix)SchedXmlConfig$(var.Suffix)" After="DuplicateFiles" Overridable="yes">VersionNT > 400</Custom>
262
+ </InstallExecuteSequence>
263
+ </Fragment>
264
+
265
+ <Fragment>
266
+ <CustomAction Id="$(var.Prefix)SchedInternetShortcuts$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="WixSchedInternetShortcuts" Execute="immediate" Return="check" SuppressModularization="yes" />
267
+ <CustomAction Id="$(var.Prefix)RollbackInternetShortcuts$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="WixRollbackInternetShortcuts" Impersonate="no" Execute="rollback" Return="check" SuppressModularization="yes" />
268
+ <CustomAction Id="$(var.Prefix)CreateInternetShortcuts$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="WixCreateInternetShortcuts" Impersonate="no" Execute="deferred" Return="check" SuppressModularization="yes" />
269
+
270
+ <InstallExecuteSequence>
271
+ <Custom Action="$(var.Prefix)SchedInternetShortcuts$(var.Suffix)" Before="RemoveFolders" Overridable="yes">VersionNT > 400</Custom>
272
+ <Custom Action="$(var.Prefix)RollbackInternetShortcuts$(var.Suffix)" Before="$(var.Prefix)CreateInternetShortcuts$(var.Suffix)" Overridable="yes">VersionNT > 400</Custom>
273
+ <Custom Action="$(var.Prefix)CreateInternetShortcuts$(var.Suffix)" After="CreateShortcuts" Overridable="yes">VersionNT > 400</Custom>
274
+ </InstallExecuteSequence>
275
+ </Fragment>
276
+
277
+ <Fragment>
278
+ <UIRef Id="SecureObjectsErrors" />
279
+
280
+ <CustomAction Id="$(var.Prefix)SchedSecureObjects$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="SchedSecureObjects" Execute="immediate" Return="check" SuppressModularization="yes" />
281
+ <CustomAction Id="$(var.Prefix)SchedSecureObjectsRollback$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="SchedSecureObjectsRollback" Execute="immediate" Return="check" SuppressModularization="yes" />
282
+ <CustomAction Id="$(var.Prefix)ExecSecureObjects$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="ExecSecureObjects" Execute="deferred" Impersonate="no" Return="check" HideTarget="yes" SuppressModularization="yes" />
283
+ <CustomAction Id="$(var.Prefix)ExecSecureObjectsRollback$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="ExecSecureObjectsRollback" Execute="rollback" Impersonate="no" Return="check" HideTarget="yes" SuppressModularization="yes" />
284
+
285
+ <InstallExecuteSequence>
286
+ <!-- Condition this so it runs on install and MMode, but not uninstall -->
287
+ <Custom Action="$(var.Prefix)SchedSecureObjects$(var.Suffix)" After="InstallServices" Overridable="yes">NOT REMOVE~="ALL" AND VersionNT > 400</Custom>
288
+ <Custom Action="$(var.Prefix)SchedSecureObjectsRollback$(var.Suffix)" After="UnpublishFeatures" Overridable="yes">VersionNT > 400</Custom>
289
+ </InstallExecuteSequence>
290
+ </Fragment>
291
+
292
+ <Fragment>
293
+ <CustomAction Id="$(var.Prefix)SchedFormatFiles$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="WixSchedFormatFiles" Execute="immediate" Return="check" SuppressModularization="yes" />
294
+ <CustomAction Id="$(var.Prefix)ExecFormatFiles$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="WixExecFormatFiles" Execute="deferred" Impersonate="no" Return="check" SuppressModularization="yes" />
295
+ <CustomAction Id="$(var.Prefix)RollbackFormatFiles$(var.Suffix)" BinaryKey="$(var.Prefix)UtilCA$(var.Suffix)" DllEntry="WixExecFormatFiles" Execute="rollback" Impersonate="no" Return="check" SuppressModularization="yes" />
296
+
297
+ <InstallExecuteSequence>
298
+ <Custom Action="$(var.Prefix)SchedFormatFiles$(var.Suffix)" After="InstallFiles" />
299
+ </InstallExecuteSequence>
300
+ </Fragment>
301
+
302
+ <Fragment>
303
+ <Binary Id="$(var.Prefix)UtilCA$(var.Suffix)" SourceFile="!(bindpath.$(var.platform))utilca.dll" />
304
+ </Fragment>
305
</Include>
src/wixlib/UtilExtension_arm.wxs
new
+8
@@ -0,0 +1,8 @@
1
+<?xml version="1.0"?>
2
+<!-- 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. -->
3
+
4
+
5
+<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs">
6
+ <?define platform=arm ?>
7
+ <?include UtilExtension_Platform.wxi ?>
8
+</Wix>
src/wixlib/UtilExtension_arm64.wxs
new
+8
@@ -0,0 +1,8 @@
1
+<?xml version="1.0"?>
2
+<!-- 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. -->
3
+
4
+
5
+<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs">
6
+ <?define platform=arm64 ?>
7
+ <?include UtilExtension_Platform.wxi ?>
8
+</Wix>
src/wixlib/util.wixproj
+40
@@ -14,6 +14,8 @@
14
<Compile Include="UtilExtension.wxs" />
15
<Compile Include="UtilExtension_x86.wxs" />
16
<Compile Include="UtilExtension_x64.wxs" />
17
+ <Compile Include="UtilExtension_arm.wxs" />
18
+ <Compile Include="UtilExtension_arm64.wxs" />
19
<EmbeddedResource Include="en-us.wxl" />
20
<EmbeddedResource Include="de-de.wxl" />
21
<EmbeddedResource Include="es-es.wxl" />
@@ -22,9 +24,26 @@
24
<EmbeddedResource Include="pt-br.wxl" />
25
<EmbeddedResource Include="it-it.wxl" />
26
</ItemGroup>
27
+
28
<ItemGroup>
29
<None Include="packages.config" />
30
</ItemGroup>
31
+
32
+ <ItemGroup>
33
+ <BindInputPaths Include="$(OutputPath)Win32">
34
+ <BindName>x86</BindName>
35
+ </BindInputPaths>
36
+ <BindInputPaths Include="$(OutputPath)x64)">
37
+ <BindName>x64</BindName>
38
+ </BindInputPaths>
39
+ <BindInputPaths Include="$(OutputPath)arm)">
40
+ <BindName>arm</BindName>
41
+ </BindInputPaths>
42
+ <BindInputPaths Include="$(OutputPath)arm64)">
43
+ <BindName>arm64</BindName>
44
+ </BindInputPaths>
45
+ </ItemGroup>
46
+
47
<ItemGroup>
48
<ProjectReference Include="..\be\utilbe.vcxproj">
49
<Name>utilbe</Name>
@@ -33,18 +52,38 @@
52
<ProjectReference Include="..\ca\utilca.vcxproj">
53
<Name>utilca</Name>
54
<Project>{076018F7-19BD-423A-ABBF-229273DA08D8}</Project>
55
+ <Properties>Platform=ARM</Properties>
56
+ </ProjectReference>
57
+ <ProjectReference Include="..\ca\utilca.vcxproj">
58
+ <Name>utilca</Name>
59
+ <Project>{076018F7-19BD-423A-ABBF-229273DA08D8}</Project>
60
+ <Properties>Platform=ARM64</Properties>
61
+ </ProjectReference>
62
+ <ProjectReference Include="..\ca\utilca.vcxproj">
63
+ <Name>utilca</Name>
64
+ <Project>{076018F7-19BD-423A-ABBF-229273DA08D8}</Project>
65
+ <Properties>Platform=x86</Properties>
66
+ </ProjectReference>
67
+ <ProjectReference Include="..\ca\utilca.vcxproj">
68
+ <Name>utilca</Name>
69
+ <Project>{076018F7-19BD-423A-ABBF-229273DA08D8}</Project>
70
+ <Properties>Platform=x64</Properties>
71
</ProjectReference>
72
</ItemGroup>
73
+
74
<ItemGroup>
75
<None Include="caerr.wxi" />
76
<None Include="caDecor.wxi" />
77
<None Include="UtilExtension_Platform.wxi" />
78
</ItemGroup>
79
+
80
<Import Project="$(WixTargetsPath)" Condition=" '$(WixTargetsPath)' != '' AND Exists('$(WixTargetsPath)') " />
81
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\WiX\v3.x\wix.targets" Condition=" '$(WixTargetsPath)' == '' AND Exists('$(MSBuildExtensionsPath32)\Microsoft\WiX\v3.x\wix.targets') " />
82
+
83
<Target Name="EnsureWixToolsetInstalled" Condition=" '$(WixTargetsImported)' != 'true' ">
84
<Error Text="WiX Toolset build tools (v4.0 or later) must be installed to build this project. To download the WiX Toolset, go to http://wixtoolset.org/releases/." />
85
</Target>
86
+
87
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
88
<PropertyGroup>
89
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
@@ -52,5 +91,6 @@
91
<Error Condition="!Exists('..\..\packages\Nerdbank.GitVersioning.2.1.65\build\Nerdbank.GitVersioning.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\Nerdbank.GitVersioning.2.1.65\build\Nerdbank.GitVersioning.targets'))" />
92
<Error Condition="!Exists('..\..\packages\WixToolset.MSBuild.4.0.0-build-0104\build\WixToolset.MSBuild.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\WixToolset.MSBuild.4.0.0-build-0104\build\WixToolset.MSBuild.props'))" />
93
</Target>
94
+
95
<Import Project="..\..\packages\Nerdbank.GitVersioning.2.1.65\build\Nerdbank.GitVersioning.targets" Condition="Exists('..\..\packages\Nerdbank.GitVersioning.2.1.65\build\Nerdbank.GitVersioning.targets')" />
96
</Project>