diff options
author | Sean Hall <r.sean.hall@gmail.com> | 2020-11-15 20:23:44 -0600 |
---|---|---|
committer | Sean Hall <r.sean.hall@gmail.com> | 2020-11-17 19:06:00 -0600 |
commit | 846f5a033d346c1bac51c56d4936cd3118ebea7a (patch) | |
tree | 6370380f4aa18355feebc1a058f0793ad14cd899 /src/engine/msiengine.cpp | |
parent | 0d873d28c2dd18444afa08b748e91f495ed1cf5c (diff) | |
download | wix-846f5a033d346c1bac51c56d4936cd3118ebea7a.tar.gz wix-846f5a033d346c1bac51c56d4936cd3118ebea7a.tar.bz2 wix-846f5a033d346c1bac51c56d4936cd3118ebea7a.zip |
Clean up the elevation code for MSI transactions.
Diffstat (limited to 'src/engine/msiengine.cpp')
-rw-r--r-- | src/engine/msiengine.cpp | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/src/engine/msiengine.cpp b/src/engine/msiengine.cpp index c20e2ef8..fcd8817d 100644 --- a/src/engine/msiengine.cpp +++ b/src/engine/msiengine.cpp | |||
@@ -1137,6 +1137,48 @@ LExit: | |||
1137 | return hr; | 1137 | return hr; |
1138 | } | 1138 | } |
1139 | 1139 | ||
1140 | extern "C" HRESULT MsiEngineBeginTransaction( | ||
1141 | __in LPCWSTR wzName | ||
1142 | ) | ||
1143 | { | ||
1144 | HRESULT hr = S_OK; | ||
1145 | UINT uResult = ERROR_SUCCESS; | ||
1146 | MSIHANDLE hTransactionHandle = NULL; | ||
1147 | HANDLE hChangeOfOwnerEvent = NULL; | ||
1148 | |||
1149 | uResult = ::MsiBeginTransaction(wzName, 0, &hTransactionHandle, &hChangeOfOwnerEvent); | ||
1150 | ExitOnWin32Error(uResult, hr, "Failed to begin an MSI transaction"); | ||
1151 | |||
1152 | LExit: | ||
1153 | return hr; | ||
1154 | } | ||
1155 | |||
1156 | extern "C" HRESULT MsiEngineCommitTransaction() | ||
1157 | { | ||
1158 | HRESULT hr = S_OK; | ||
1159 | UINT uResult = ERROR_SUCCESS; | ||
1160 | |||
1161 | uResult = ::MsiEndTransaction(MSITRANSACTIONSTATE_COMMIT); | ||
1162 | ExitOnWin32Error(uResult, hr, "Failed to commit the MSI transaction"); | ||
1163 | |||
1164 | LExit: | ||
1165 | |||
1166 | return hr; | ||
1167 | } | ||
1168 | |||
1169 | extern "C" HRESULT MsiEngineRollbackTransaction() | ||
1170 | { | ||
1171 | HRESULT hr = S_OK; | ||
1172 | UINT uResult = ERROR_SUCCESS; | ||
1173 | |||
1174 | uResult = ::MsiEndTransaction(MSITRANSACTIONSTATE_ROLLBACK); | ||
1175 | ExitOnWin32Error(uResult, hr, "Failed to rollback the MSI transaction"); | ||
1176 | |||
1177 | LExit: | ||
1178 | |||
1179 | return hr; | ||
1180 | } | ||
1181 | |||
1140 | extern "C" HRESULT MsiEngineExecutePackage( | 1182 | extern "C" HRESULT MsiEngineExecutePackage( |
1141 | __in_opt HWND hwndParent, | 1183 | __in_opt HWND hwndParent, |
1142 | __in BURN_EXECUTE_ACTION* pExecuteAction, | 1184 | __in BURN_EXECUTE_ACTION* pExecuteAction, |