diff options
Diffstat (limited to '')
| -rw-r--r-- | src/libs/dutil/WixToolset.DUtil/file2utl.cpp | 31 |
1 files changed, 19 insertions, 12 deletions
diff --git a/src/libs/dutil/WixToolset.DUtil/file2utl.cpp b/src/libs/dutil/WixToolset.DUtil/file2utl.cpp index 88f8377c..3ab47f59 100644 --- a/src/libs/dutil/WixToolset.DUtil/file2utl.cpp +++ b/src/libs/dutil/WixToolset.DUtil/file2utl.cpp | |||
| @@ -16,6 +16,7 @@ | |||
| 16 | #define FileExitOnInvalidHandleWithLastError(p, x, s, ...) ExitOnInvalidHandleWithLastErrorSource(DUTIL_SOURCE_FILEUTIL, p, x, s, __VA_ARGS__) | 16 | #define FileExitOnInvalidHandleWithLastError(p, x, s, ...) ExitOnInvalidHandleWithLastErrorSource(DUTIL_SOURCE_FILEUTIL, p, x, s, __VA_ARGS__) |
| 17 | #define FileExitOnWin32Error(e, x, s, ...) ExitOnWin32ErrorSource(DUTIL_SOURCE_FILEUTIL, e, x, s, __VA_ARGS__) | 17 | #define FileExitOnWin32Error(e, x, s, ...) ExitOnWin32ErrorSource(DUTIL_SOURCE_FILEUTIL, e, x, s, __VA_ARGS__) |
| 18 | #define FileExitOnGdipFailure(g, x, s, ...) ExitOnGdipFailureSource(DUTIL_SOURCE_FILEUTIL, g, x, s, __VA_ARGS__) | 18 | #define FileExitOnGdipFailure(g, x, s, ...) ExitOnGdipFailureSource(DUTIL_SOURCE_FILEUTIL, g, x, s, __VA_ARGS__) |
| 19 | #define FileExitOnPathFailure(x, b, s, ...) ExitOnPathFailureSource(DUTIL_SOURCE_FILEUTIL, x, b, s, __VA_ARGS__) | ||
| 19 | 20 | ||
| 20 | // constants | 21 | // constants |
| 21 | 22 | ||
| @@ -35,6 +36,7 @@ extern "C" BOOL DAPI FileExistsAfterRestart( | |||
| 35 | { | 36 | { |
| 36 | HRESULT hr = S_OK; | 37 | HRESULT hr = S_OK; |
| 37 | BOOL fExists = FALSE; | 38 | BOOL fExists = FALSE; |
| 39 | BOOL fRegExists = FALSE; | ||
| 38 | HKEY hkPendingFileRename = NULL; | 40 | HKEY hkPendingFileRename = NULL; |
| 39 | LPWSTR* rgsczRenames = NULL; | 41 | LPWSTR* rgsczRenames = NULL; |
| 40 | DWORD cRenames = 0; | 42 | DWORD cRenames = 0; |
| @@ -44,18 +46,20 @@ extern "C" BOOL DAPI FileExistsAfterRestart( | |||
| 44 | if (fExists) | 46 | if (fExists) |
| 45 | { | 47 | { |
| 46 | hr = RegOpen(HKEY_LOCAL_MACHINE, REGISTRY_PENDING_FILE_RENAME_KEY, KEY_QUERY_VALUE, &hkPendingFileRename); | 48 | hr = RegOpen(HKEY_LOCAL_MACHINE, REGISTRY_PENDING_FILE_RENAME_KEY, KEY_QUERY_VALUE, &hkPendingFileRename); |
| 47 | if (E_FILENOTFOUND == hr) | 49 | FileExitOnPathFailure(hr, fRegExists, "Failed to open pending file rename registry key."); |
| 50 | |||
| 51 | if (!fRegExists) | ||
| 48 | { | 52 | { |
| 49 | ExitFunction1(hr = S_OK); | 53 | ExitFunction(); |
| 50 | } | 54 | } |
| 51 | FileExitOnFailure(hr, "Failed to open pending file rename registry key."); | ||
| 52 | 55 | ||
| 53 | hr = RegReadStringArray(hkPendingFileRename, REGISTRY_PENDING_FILE_RENAME_VALUE, &rgsczRenames, &cRenames); | 56 | hr = RegReadStringArray(hkPendingFileRename, REGISTRY_PENDING_FILE_RENAME_VALUE, &rgsczRenames, &cRenames); |
| 54 | if (E_FILENOTFOUND == hr) | 57 | FileExitOnPathFailure(hr, fRegExists, "Failed to read pending file renames."); |
| 58 | |||
| 59 | if (!fRegExists) | ||
| 55 | { | 60 | { |
| 56 | ExitFunction1(hr = S_OK); | 61 | ExitFunction(); |
| 57 | } | 62 | } |
| 58 | FileExitOnFailure(hr, "Failed to read pending file renames."); | ||
| 59 | 63 | ||
| 60 | // The pending file renames array is pairs of source and target paths. We only care | 64 | // The pending file renames array is pairs of source and target paths. We only care |
| 61 | // about checking the source paths so skip the target paths (i += 2). | 65 | // about checking the source paths so skip the target paths (i += 2). |
| @@ -95,6 +99,7 @@ extern "C" HRESULT DAPI FileRemoveFromPendingRename( | |||
| 95 | { | 99 | { |
| 96 | HRESULT hr = S_OK; | 100 | HRESULT hr = S_OK; |
| 97 | HKEY hkPendingFileRename = NULL; | 101 | HKEY hkPendingFileRename = NULL; |
| 102 | BOOL fExists = FALSE; | ||
| 98 | LPWSTR* rgsczRenames = NULL; | 103 | LPWSTR* rgsczRenames = NULL; |
| 99 | DWORD cRenames = 0; | 104 | DWORD cRenames = 0; |
| 100 | BOOL fPathEqual = FALSE; | 105 | BOOL fPathEqual = FALSE; |
| @@ -102,18 +107,20 @@ extern "C" HRESULT DAPI FileRemoveFromPendingRename( | |||
| 102 | DWORD cNewRenames = 0; | 107 | DWORD cNewRenames = 0; |
| 103 | 108 | ||
| 104 | hr = RegOpen(HKEY_LOCAL_MACHINE, REGISTRY_PENDING_FILE_RENAME_KEY, KEY_QUERY_VALUE | KEY_SET_VALUE, &hkPendingFileRename); | 109 | hr = RegOpen(HKEY_LOCAL_MACHINE, REGISTRY_PENDING_FILE_RENAME_KEY, KEY_QUERY_VALUE | KEY_SET_VALUE, &hkPendingFileRename); |
| 105 | if (E_FILENOTFOUND == hr) | 110 | FileExitOnPathFailure(hr, fExists, "Failed to open pending file rename registry key."); |
| 111 | |||
| 112 | if (!fExists) | ||
| 106 | { | 113 | { |
| 107 | ExitFunction1(hr = S_OK); | 114 | ExitFunction(); |
| 108 | } | 115 | } |
| 109 | FileExitOnFailure(hr, "Failed to open pending file rename registry key."); | ||
| 110 | 116 | ||
| 111 | hr = RegReadStringArray(hkPendingFileRename, REGISTRY_PENDING_FILE_RENAME_VALUE, &rgsczRenames, &cRenames); | 117 | hr = RegReadStringArray(hkPendingFileRename, REGISTRY_PENDING_FILE_RENAME_VALUE, &rgsczRenames, &cRenames); |
| 112 | if (E_FILENOTFOUND == hr) | 118 | FileExitOnPathFailure(hr, fExists, "Failed to read pending file renames."); |
| 119 | |||
| 120 | if (!fExists) | ||
| 113 | { | 121 | { |
| 114 | ExitFunction1(hr = S_OK); | 122 | ExitFunction(); |
| 115 | } | 123 | } |
| 116 | FileExitOnFailure(hr, "Failed to read pending file renames."); | ||
| 117 | 124 | ||
| 118 | // The pending file renames array is pairs of source and target paths. We only care | 125 | // The pending file renames array is pairs of source and target paths. We only care |
| 119 | // about checking the source paths so skip the target paths (i += 2). | 126 | // about checking the source paths so skip the target paths (i += 2). |
