aboutsummaryrefslogtreecommitdiff
path: root/src/ext/Msmq/ca/mqexec.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/ext/Msmq/ca/mqexec.cpp')
-rw-r--r--src/ext/Msmq/ca/mqexec.cpp192
1 files changed, 192 insertions, 0 deletions
diff --git a/src/ext/Msmq/ca/mqexec.cpp b/src/ext/Msmq/ca/mqexec.cpp
new file mode 100644
index 00000000..ff7e9b14
--- /dev/null
+++ b/src/ext/Msmq/ca/mqexec.cpp
@@ -0,0 +1,192 @@
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
6/********************************************************************
7 MessageQueuingExecuteInstall - CUSTOM ACTION ENTRY POINT
8
9 Input: deferred CustomActionData - MessageQueuingExecuteInstall
10********************************************************************/
11extern "C" UINT __stdcall MessageQueuingExecuteInstall(MSIHANDLE hInstall)
12{
13 HRESULT hr = S_OK;
14 UINT er = ERROR_SUCCESS;
15
16 LPWSTR pwzCustomActionData = NULL;
17 LPWSTR pwzData = NULL;
18
19 // initialize
20 hr = WcaInitialize(hInstall, "MessageQueuingExecuteInstall");
21 ExitOnFailure(hr, "Failed to initialize MessageQueuingExecuteInstall");
22
23 hr = MqiExecInitialize();
24 ExitOnFailure(hr, "Failed to initialize");
25
26 // get custom action data
27 hr = WcaGetProperty(L"CustomActionData", &pwzCustomActionData);
28 ExitOnFailure(hr, "Failed to get CustomActionData");
29 pwzData = pwzCustomActionData;
30
31 // create message queues
32 hr = MqiCreateMessageQueues(&pwzData);
33 ExitOnFailure(hr, "Failed to create message queues");
34 if (S_FALSE == hr) ExitFunction();
35
36 // add message queue permissions
37 hr = MqiAddMessageQueuePermissions(&pwzData);
38 ExitOnFailure(hr, "Failed to add message queue permissions");
39 if (S_FALSE == hr) ExitFunction();
40
41 hr = S_OK;
42
43LExit:
44 // clean up
45 ReleaseStr(pwzCustomActionData);
46
47 // uninitialize
48 MqiExecUninitialize();
49
50 er = SUCCEEDED(hr) ? ERROR_SUCCESS : ERROR_INSTALL_FAILURE;
51 return WcaFinalize(er);
52}
53
54/********************************************************************
55 MessageQueuingRollbackInstall - CUSTOM ACTION ENTRY POINT
56
57 Input: deferred CustomActionData - MessageQueuingRollbackInstall
58********************************************************************/
59extern "C" UINT __stdcall MessageQueuingRollbackInstall(MSIHANDLE hInstall)
60{
61 HRESULT hr = S_OK;
62 UINT er = ERROR_SUCCESS;
63
64 LPWSTR pwzCustomActionData = NULL;
65 LPWSTR pwzData = NULL;
66
67 // initialize
68 hr = WcaInitialize(hInstall, "MessageQueuingRollbackInstall");
69 ExitOnFailure(hr, "Failed to initialize MessageQueuingRollbackInstall");
70
71 hr = MqiExecInitialize();
72 ExitOnFailure(hr, "Failed to initialize");
73
74 // get custom action data
75 hr = WcaGetProperty(L"CustomActionData", &pwzCustomActionData);
76 ExitOnFailure(hr, "Failed to get CustomActionData");
77 pwzData = pwzCustomActionData;
78
79 // add message queue permissions
80 hr = MqiRollbackAddMessageQueuePermissions(&pwzData);
81 ExitOnFailure(hr, "Failed to rollback add message queue permissions");
82
83 // create message queues
84 hr = MqiRollbackCreateMessageQueues(&pwzData);
85 ExitOnFailure(hr, "Failed to rollback create message queues");
86
87 hr = S_OK;
88
89LExit:
90 // clean up
91 ReleaseStr(pwzCustomActionData);
92
93 // uninitialize
94 MqiExecUninitialize();
95
96 er = SUCCEEDED(hr) ? ERROR_SUCCESS : ERROR_INSTALL_FAILURE;
97 return WcaFinalize(er);
98}
99
100/********************************************************************
101 MessageQueuingExecuteUninstall - CUSTOM ACTION ENTRY POINT
102
103 Input: deferred CustomActionData - MessageQueuingExecuteUninstall
104********************************************************************/
105extern "C" UINT __stdcall MessageQueuingExecuteUninstall(MSIHANDLE hInstall)
106{
107 HRESULT hr = S_OK;
108 UINT er = ERROR_SUCCESS;
109
110 LPWSTR pwzCustomActionData = NULL;
111 LPWSTR pwzData = NULL;
112
113 // initialize
114 hr = WcaInitialize(hInstall, "MessageQueuingExecuteUninstall");
115 ExitOnFailure(hr, "Failed to initialize MessageQueuingExecuteUninstall");
116
117 hr = MqiExecInitialize();
118 ExitOnFailure(hr, "Failed to initialize");
119
120 // get custom action data
121 hr = WcaGetProperty(L"CustomActionData", &pwzCustomActionData);
122 ExitOnFailure(hr, "Failed to get CustomActionData");
123 pwzData = pwzCustomActionData;
124
125 // remove message queue permissions
126 hr = MqiRemoveMessageQueuePermissions(&pwzData);
127 ExitOnFailure(hr, "Failed to remove message queue permissions");
128 if (S_FALSE == hr) ExitFunction();
129
130 // delete message queues
131 hr = MqiDeleteMessageQueues(&pwzData);
132 ExitOnFailure(hr, "Failed to delete message queues");
133 if (S_FALSE == hr) ExitFunction();
134
135 hr = S_OK;
136
137LExit:
138 // clean up
139 ReleaseStr(pwzCustomActionData);
140
141 // uninitialize
142 MqiExecUninitialize();
143
144 er = SUCCEEDED(hr) ? ERROR_SUCCESS : ERROR_INSTALL_FAILURE;
145 return WcaFinalize(er);
146}
147
148/********************************************************************
149 MessageQueuingRollbackUninstall - CUSTOM ACTION ENTRY POINT
150
151 Input: deferred CustomActionData - MessageQueuingRollbackUninstall
152********************************************************************/
153extern "C" UINT __stdcall MessageQueuingRollbackUninstall(MSIHANDLE hInstall)
154{
155 HRESULT hr = S_OK;
156 UINT er = ERROR_SUCCESS;
157
158 LPWSTR pwzCustomActionData = NULL;
159 LPWSTR pwzData = NULL;
160
161 // initialize
162 hr = WcaInitialize(hInstall, "MessageQueuingRollbackUninstall");
163 ExitOnFailure(hr, "Failed to initialize MessageQueuingRollbackUninstall");
164
165 hr = MqiExecInitialize();
166 ExitOnFailure(hr, "Failed to initialize");
167
168 // get custom action data
169 hr = WcaGetProperty(L"CustomActionData", &pwzCustomActionData);
170 ExitOnFailure(hr, "Failed to get CustomActionData");
171 pwzData = pwzCustomActionData;
172
173 // delete message queues
174 hr = MqiRollbackDeleteMessageQueues(&pwzData);
175 ExitOnFailure(hr, "Failed to delete message queues");
176
177 // remove message queue permissions
178 hr = MqiRollbackRemoveMessageQueuePermissions(&pwzData);
179 ExitOnFailure(hr, "Failed to remove message queue permissions");
180
181 hr = S_OK;
182
183LExit:
184 // clean up
185 ReleaseStr(pwzCustomActionData);
186
187 // uninitialize
188 MqiExecUninitialize();
189
190 er = SUCCEEDED(hr) ? ERROR_SUCCESS : ERROR_INSTALL_FAILURE;
191 return WcaFinalize(er);
192}