aboutsummaryrefslogtreecommitdiff
path: root/src/engine/msiengine.cpp
diff options
context:
space:
mode:
authorSean Hall <r.sean.hall@gmail.com>2020-11-16 19:05:29 -0600
committerSean Hall <r.sean.hall@gmail.com>2020-11-17 19:06:00 -0600
commit7d45238e97c35ccea1f77be9065b9a3ed9213bfb (patch)
tree92a482536f944347ab9be9f1321c400d900e1cc2 /src/engine/msiengine.cpp
parent7a942746bc535d319bdfa7f17025347ac6913ba2 (diff)
downloadwix-7d45238e97c35ccea1f77be9065b9a3ed9213bfb.tar.gz
wix-7d45238e97c35ccea1f77be9065b9a3ed9213bfb.tar.bz2
wix-7d45238e97c35ccea1f77be9065b9a3ed9213bfb.zip
Add logging and BA messages around MSI transactions.
Diffstat (limited to 'src/engine/msiengine.cpp')
-rw-r--r--src/engine/msiengine.cpp20
1 files changed, 18 insertions, 2 deletions
diff --git a/src/engine/msiengine.cpp b/src/engine/msiengine.cpp
index b056cb7e..c298e219 100644
--- a/src/engine/msiengine.cpp
+++ b/src/engine/msiengine.cpp
@@ -1147,18 +1147,30 @@ extern "C" HRESULT MsiEngineBeginTransaction(
1147 MSIHANDLE hTransactionHandle = NULL; 1147 MSIHANDLE hTransactionHandle = NULL;
1148 HANDLE hChangeOfOwnerEvent = NULL; 1148 HANDLE hChangeOfOwnerEvent = NULL;
1149 1149
1150 LogId(REPORT_STANDARD, MSG_MSI_TRANSACTION_BEGIN, wzName);
1151
1150 uResult = ::MsiBeginTransaction(wzName, 0, &hTransactionHandle, &hChangeOfOwnerEvent); 1152 uResult = ::MsiBeginTransaction(wzName, 0, &hTransactionHandle, &hChangeOfOwnerEvent);
1153
1154 if (ERROR_ROLLBACK_DISABLED == uResult)
1155 {
1156 LogId(REPORT_ERROR, MSG_MSI_TRANSACTIONS_DISABLED);
1157 }
1158
1151 ExitOnWin32Error(uResult, hr, "Failed to begin an MSI transaction"); 1159 ExitOnWin32Error(uResult, hr, "Failed to begin an MSI transaction");
1152 1160
1153LExit: 1161LExit:
1154 return hr; 1162 return hr;
1155} 1163}
1156 1164
1157extern "C" HRESULT MsiEngineCommitTransaction() 1165extern "C" HRESULT MsiEngineCommitTransaction(
1166 __in LPCWSTR wzName
1167 )
1158{ 1168{
1159 HRESULT hr = S_OK; 1169 HRESULT hr = S_OK;
1160 UINT uResult = ERROR_SUCCESS; 1170 UINT uResult = ERROR_SUCCESS;
1161 1171
1172 LogId(REPORT_STANDARD, MSG_MSI_TRANSACTION_COMMIT, wzName);
1173
1162 uResult = ::MsiEndTransaction(MSITRANSACTIONSTATE_COMMIT); 1174 uResult = ::MsiEndTransaction(MSITRANSACTIONSTATE_COMMIT);
1163 ExitOnWin32Error(uResult, hr, "Failed to commit the MSI transaction"); 1175 ExitOnWin32Error(uResult, hr, "Failed to commit the MSI transaction");
1164 1176
@@ -1167,11 +1179,15 @@ LExit:
1167 return hr; 1179 return hr;
1168} 1180}
1169 1181
1170extern "C" HRESULT MsiEngineRollbackTransaction() 1182extern "C" HRESULT MsiEngineRollbackTransaction(
1183 __in LPCWSTR wzName
1184 )
1171{ 1185{
1172 HRESULT hr = S_OK; 1186 HRESULT hr = S_OK;
1173 UINT uResult = ERROR_SUCCESS; 1187 UINT uResult = ERROR_SUCCESS;
1174 1188
1189 LogId(REPORT_WARNING, MSG_MSI_TRANSACTION_ROLLBACK, wzName);
1190
1175 uResult = ::MsiEndTransaction(MSITRANSACTIONSTATE_ROLLBACK); 1191 uResult = ::MsiEndTransaction(MSITRANSACTIONSTATE_ROLLBACK);
1176 ExitOnWin32Error(uResult, hr, "Failed to rollback the MSI transaction"); 1192 ExitOnWin32Error(uResult, hr, "Failed to rollback the MSI transaction");
1177 1193