aboutsummaryrefslogtreecommitdiff
path: root/src/ca
diff options
context:
space:
mode:
authorSean Hall <r.sean.hall@gmail.com>2019-01-19 20:31:52 -0600
committerSean Hall <r.sean.hall@gmail.com>2019-01-19 20:35:55 -0600
commit74ca49020e2f382437337f166711ea87556865bd (patch)
tree4534fb7535e96bb6bfc68d73669b58f48b57624c /src/ca
parenta12b13c36d1da707cf541595cf5f38338f37cc68 (diff)
downloadwix-74ca49020e2f382437337f166711ea87556865bd.tar.gz
wix-74ca49020e2f382437337f166711ea87556865bd.tar.bz2
wix-74ca49020e2f382437337f166711ea87556865bd.zip
Integrate into latest v4.
Diffstat (limited to 'src/ca')
-rw-r--r--src/ca/custommsierrors.h4
-rw-r--r--src/ca/dllmain.cpp26
-rw-r--r--src/ca/mqexec.cpp38
-rw-r--r--src/ca/mqqueueexec.cpp4
-rw-r--r--src/ca/mqqueueexec.h4
-rw-r--r--src/ca/mqqueuesched.cpp4
-rw-r--r--src/ca/mqqueuesched.h4
-rw-r--r--src/ca/mqsched.cpp31
-rw-r--r--src/ca/msmqca.def12
-rw-r--r--src/ca/msmqca.vcxproj71
-rw-r--r--src/ca/packages.config5
-rw-r--r--src/ca/precomp.h23
12 files changed, 161 insertions, 65 deletions
diff --git a/src/ca/custommsierrors.h b/src/ca/custommsierrors.h
new file mode 100644
index 00000000..0c1b23b7
--- /dev/null
+++ b/src/ca/custommsierrors.h
@@ -0,0 +1,4 @@
1#pragma once
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#define msierrMsmqCannotConnect 28101
diff --git a/src/ca/dllmain.cpp b/src/ca/dllmain.cpp
new file mode 100644
index 00000000..35ae6d1c
--- /dev/null
+++ b/src/ca/dllmain.cpp
@@ -0,0 +1,26 @@
1// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information.
2
3#include "precomp.h"
4
5/********************************************************************
6DllMain - standard entry point for all WiX custom actions
7
8********************************************************************/
9extern "C" BOOL WINAPI DllMain(
10 IN HINSTANCE hInst,
11 IN ULONG ulReason,
12 IN LPVOID)
13{
14 switch(ulReason)
15 {
16 case DLL_PROCESS_ATTACH:
17 WcaGlobalInitialize(hInst);
18 break;
19
20 case DLL_PROCESS_DETACH:
21 WcaGlobalFinalize();
22 break;
23 }
24
25 return TRUE;
26}
diff --git a/src/ca/mqexec.cpp b/src/ca/mqexec.cpp
index bac54f31..ff7e9b14 100644
--- a/src/ca/mqexec.cpp
+++ b/src/ca/mqexec.cpp
@@ -2,28 +2,6 @@
2 2
3#include "precomp.h" 3#include "precomp.h"
4 4
5/********************************************************************
6 DllMain - standard entry point for all WiX CustomActions
7
8********************************************************************/
9extern "C" BOOL WINAPI DllMain(
10 IN HINSTANCE hInst,
11 IN ULONG ulReason,
12 IN LPVOID)
13{
14 switch(ulReason)
15 {
16 case DLL_PROCESS_ATTACH:
17 WcaGlobalInitialize(hInst);
18 break;
19
20 case DLL_PROCESS_DETACH:
21 WcaGlobalFinalize();
22 break;
23 }
24
25 return TRUE;
26}
27 5
28/******************************************************************** 6/********************************************************************
29 MessageQueuingExecuteInstall - CUSTOM ACTION ENTRY POINT 7 MessageQueuingExecuteInstall - CUSTOM ACTION ENTRY POINT
@@ -42,7 +20,7 @@ extern "C" UINT __stdcall MessageQueuingExecuteInstall(MSIHANDLE hInstall)
42 hr = WcaInitialize(hInstall, "MessageQueuingExecuteInstall"); 20 hr = WcaInitialize(hInstall, "MessageQueuingExecuteInstall");
43 ExitOnFailure(hr, "Failed to initialize MessageQueuingExecuteInstall"); 21 ExitOnFailure(hr, "Failed to initialize MessageQueuingExecuteInstall");
44 22
45 hr = MqiInitialize(); 23 hr = MqiExecInitialize();
46 ExitOnFailure(hr, "Failed to initialize"); 24 ExitOnFailure(hr, "Failed to initialize");
47 25
48 // get custom action data 26 // get custom action data
@@ -67,7 +45,7 @@ LExit:
67 ReleaseStr(pwzCustomActionData); 45 ReleaseStr(pwzCustomActionData);
68 46
69 // uninitialize 47 // uninitialize
70 MqiUninitialize(); 48 MqiExecUninitialize();
71 49
72 er = SUCCEEDED(hr) ? ERROR_SUCCESS : ERROR_INSTALL_FAILURE; 50 er = SUCCEEDED(hr) ? ERROR_SUCCESS : ERROR_INSTALL_FAILURE;
73 return WcaFinalize(er); 51 return WcaFinalize(er);
@@ -90,7 +68,7 @@ extern "C" UINT __stdcall MessageQueuingRollbackInstall(MSIHANDLE hInstall)
90 hr = WcaInitialize(hInstall, "MessageQueuingRollbackInstall"); 68 hr = WcaInitialize(hInstall, "MessageQueuingRollbackInstall");
91 ExitOnFailure(hr, "Failed to initialize MessageQueuingRollbackInstall"); 69 ExitOnFailure(hr, "Failed to initialize MessageQueuingRollbackInstall");
92 70
93 hr = MqiInitialize(); 71 hr = MqiExecInitialize();
94 ExitOnFailure(hr, "Failed to initialize"); 72 ExitOnFailure(hr, "Failed to initialize");
95 73
96 // get custom action data 74 // get custom action data
@@ -113,7 +91,7 @@ LExit:
113 ReleaseStr(pwzCustomActionData); 91 ReleaseStr(pwzCustomActionData);
114 92
115 // uninitialize 93 // uninitialize
116 MqiUninitialize(); 94 MqiExecUninitialize();
117 95
118 er = SUCCEEDED(hr) ? ERROR_SUCCESS : ERROR_INSTALL_FAILURE; 96 er = SUCCEEDED(hr) ? ERROR_SUCCESS : ERROR_INSTALL_FAILURE;
119 return WcaFinalize(er); 97 return WcaFinalize(er);
@@ -136,7 +114,7 @@ extern "C" UINT __stdcall MessageQueuingExecuteUninstall(MSIHANDLE hInstall)
136 hr = WcaInitialize(hInstall, "MessageQueuingExecuteUninstall"); 114 hr = WcaInitialize(hInstall, "MessageQueuingExecuteUninstall");
137 ExitOnFailure(hr, "Failed to initialize MessageQueuingExecuteUninstall"); 115 ExitOnFailure(hr, "Failed to initialize MessageQueuingExecuteUninstall");
138 116
139 hr = MqiInitialize(); 117 hr = MqiExecInitialize();
140 ExitOnFailure(hr, "Failed to initialize"); 118 ExitOnFailure(hr, "Failed to initialize");
141 119
142 // get custom action data 120 // get custom action data
@@ -161,7 +139,7 @@ LExit:
161 ReleaseStr(pwzCustomActionData); 139 ReleaseStr(pwzCustomActionData);
162 140
163 // uninitialize 141 // uninitialize
164 MqiUninitialize(); 142 MqiExecUninitialize();
165 143
166 er = SUCCEEDED(hr) ? ERROR_SUCCESS : ERROR_INSTALL_FAILURE; 144 er = SUCCEEDED(hr) ? ERROR_SUCCESS : ERROR_INSTALL_FAILURE;
167 return WcaFinalize(er); 145 return WcaFinalize(er);
@@ -184,7 +162,7 @@ extern "C" UINT __stdcall MessageQueuingRollbackUninstall(MSIHANDLE hInstall)
184 hr = WcaInitialize(hInstall, "MessageQueuingRollbackUninstall"); 162 hr = WcaInitialize(hInstall, "MessageQueuingRollbackUninstall");
185 ExitOnFailure(hr, "Failed to initialize MessageQueuingRollbackUninstall"); 163 ExitOnFailure(hr, "Failed to initialize MessageQueuingRollbackUninstall");
186 164
187 hr = MqiInitialize(); 165 hr = MqiExecInitialize();
188 ExitOnFailure(hr, "Failed to initialize"); 166 ExitOnFailure(hr, "Failed to initialize");
189 167
190 // get custom action data 168 // get custom action data
@@ -207,7 +185,7 @@ LExit:
207 ReleaseStr(pwzCustomActionData); 185 ReleaseStr(pwzCustomActionData);
208 186
209 // uninitialize 187 // uninitialize
210 MqiUninitialize(); 188 MqiExecUninitialize();
211 189
212 er = SUCCEEDED(hr) ? ERROR_SUCCESS : ERROR_INSTALL_FAILURE; 190 er = SUCCEEDED(hr) ? ERROR_SUCCESS : ERROR_INSTALL_FAILURE;
213 return WcaFinalize(er); 191 return WcaFinalize(er);
diff --git a/src/ca/mqqueueexec.cpp b/src/ca/mqqueueexec.cpp
index f5b99da7..e4304ab8 100644
--- a/src/ca/mqqueueexec.cpp
+++ b/src/ca/mqqueueexec.cpp
@@ -119,7 +119,7 @@ static MQSetQueueSecurityFunc gpfnMQSetQueueSecurity;
119 119
120// function definitions 120// function definitions
121 121
122HRESULT MqiInitialize() 122HRESULT MqiExecInitialize()
123{ 123{
124 HRESULT hr = S_OK; 124 HRESULT hr = S_OK;
125 125
@@ -153,7 +153,7 @@ LExit:
153 return hr; 153 return hr;
154} 154}
155 155
156void MqiUninitialize() 156void MqiExecUninitialize()
157{ 157{
158 if (ghMQRT) 158 if (ghMQRT)
159 ::FreeLibrary(ghMQRT); 159 ::FreeLibrary(ghMQRT);
diff --git a/src/ca/mqqueueexec.h b/src/ca/mqqueueexec.h
index 37ceea50..76bc2023 100644
--- a/src/ca/mqqueueexec.h
+++ b/src/ca/mqqueueexec.h
@@ -2,8 +2,8 @@
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. 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 3
4 4
5HRESULT MqiInitialize(); 5HRESULT MqiExecInitialize();
6void MqiUninitialize(); 6void MqiExecUninitialize();
7HRESULT MqiCreateMessageQueues( 7HRESULT MqiCreateMessageQueues(
8 LPWSTR* ppwzData 8 LPWSTR* ppwzData
9 ); 9 );
diff --git a/src/ca/mqqueuesched.cpp b/src/ca/mqqueuesched.cpp
index 4f40a4aa..01777ea4 100644
--- a/src/ca/mqqueuesched.cpp
+++ b/src/ca/mqqueuesched.cpp
@@ -51,7 +51,7 @@ static MQPathNameToFormatNameFunc gpfnMQPathNameToFormatName;
51 51
52// function definitions 52// function definitions
53 53
54HRESULT MqiInitialize() 54HRESULT MqiSchedInitialize()
55{ 55{
56 HRESULT hr = S_OK; 56 HRESULT hr = S_OK;
57 57
@@ -72,7 +72,7 @@ LExit:
72 return hr; 72 return hr;
73} 73}
74 74
75void MqiUninitialize() 75void MqiSchedUninitialize()
76{ 76{
77 if (ghMQRT) 77 if (ghMQRT)
78 { 78 {
diff --git a/src/ca/mqqueuesched.h b/src/ca/mqqueuesched.h
index b063ca28..c9381e0a 100644
--- a/src/ca/mqqueuesched.h
+++ b/src/ca/mqqueuesched.h
@@ -54,8 +54,8 @@ struct MQI_MESSAGE_QUEUE_PERMISSION_LIST
54 54
55// function prototypes 55// function prototypes
56 56
57HRESULT MqiInitialize(); 57HRESULT MqiSchedInitialize();
58void MqiUninitialize(); 58void MqiSchedUninitialize();
59HRESULT MqiMessageQueueRead( 59HRESULT MqiMessageQueueRead(
60 MQI_MESSAGE_QUEUE_LIST* pList 60 MQI_MESSAGE_QUEUE_LIST* pList
61 ); 61 );
diff --git a/src/ca/mqsched.cpp b/src/ca/mqsched.cpp
index cefce853..4c994901 100644
--- a/src/ca/mqsched.cpp
+++ b/src/ca/mqsched.cpp
@@ -4,29 +4,6 @@
4 4
5 5
6/******************************************************************** 6/********************************************************************
7 DllMain - standard entry point for all WiX CustomActions
8
9********************************************************************/
10extern "C" BOOL WINAPI DllMain(
11 IN HINSTANCE hInst,
12 IN ULONG ulReason,
13 IN LPVOID)
14{
15 switch(ulReason)
16 {
17 case DLL_PROCESS_ATTACH:
18 WcaGlobalInitialize(hInst);
19 break;
20
21 case DLL_PROCESS_DETACH:
22 WcaGlobalFinalize();
23 break;
24 }
25
26 return TRUE;
27}
28
29/********************************************************************
30 MessageQueuingInstall - CUSTOM ACTION ENTRY POINT for installing MSMQ message queues 7 MessageQueuingInstall - CUSTOM ACTION ENTRY POINT for installing MSMQ message queues
31 8
32********************************************************************/ 9********************************************************************/
@@ -51,7 +28,7 @@ extern "C" UINT __stdcall MessageQueuingInstall(MSIHANDLE hInstall)
51 28
52 do 29 do
53 { 30 {
54 hr = MqiInitialize(); 31 hr = MqiSchedInitialize();
55 if (S_FALSE == hr) 32 if (S_FALSE == hr)
56 { 33 {
57 WcaLog(LOGMSG_STANDARD, "Failed to load mqrt.dll."); 34 WcaLog(LOGMSG_STANDARD, "Failed to load mqrt.dll.");
@@ -118,7 +95,7 @@ LExit:
118 ReleaseStr(pwzExecuteActionData); 95 ReleaseStr(pwzExecuteActionData);
119 96
120 // uninitialize 97 // uninitialize
121 MqiUninitialize(); 98 MqiSchedUninitialize();
122 99
123 er = SUCCEEDED(hr) ? ERROR_SUCCESS : ERROR_INSTALL_FAILURE; 100 er = SUCCEEDED(hr) ? ERROR_SUCCESS : ERROR_INSTALL_FAILURE;
124 return WcaFinalize(er); 101 return WcaFinalize(er);
@@ -150,7 +127,7 @@ extern "C" UINT __stdcall MessageQueuingUninstall(MSIHANDLE hInstall)
150 127
151 do 128 do
152 { 129 {
153 hr = MqiInitialize(); 130 hr = MqiSchedInitialize();
154 if (S_FALSE == hr) 131 if (S_FALSE == hr)
155 { 132 {
156 WcaLog(LOGMSG_STANDARD, "Failed to load mqrt.dll."); 133 WcaLog(LOGMSG_STANDARD, "Failed to load mqrt.dll.");
@@ -212,7 +189,7 @@ LExit:
212 ReleaseStr(pwzExecuteActionData); 189 ReleaseStr(pwzExecuteActionData);
213 190
214 // uninitialize 191 // uninitialize
215 MqiUninitialize(); 192 MqiSchedUninitialize();
216 193
217 er = SUCCEEDED(hr) ? ERROR_SUCCESS : ERROR_INSTALL_FAILURE; 194 er = SUCCEEDED(hr) ? ERROR_SUCCESS : ERROR_INSTALL_FAILURE;
218 return WcaFinalize(er); 195 return WcaFinalize(er);
diff --git a/src/ca/msmqca.def b/src/ca/msmqca.def
new file mode 100644
index 00000000..4902858f
--- /dev/null
+++ b/src/ca/msmqca.def
@@ -0,0 +1,12 @@
1; Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information.
2
3
4LIBRARY "msmqca"
5
6EXPORTS
7 MessageQueuingInstall
8 MessageQueuingUninstall
9 MessageQueuingExecuteInstall
10 MessageQueuingRollbackInstall
11 MessageQueuingExecuteUninstall
12 MessageQueuingRollbackUninstall
diff --git a/src/ca/msmqca.vcxproj b/src/ca/msmqca.vcxproj
new file mode 100644
index 00000000..507a2f93
--- /dev/null
+++ b/src/ca/msmqca.vcxproj
@@ -0,0 +1,71 @@
1<?xml version="1.0" encoding="utf-8"?>
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<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
5 <Import Project="..\..\packages\WixToolset.DUtil.4.0.6\build\WixToolset.DUtil.props" Condition="Exists('..\..\packages\WixToolset.DUtil.4.0.6\build\WixToolset.DUtil.props')" />
6 <Import Project="..\..\packages\WixToolset.WcaUtil.4.0.2\build\WixToolset.WcaUtil.props" Condition="Exists('..\..\packages\WixToolset.WcaUtil.4.0.2\build\WixToolset.WcaUtil.props')" />
7
8 <ItemGroup Label="ProjectConfigurations">
9 <ProjectConfiguration Include="Debug|Win32">
10 <Configuration>Debug</Configuration>
11 <Platform>Win32</Platform>
12 </ProjectConfiguration>
13 <ProjectConfiguration Include="Release|Win32">
14 <Configuration>Release</Configuration>
15 <Platform>Win32</Platform>
16 </ProjectConfiguration>
17 </ItemGroup>
18
19 <PropertyGroup Label="Globals">
20 <ProjectGuid>{CAD56A7E-342B-4324-9DCB-BCEB8F3BC80D}</ProjectGuid>
21 <ConfigurationType>DynamicLibrary</ConfigurationType>
22 <TargetName>msmqca</TargetName>
23 <PlatformToolset>v141</PlatformToolset>
24 <CharacterSet>Unicode</CharacterSet>
25 <ProjectModuleDefinitionFile>msmqca.def</ProjectModuleDefinitionFile>
26 <Description>WiX Toolset MSMQ CustomAction</Description>
27 </PropertyGroup>
28
29 <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
30 <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
31
32 <PropertyGroup>
33 <ProjectAdditionalLinkLibraries>msi.lib</ProjectAdditionalLinkLibraries>
34 </PropertyGroup>
35
36 <ItemGroup>
37 <ClCompile Include="dllmain.cpp">
38 <PrecompiledHeader>Create</PrecompiledHeader>
39 </ClCompile>
40 <ClCompile Include="mqexec.cpp" />
41 <ClCompile Include="mqqueueexec.cpp" />
42 <ClCompile Include="mqqueuesched.cpp" />
43 <ClCompile Include="mqsched.cpp" />
44 <ClCompile Include="mqutilexec.cpp" />
45 <ClCompile Include="mqutilsched.cpp" />
46 </ItemGroup>
47
48 <ItemGroup>
49 <ClInclude Include="mqcost.h" />
50 <ClInclude Include="mqqueueexec.h" />
51 <ClInclude Include="mqqueuesched.h" />
52 <ClInclude Include="mqutilexec.h" />
53 <ClInclude Include="mqutilsched.h" />
54 <ClInclude Include="precomp.h" />
55 </ItemGroup>
56
57 <ItemGroup>
58 <None Include="packages.config" />
59 <None Include="msmqca.def" />
60 </ItemGroup>
61
62 <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
63
64 <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
65 <PropertyGroup>
66 <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>
67 </PropertyGroup>
68 <Error Condition="!Exists('..\..\packages\WixToolset.DUtil.4.0.6\build\WixToolset.DUtil.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\WixToolset.DUtil.4.0.6\build\WixToolset.DUtil.props'))" />
69 <Error Condition="!Exists('..\..\packages\WixToolset.WcaUtil.4.0.2\build\WixToolset.WcaUtil.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\packages\WixToolset.WcaUtil.4.0.2\build\WixToolset.WcaUtil.props'))" />
70 </Target>
71</Project>
diff --git a/src/ca/packages.config b/src/ca/packages.config
new file mode 100644
index 00000000..b87f9ab4
--- /dev/null
+++ b/src/ca/packages.config
@@ -0,0 +1,5 @@
1<?xml version="1.0" encoding="utf-8"?>
2<packages>
3 <package id="WixToolset.DUtil" version="4.0.6" targetFramework="native" />
4 <package id="WixToolset.WcaUtil" version="4.0.2" targetFramework="native" />
5</packages> \ No newline at end of file
diff --git a/src/ca/precomp.h b/src/ca/precomp.h
new file mode 100644
index 00000000..cbbff6ea
--- /dev/null
+++ b/src/ca/precomp.h
@@ -0,0 +1,23 @@
1#pragma once
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#include <windows.h>
6#include <msiquery.h>
7#include <strsafe.h>
8#include <ntsecapi.h>
9#include <aclapi.h>
10#include <mq.h>
11
12#include "wcautil.h"
13#include "memutil.h"
14#include "strutil.h"
15#include "wiutil.h"
16
17#include "CustomMsiErrors.h"
18
19#include "mqcost.h"
20#include "mqutilsched.h"
21#include "mqqueuesched.h"
22#include "mqutilexec.h"
23#include "mqqueueexec.h"