diff options
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, |