@joebigelow / wix / commits / 3aa4f95a

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 &gt; 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 &gt; 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 &gt; 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 &gt; 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 &gt; 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 &gt; 400</Custom>
66 - <Custom Action="$(var.Prefix)ConfigureSmbUninstall$(var.Suffix)" After="RemoveFiles" Overridable="yes">VersionNT &gt; 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 &gt; 400</Custom>
82 - <Custom Action="$(var.Prefix)UninstallPerfCounterData$(var.Suffix)" Before="RemoveRegistryValues" Overridable="yes">VersionNT &gt; 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 &gt; 400</Custom>
98 - <Custom Action="$(var.Prefix)ConfigurePerfmonUninstall$(var.Suffix)" Before="RemoveRegistryValues" Overridable="yes">VersionNT &gt; 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 &gt; 400</Custom>
112 - <Custom Action="$(var.Prefix)ConfigurePerfmonManifestUnregister$(var.Suffix)" After="RemoveRegistryValues" Overridable="yes">VersionNT &gt; 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 &gt; 400</Custom>
126 - <Custom Action="$(var.Prefix)ConfigureEventManifestUnregister$(var.Suffix)" After="RemoveRegistryValues" Overridable="yes">VersionNT &gt; 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 &gt; 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 &gt; 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 &gt; 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 &gt; 400</Custom>
184 - <Custom Action="$(var.Prefix)RollbackInternetShortcuts$(var.Suffix)" Before="$(var.Prefix)CreateInternetShortcuts$(var.Suffix)" Overridable="yes">VersionNT &gt; 400</Custom>
185 - <Custom Action="$(var.Prefix)CreateInternetShortcuts$(var.Suffix)" After="CreateShortcuts" Overridable="yes">VersionNT &gt; 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 &gt; 400</Custom>
206 - <Custom Action="$(var.Prefix)SchedSecureObjectsRollback$(var.Suffix)" After="UnpublishFeatures" Overridable="yes">VersionNT &gt; 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 &gt; 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 &gt; 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 &gt; 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 &gt; 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 &gt; 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 &gt; 400</Custom>
154 + <Custom Action="$(var.Prefix)ConfigureSmbUninstall$(var.Suffix)" After="RemoveFiles" Overridable="yes">VersionNT &gt; 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 &gt; 400</Custom>
170 + <Custom Action="$(var.Prefix)UninstallPerfCounterData$(var.Suffix)" Before="RemoveRegistryValues" Overridable="yes">VersionNT &gt; 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 &gt; 400</Custom>
186 + <Custom Action="$(var.Prefix)ConfigurePerfmonUninstall$(var.Suffix)" Before="RemoveRegistryValues" Overridable="yes">VersionNT &gt; 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 &gt; 400</Custom>
200 + <Custom Action="$(var.Prefix)ConfigurePerfmonManifestUnregister$(var.Suffix)" After="RemoveRegistryValues" Overridable="yes">VersionNT &gt; 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 &gt; 400</Custom>
214 + <Custom Action="$(var.Prefix)ConfigureEventManifestUnregister$(var.Suffix)" After="RemoveRegistryValues" Overridable="yes">VersionNT &gt; 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 &gt; 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 &gt; 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 &gt; 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 &gt; 400</Custom>
272 + <Custom Action="$(var.Prefix)RollbackInternetShortcuts$(var.Suffix)" Before="$(var.Prefix)CreateInternetShortcuts$(var.Suffix)" Overridable="yes">VersionNT &gt; 400</Custom>
273 + <Custom Action="$(var.Prefix)CreateInternetShortcuts$(var.Suffix)" After="CreateShortcuts" Overridable="yes">VersionNT &gt; 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 &gt; 400</Custom>
288 + <Custom Action="$(var.Prefix)SchedSecureObjectsRollback$(var.Suffix)" After="UnpublishFeatures" Overridable="yes">VersionNT &gt; 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>