aboutsummaryrefslogtreecommitdiff
path: root/src/dutil/wiutil.cpp
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/dutil/wiutil.cpp18
1 files changed, 15 insertions, 3 deletions
diff --git a/src/dutil/wiutil.cpp b/src/dutil/wiutil.cpp
index ffbfe85a..f1984266 100644
--- a/src/dutil/wiutil.cpp
+++ b/src/dutil/wiutil.cpp
@@ -4,6 +4,7 @@
4 4
5 5
6// Exit macros 6// Exit macros
7#define WiuExitTrace(x, s, ...) ExitTraceSource(DUTIL_SOURCE_WIUTIL, x, s, __VA_ARGS__)
7#define WiuExitOnLastError(x, s, ...) ExitOnLastErrorSource(DUTIL_SOURCE_WIUTIL, x, s, __VA_ARGS__) 8#define WiuExitOnLastError(x, s, ...) ExitOnLastErrorSource(DUTIL_SOURCE_WIUTIL, x, s, __VA_ARGS__)
8#define WiuExitOnLastErrorDebugTrace(x, s, ...) ExitOnLastErrorDebugTraceSource(DUTIL_SOURCE_WIUTIL, x, s, __VA_ARGS__) 9#define WiuExitOnLastErrorDebugTrace(x, s, ...) ExitOnLastErrorDebugTraceSource(DUTIL_SOURCE_WIUTIL, x, s, __VA_ARGS__)
9#define WiuExitWithLastError(x, s, ...) ExitWithLastErrorSource(DUTIL_SOURCE_WIUTIL, x, s, __VA_ARGS__) 10#define WiuExitWithLastError(x, s, ...) ExitWithLastErrorSource(DUTIL_SOURCE_WIUTIL, x, s, __VA_ARGS__)
@@ -692,12 +693,23 @@ extern "C" HRESULT DAPI WiuEnumRelatedProductCodes(
692 693
693 if (fReturnHighestVersionOnly) 694 if (fReturnHighestVersionOnly)
694 { 695 {
695 // get the version 696 // try to get the version but if the product registration is broken
697 // (for whatever reason), skip this product
696 hr = WiuGetProductInfo(wzCurrentProductCode, L"VersionString", &sczInstalledVersion); 698 hr = WiuGetProductInfo(wzCurrentProductCode, L"VersionString", &sczInstalledVersion);
697 WiuExitOnFailure(hr, "Failed to get version for product code: %ls", wzCurrentProductCode); 699 if (FAILED(hr))
700 {
701 WiuExitTrace(hr, "Could not get product version for product code: %ls, skipping...", wzCurrentProductCode);
702 continue;
703 }
698 704
705 // try to parse the product version but if it is corrupt (for whatever
706 // reason), skip it
699 hr = FileVersionFromStringEx(sczInstalledVersion, 0, &qwCurrentVersion); 707 hr = FileVersionFromStringEx(sczInstalledVersion, 0, &qwCurrentVersion);
700 WiuExitOnFailure(hr, "Failed to convert version: %ls to DWORD64 for product code: %ls", sczInstalledVersion, wzCurrentProductCode); 708 if (FAILED(hr))
709 {
710 WiuExitTrace(hr, "Could not convert version: %ls to DWORD64 for product code: %ls, skipping...", sczInstalledVersion, wzCurrentProductCode);
711 continue;
712 }
701 713
702 // if this is the first product found then it is the highest version (for now) 714 // if this is the first product found then it is the highest version (for now)
703 if (0 == *pcRelatedProducts) 715 if (0 == *pcRelatedProducts)