diff options
Diffstat (limited to '')
| -rw-r--r-- | src/libs/dutil/WixToolset.DUtil/butil.cpp | 80 |
1 files changed, 40 insertions, 40 deletions
diff --git a/src/libs/dutil/WixToolset.DUtil/butil.cpp b/src/libs/dutil/WixToolset.DUtil/butil.cpp index 4b6cd02a..87e58e36 100644 --- a/src/libs/dutil/WixToolset.DUtil/butil.cpp +++ b/src/libs/dutil/WixToolset.DUtil/butil.cpp | |||
| @@ -61,12 +61,12 @@ static HRESULT QueryRelatedBundlesForScopeAndBitness( | |||
| 61 | static HRESULT QueryPotentialRelatedBundle( | 61 | static HRESULT QueryPotentialRelatedBundle( |
| 62 | __in BUNDLE_QUERY_CONTEXT* pQueryContext, | 62 | __in BUNDLE_QUERY_CONTEXT* pQueryContext, |
| 63 | __in HKEY hkUninstallKey, | 63 | __in HKEY hkUninstallKey, |
| 64 | __in_z LPCWSTR wzRelatedBundleId, | 64 | __in_z LPCWSTR wzRelatedBundleCode, |
| 65 | __inout BUNDLE_QUERY_CALLBACK_RESULT* pResult | 65 | __inout BUNDLE_QUERY_CALLBACK_RESULT* pResult |
| 66 | ); | 66 | ); |
| 67 | static HRESULT DetermineRelationType( | 67 | static HRESULT DetermineRelationType( |
| 68 | __in BUNDLE_QUERY_CONTEXT* pQueryContext, | 68 | __in BUNDLE_QUERY_CONTEXT* pQueryContext, |
| 69 | __in HKEY hkBundleId, | 69 | __in HKEY hkBundleCode, |
| 70 | __out BUNDLE_RELATION_TYPE* pRelationType | 70 | __out BUNDLE_RELATION_TYPE* pRelationType |
| 71 | ); | 71 | ); |
| 72 | /******************************************************************** | 72 | /******************************************************************** |
| @@ -76,7 +76,7 @@ LocateAndQueryBundleValue - Locates the requested key for the bundle, | |||
| 76 | NOTE: caller is responsible for closing key | 76 | NOTE: caller is responsible for closing key |
| 77 | ********************************************************************/ | 77 | ********************************************************************/ |
| 78 | static HRESULT LocateAndQueryBundleValue( | 78 | static HRESULT LocateAndQueryBundleValue( |
| 79 | __in_z LPCWSTR wzBundleId, | 79 | __in_z LPCWSTR wzBundleCode, |
| 80 | __in_opt LPCWSTR wzSubKey, | 80 | __in_opt LPCWSTR wzSubKey, |
| 81 | __in LPCWSTR wzValueName, | 81 | __in LPCWSTR wzValueName, |
| 82 | __inout HKEY* phKey, | 82 | __inout HKEY* phKey, |
| @@ -91,7 +91,7 @@ static HRESULT CopyStringToBuffer( | |||
| 91 | 91 | ||
| 92 | 92 | ||
| 93 | DAPI_(HRESULT) BundleGetBundleInfo( | 93 | DAPI_(HRESULT) BundleGetBundleInfo( |
| 94 | __in_z LPCWSTR wzBundleId, | 94 | __in_z LPCWSTR wzBundleCode, |
| 95 | __in_z LPCWSTR wzAttribute, | 95 | __in_z LPCWSTR wzAttribute, |
| 96 | __deref_out_z LPWSTR* psczValue | 96 | __deref_out_z LPWSTR* psczValue |
| 97 | ) | 97 | ) |
| @@ -102,12 +102,12 @@ DAPI_(HRESULT) BundleGetBundleInfo( | |||
| 102 | DWORD dwType = 0; | 102 | DWORD dwType = 0; |
| 103 | DWORD dwValue = 0; | 103 | DWORD dwValue = 0; |
| 104 | 104 | ||
| 105 | if (!wzBundleId || !wzAttribute || !psczValue) | 105 | if (!wzBundleCode || !wzAttribute || !psczValue) |
| 106 | { | 106 | { |
| 107 | ButilExitWithRootFailure(hr, E_INVALIDARG, "An invalid parameter was passed to the function."); | 107 | ButilExitWithRootFailure(hr, E_INVALIDARG, "An invalid parameter was passed to the function."); |
| 108 | } | 108 | } |
| 109 | 109 | ||
| 110 | hr = LocateAndQueryBundleValue(wzBundleId, NULL, wzAttribute, &hkBundle, &dwType, &status); | 110 | hr = LocateAndQueryBundleValue(wzBundleCode, NULL, wzAttribute, &hkBundle, &dwType, &status); |
| 111 | ButilExitOnFailure(hr, "Failed to locate and query bundle attribute."); | 111 | ButilExitOnFailure(hr, "Failed to locate and query bundle attribute."); |
| 112 | 112 | ||
| 113 | switch (status) | 113 | switch (status) |
| @@ -144,7 +144,7 @@ LExit: | |||
| 144 | 144 | ||
| 145 | 145 | ||
| 146 | DAPI_(HRESULT) BundleGetBundleInfoFixed( | 146 | DAPI_(HRESULT) BundleGetBundleInfoFixed( |
| 147 | __in_z LPCWSTR wzBundleId, | 147 | __in_z LPCWSTR wzBundleCode, |
| 148 | __in_z LPCWSTR wzAttribute, | 148 | __in_z LPCWSTR wzAttribute, |
| 149 | __out_ecount_opt(*pcchValue) LPWSTR wzValue, | 149 | __out_ecount_opt(*pcchValue) LPWSTR wzValue, |
| 150 | __inout SIZE_T* pcchValue | 150 | __inout SIZE_T* pcchValue |
| @@ -158,7 +158,7 @@ DAPI_(HRESULT) BundleGetBundleInfoFixed( | |||
| 158 | ButilExitWithRootFailure(hr, E_INVALIDARG, "An invalid parameter was passed to the function."); | 158 | ButilExitWithRootFailure(hr, E_INVALIDARG, "An invalid parameter was passed to the function."); |
| 159 | } | 159 | } |
| 160 | 160 | ||
| 161 | hr = BundleGetBundleInfo(wzBundleId, wzAttribute, &sczValue); | 161 | hr = BundleGetBundleInfo(wzBundleCode, wzAttribute, &sczValue); |
| 162 | if (SUCCEEDED(hr)) | 162 | if (SUCCEEDED(hr)) |
| 163 | { | 163 | { |
| 164 | hr = CopyStringToBuffer(sczValue, wzValue, pcchValue); | 164 | hr = CopyStringToBuffer(sczValue, wzValue, pcchValue); |
| @@ -176,7 +176,7 @@ DAPI_(HRESULT) BundleEnumRelatedBundle( | |||
| 176 | __in BUNDLE_INSTALL_CONTEXT context, | 176 | __in BUNDLE_INSTALL_CONTEXT context, |
| 177 | __in REG_KEY_BITNESS kbKeyBitness, | 177 | __in REG_KEY_BITNESS kbKeyBitness, |
| 178 | __inout PDWORD pdwStartIndex, | 178 | __inout PDWORD pdwStartIndex, |
| 179 | __deref_out_z LPWSTR* psczBundleId | 179 | __deref_out_z LPWSTR* psczBundleCode |
| 180 | ) | 180 | ) |
| 181 | { | 181 | { |
| 182 | HRESULT hr = S_OK; | 182 | HRESULT hr = S_OK; |
| @@ -218,9 +218,9 @@ DAPI_(HRESULT) BundleEnumRelatedBundle( | |||
| 218 | fUpgradeCodeFound = TRUE; | 218 | fUpgradeCodeFound = TRUE; |
| 219 | *pdwStartIndex = dwIndex; | 219 | *pdwStartIndex = dwIndex; |
| 220 | 220 | ||
| 221 | if (psczBundleId) | 221 | if (psczBundleCode) |
| 222 | { | 222 | { |
| 223 | *psczBundleId = sczUninstallSubKey; | 223 | *psczBundleCode = sczUninstallSubKey; |
| 224 | sczUninstallSubKey = NULL; | 224 | sczUninstallSubKey = NULL; |
| 225 | } | 225 | } |
| 226 | 226 | ||
| @@ -246,7 +246,7 @@ DAPI_(HRESULT) BundleEnumRelatedBundleFixed( | |||
| 246 | __in BUNDLE_INSTALL_CONTEXT context, | 246 | __in BUNDLE_INSTALL_CONTEXT context, |
| 247 | __in REG_KEY_BITNESS kbKeyBitness, | 247 | __in REG_KEY_BITNESS kbKeyBitness, |
| 248 | __inout PDWORD pdwStartIndex, | 248 | __inout PDWORD pdwStartIndex, |
| 249 | __out_ecount(MAX_GUID_CHARS+1) LPWSTR wzBundleId | 249 | __out_ecount(MAX_GUID_CHARS+1) LPWSTR wzBundleCode |
| 250 | ) | 250 | ) |
| 251 | { | 251 | { |
| 252 | HRESULT hr = S_OK; | 252 | HRESULT hr = S_OK; |
| @@ -254,12 +254,12 @@ DAPI_(HRESULT) BundleEnumRelatedBundleFixed( | |||
| 254 | size_t cchValue = 0; | 254 | size_t cchValue = 0; |
| 255 | 255 | ||
| 256 | hr = BundleEnumRelatedBundle(wzUpgradeCode, context, kbKeyBitness, pdwStartIndex, &sczValue); | 256 | hr = BundleEnumRelatedBundle(wzUpgradeCode, context, kbKeyBitness, pdwStartIndex, &sczValue); |
| 257 | if (S_OK == hr && wzBundleId) | 257 | if (S_OK == hr && wzBundleCode) |
| 258 | { | 258 | { |
| 259 | hr = ::StringCchLengthW(sczValue, STRSAFE_MAX_CCH, &cchValue); | 259 | hr = ::StringCchLengthW(sczValue, STRSAFE_MAX_CCH, &cchValue); |
| 260 | ButilExitOnRootFailure(hr, "Failed to calculate length of string."); | 260 | ButilExitOnRootFailure(hr, "Failed to calculate length of string."); |
| 261 | 261 | ||
| 262 | hr = ::StringCchCopyNExW(wzBundleId, MAX_GUID_CHARS + 1, sczValue, cchValue, NULL, NULL, STRSAFE_FILL_BEHIND_NULL); | 262 | hr = ::StringCchCopyNExW(wzBundleCode, MAX_GUID_CHARS + 1, sczValue, cchValue, NULL, NULL, STRSAFE_FILL_BEHIND_NULL); |
| 263 | ButilExitOnRootFailure(hr, "Failed to copy the property value to the output buffer."); | 263 | ButilExitOnRootFailure(hr, "Failed to copy the property value to the output buffer."); |
| 264 | } | 264 | } |
| 265 | 265 | ||
| @@ -271,7 +271,7 @@ LExit: | |||
| 271 | 271 | ||
| 272 | 272 | ||
| 273 | DAPI_(HRESULT) BundleGetBundleVariable( | 273 | DAPI_(HRESULT) BundleGetBundleVariable( |
| 274 | __in_z LPCWSTR wzBundleId, | 274 | __in_z LPCWSTR wzBundleCode, |
| 275 | __in_z LPCWSTR wzVariable, | 275 | __in_z LPCWSTR wzVariable, |
| 276 | __deref_out_z LPWSTR* psczValue | 276 | __deref_out_z LPWSTR* psczValue |
| 277 | ) | 277 | ) |
| @@ -281,12 +281,12 @@ DAPI_(HRESULT) BundleGetBundleVariable( | |||
| 281 | INTERNAL_BUNDLE_STATUS status = INTERNAL_BUNDLE_STATUS_SUCCESS; | 281 | INTERNAL_BUNDLE_STATUS status = INTERNAL_BUNDLE_STATUS_SUCCESS; |
| 282 | DWORD dwType = 0; | 282 | DWORD dwType = 0; |
| 283 | 283 | ||
| 284 | if (!wzBundleId || !wzVariable || !psczValue) | 284 | if (!wzBundleCode || !wzVariable || !psczValue) |
| 285 | { | 285 | { |
| 286 | ButilExitWithRootFailure(hr, E_INVALIDARG, "An invalid parameter was passed to the function."); | 286 | ButilExitWithRootFailure(hr, E_INVALIDARG, "An invalid parameter was passed to the function."); |
| 287 | } | 287 | } |
| 288 | 288 | ||
| 289 | hr = LocateAndQueryBundleValue(wzBundleId, BUNDLE_REGISTRATION_REGISTRY_BUNDLE_VARIABLE_KEY, wzVariable, &hkBundle, &dwType, &status); | 289 | hr = LocateAndQueryBundleValue(wzBundleCode, BUNDLE_REGISTRATION_REGISTRY_BUNDLE_VARIABLE_KEY, wzVariable, &hkBundle, &dwType, &status); |
| 290 | ButilExitOnFailure(hr, "Failed to locate and query bundle variable."); | 290 | ButilExitOnFailure(hr, "Failed to locate and query bundle variable."); |
| 291 | 291 | ||
| 292 | switch (status) | 292 | switch (status) |
| @@ -319,7 +319,7 @@ LExit: | |||
| 319 | 319 | ||
| 320 | 320 | ||
| 321 | DAPI_(HRESULT) BundleGetBundleVariableFixed( | 321 | DAPI_(HRESULT) BundleGetBundleVariableFixed( |
| 322 | __in_z LPCWSTR wzBundleId, | 322 | __in_z LPCWSTR wzBundleCode, |
| 323 | __in_z LPCWSTR wzVariable, | 323 | __in_z LPCWSTR wzVariable, |
| 324 | __out_ecount_opt(*pcchValue) LPWSTR wzValue, | 324 | __out_ecount_opt(*pcchValue) LPWSTR wzValue, |
| 325 | __inout SIZE_T* pcchValue | 325 | __inout SIZE_T* pcchValue |
| @@ -333,7 +333,7 @@ DAPI_(HRESULT) BundleGetBundleVariableFixed( | |||
| 333 | ButilExitWithRootFailure(hr, E_INVALIDARG, "An invalid parameter was passed to the function."); | 333 | ButilExitWithRootFailure(hr, E_INVALIDARG, "An invalid parameter was passed to the function."); |
| 334 | } | 334 | } |
| 335 | 335 | ||
| 336 | hr = BundleGetBundleVariable(wzBundleId, wzVariable, &sczValue); | 336 | hr = BundleGetBundleVariable(wzBundleCode, wzVariable, &sczValue); |
| 337 | if (SUCCEEDED(hr)) | 337 | if (SUCCEEDED(hr)) |
| 338 | { | 338 | { |
| 339 | hr = CopyStringToBuffer(sczValue, wzValue, pcchValue); | 339 | hr = CopyStringToBuffer(sczValue, wzValue, pcchValue); |
| @@ -405,7 +405,7 @@ static HRESULT QueryRelatedBundlesForScopeAndBitness( | |||
| 405 | HKEY hkRoot = BUNDLE_INSTALL_CONTEXT_USER == pQueryContext->installContext ? HKEY_CURRENT_USER : HKEY_LOCAL_MACHINE; | 405 | HKEY hkRoot = BUNDLE_INSTALL_CONTEXT_USER == pQueryContext->installContext ? HKEY_CURRENT_USER : HKEY_LOCAL_MACHINE; |
| 406 | HKEY hkUninstallKey = NULL; | 406 | HKEY hkUninstallKey = NULL; |
| 407 | BOOL fExists = FALSE; | 407 | BOOL fExists = FALSE; |
| 408 | LPWSTR sczRelatedBundleId = NULL; | 408 | LPWSTR sczRelatedBundleCode = NULL; |
| 409 | BUNDLE_QUERY_CALLBACK_RESULT result = BUNDLE_QUERY_CALLBACK_RESULT_CONTINUE; | 409 | BUNDLE_QUERY_CALLBACK_RESULT result = BUNDLE_QUERY_CALLBACK_RESULT_CONTINUE; |
| 410 | 410 | ||
| 411 | hr = RegOpenEx(hkRoot, BUNDLE_REGISTRATION_REGISTRY_UNINSTALL_KEY, KEY_READ, pQueryContext->regBitness, &hkUninstallKey); | 411 | hr = RegOpenEx(hkRoot, BUNDLE_REGISTRATION_REGISTRY_UNINSTALL_KEY, KEY_READ, pQueryContext->regBitness, &hkUninstallKey); |
| @@ -418,7 +418,7 @@ static HRESULT QueryRelatedBundlesForScopeAndBitness( | |||
| 418 | 418 | ||
| 419 | for (DWORD dwIndex = 0; /* exit via break below */; ++dwIndex) | 419 | for (DWORD dwIndex = 0; /* exit via break below */; ++dwIndex) |
| 420 | { | 420 | { |
| 421 | hr = RegKeyEnum(hkUninstallKey, dwIndex, &sczRelatedBundleId); | 421 | hr = RegKeyEnum(hkUninstallKey, dwIndex, &sczRelatedBundleCode); |
| 422 | if (E_NOMOREITEMS == hr) | 422 | if (E_NOMOREITEMS == hr) |
| 423 | { | 423 | { |
| 424 | hr = S_OK; | 424 | hr = S_OK; |
| @@ -428,7 +428,7 @@ static HRESULT QueryRelatedBundlesForScopeAndBitness( | |||
| 428 | 428 | ||
| 429 | // Ignore failures here since we'll often find products that aren't actually | 429 | // Ignore failures here since we'll often find products that aren't actually |
| 430 | // related bundles (or even bundles at all). | 430 | // related bundles (or even bundles at all). |
| 431 | HRESULT hrRelatedBundle = QueryPotentialRelatedBundle(pQueryContext, hkUninstallKey, sczRelatedBundleId, &result); | 431 | HRESULT hrRelatedBundle = QueryPotentialRelatedBundle(pQueryContext, hkUninstallKey, sczRelatedBundleCode, &result); |
| 432 | if (SUCCEEDED(hrRelatedBundle) && BUNDLE_QUERY_CALLBACK_RESULT_CONTINUE != result) | 432 | if (SUCCEEDED(hrRelatedBundle) && BUNDLE_QUERY_CALLBACK_RESULT_CONTINUE != result) |
| 433 | { | 433 | { |
| 434 | ExitFunction1(hr = HRESULT_FROM_WIN32(ERROR_REQUEST_ABORTED)); | 434 | ExitFunction1(hr = HRESULT_FROM_WIN32(ERROR_REQUEST_ABORTED)); |
| @@ -436,7 +436,7 @@ static HRESULT QueryRelatedBundlesForScopeAndBitness( | |||
| 436 | } | 436 | } |
| 437 | 437 | ||
| 438 | LExit: | 438 | LExit: |
| 439 | ReleaseStr(sczRelatedBundleId); | 439 | ReleaseStr(sczRelatedBundleCode); |
| 440 | ReleaseRegKey(hkUninstallKey); | 440 | ReleaseRegKey(hkUninstallKey); |
| 441 | 441 | ||
| 442 | return hr; | 442 | return hr; |
| @@ -445,19 +445,19 @@ LExit: | |||
| 445 | static HRESULT QueryPotentialRelatedBundle( | 445 | static HRESULT QueryPotentialRelatedBundle( |
| 446 | __in BUNDLE_QUERY_CONTEXT* pQueryContext, | 446 | __in BUNDLE_QUERY_CONTEXT* pQueryContext, |
| 447 | __in HKEY hkUninstallKey, | 447 | __in HKEY hkUninstallKey, |
| 448 | __in_z LPCWSTR wzRelatedBundleId, | 448 | __in_z LPCWSTR wzRelatedBundleCode, |
| 449 | __inout BUNDLE_QUERY_CALLBACK_RESULT* pResult | 449 | __inout BUNDLE_QUERY_CALLBACK_RESULT* pResult |
| 450 | ) | 450 | ) |
| 451 | { | 451 | { |
| 452 | HRESULT hr = S_OK; | 452 | HRESULT hr = S_OK; |
| 453 | HKEY hkBundleId = NULL; | 453 | HKEY hkBundleCode = NULL; |
| 454 | BUNDLE_RELATION_TYPE relationType = BUNDLE_RELATION_NONE; | 454 | BUNDLE_RELATION_TYPE relationType = BUNDLE_RELATION_NONE; |
| 455 | BUNDLE_QUERY_RELATED_BUNDLE_RESULT bundle = { }; | 455 | BUNDLE_QUERY_RELATED_BUNDLE_RESULT bundle = { }; |
| 456 | 456 | ||
| 457 | hr = RegOpenEx(hkUninstallKey, wzRelatedBundleId, KEY_READ, pQueryContext->regBitness, &hkBundleId); | 457 | hr = RegOpenEx(hkUninstallKey, wzRelatedBundleCode, KEY_READ, pQueryContext->regBitness, &hkBundleCode); |
| 458 | ButilExitOnFailure(hr, "Failed to open uninstall key for potential related bundle: %ls", wzRelatedBundleId); | 458 | ButilExitOnFailure(hr, "Failed to open uninstall key for potential related bundle: %ls", wzRelatedBundleCode); |
| 459 | 459 | ||
| 460 | hr = DetermineRelationType(pQueryContext, hkBundleId, &relationType); | 460 | hr = DetermineRelationType(pQueryContext, hkBundleCode, &relationType); |
| 461 | if (FAILED(hr)) | 461 | if (FAILED(hr)) |
| 462 | { | 462 | { |
| 463 | ExitFunction(); | 463 | ExitFunction(); |
| @@ -465,21 +465,21 @@ static HRESULT QueryPotentialRelatedBundle( | |||
| 465 | 465 | ||
| 466 | bundle.installContext = pQueryContext->installContext; | 466 | bundle.installContext = pQueryContext->installContext; |
| 467 | bundle.regBitness = pQueryContext->regBitness; | 467 | bundle.regBitness = pQueryContext->regBitness; |
| 468 | bundle.wzBundleId = wzRelatedBundleId; | 468 | bundle.wzBundleCode = wzRelatedBundleCode; |
| 469 | bundle.relationType = relationType; | 469 | bundle.relationType = relationType; |
| 470 | bundle.hkBundle = hkBundleId; | 470 | bundle.hkBundle = hkBundleCode; |
| 471 | 471 | ||
| 472 | *pResult = pQueryContext->pfnCallback(&bundle, pQueryContext->pvContext); | 472 | *pResult = pQueryContext->pfnCallback(&bundle, pQueryContext->pvContext); |
| 473 | 473 | ||
| 474 | LExit: | 474 | LExit: |
| 475 | ReleaseRegKey(hkBundleId); | 475 | ReleaseRegKey(hkBundleCode); |
| 476 | 476 | ||
| 477 | return hr; | 477 | return hr; |
| 478 | } | 478 | } |
| 479 | 479 | ||
| 480 | static HRESULT DetermineRelationType( | 480 | static HRESULT DetermineRelationType( |
| 481 | __in BUNDLE_QUERY_CONTEXT* pQueryContext, | 481 | __in BUNDLE_QUERY_CONTEXT* pQueryContext, |
| 482 | __in HKEY hkBundleId, | 482 | __in HKEY hkBundleCode, |
| 483 | __out BUNDLE_RELATION_TYPE* pRelationType | 483 | __out BUNDLE_RELATION_TYPE* pRelationType |
| 484 | ) | 484 | ) |
| 485 | { | 485 | { |
| @@ -499,7 +499,7 @@ static HRESULT DetermineRelationType( | |||
| 499 | 499 | ||
| 500 | *pRelationType = BUNDLE_RELATION_NONE; | 500 | *pRelationType = BUNDLE_RELATION_NONE; |
| 501 | 501 | ||
| 502 | hr = RegReadStringArray(hkBundleId, BUNDLE_REGISTRATION_REGISTRY_BUNDLE_UPGRADE_CODE, &rgsczUpgradeCodes, &cUpgradeCodes); | 502 | hr = RegReadStringArray(hkBundleCode, BUNDLE_REGISTRATION_REGISTRY_BUNDLE_UPGRADE_CODE, &rgsczUpgradeCodes, &cUpgradeCodes); |
| 503 | if (HRESULT_FROM_WIN32(ERROR_INVALID_DATATYPE) == hr) | 503 | if (HRESULT_FROM_WIN32(ERROR_INVALID_DATATYPE) == hr) |
| 504 | { | 504 | { |
| 505 | TraceError(hr, "Failed to read upgrade codes as REG_MULTI_SZ. Trying again as REG_SZ in case of older bundles."); | 505 | TraceError(hr, "Failed to read upgrade codes as REG_MULTI_SZ. Trying again as REG_SZ in case of older bundles."); |
| @@ -507,7 +507,7 @@ static HRESULT DetermineRelationType( | |||
| 507 | rgsczUpgradeCodes = reinterpret_cast<LPWSTR*>(MemAlloc(sizeof(LPWSTR), TRUE)); | 507 | rgsczUpgradeCodes = reinterpret_cast<LPWSTR*>(MemAlloc(sizeof(LPWSTR), TRUE)); |
| 508 | ButilExitOnNull(rgsczUpgradeCodes, hr, E_OUTOFMEMORY, "Failed to allocate list for a single upgrade code from older bundle."); | 508 | ButilExitOnNull(rgsczUpgradeCodes, hr, E_OUTOFMEMORY, "Failed to allocate list for a single upgrade code from older bundle."); |
| 509 | 509 | ||
| 510 | hr = RegReadString(hkBundleId, BUNDLE_REGISTRATION_REGISTRY_BUNDLE_UPGRADE_CODE, &rgsczUpgradeCodes[0]); | 510 | hr = RegReadString(hkBundleCode, BUNDLE_REGISTRATION_REGISTRY_BUNDLE_UPGRADE_CODE, &rgsczUpgradeCodes[0]); |
| 511 | if (SUCCEEDED(hr)) | 511 | if (SUCCEEDED(hr)) |
| 512 | { | 512 | { |
| 513 | cUpgradeCodes = 1; | 513 | cUpgradeCodes = 1; |
| @@ -581,7 +581,7 @@ static HRESULT DetermineRelationType( | |||
| 581 | } | 581 | } |
| 582 | 582 | ||
| 583 | // Compare addon codes. | 583 | // Compare addon codes. |
| 584 | hr = RegReadStringArray(hkBundleId, BUNDLE_REGISTRATION_REGISTRY_BUNDLE_ADDON_CODE, &rgsczAddonCodes, &cAddonCodes); | 584 | hr = RegReadStringArray(hkBundleCode, BUNDLE_REGISTRATION_REGISTRY_BUNDLE_ADDON_CODE, &rgsczAddonCodes, &cAddonCodes); |
| 585 | if (SUCCEEDED(hr)) | 585 | if (SUCCEEDED(hr)) |
| 586 | { | 586 | { |
| 587 | hr = DictCreateStringListFromArray(&sdAddonCodes, rgsczAddonCodes, cAddonCodes, DICT_FLAG_CASEINSENSITIVE); | 587 | hr = DictCreateStringListFromArray(&sdAddonCodes, rgsczAddonCodes, cAddonCodes, DICT_FLAG_CASEINSENSITIVE); |
| @@ -620,7 +620,7 @@ static HRESULT DetermineRelationType( | |||
| 620 | } | 620 | } |
| 621 | 621 | ||
| 622 | // Compare patch codes. | 622 | // Compare patch codes. |
| 623 | hr = RegReadStringArray(hkBundleId, BUNDLE_REGISTRATION_REGISTRY_BUNDLE_PATCH_CODE, &rgsczPatchCodes, &cPatchCodes); | 623 | hr = RegReadStringArray(hkBundleCode, BUNDLE_REGISTRATION_REGISTRY_BUNDLE_PATCH_CODE, &rgsczPatchCodes, &cPatchCodes); |
| 624 | if (SUCCEEDED(hr)) | 624 | if (SUCCEEDED(hr)) |
| 625 | { | 625 | { |
| 626 | hr = DictCreateStringListFromArray(&sdPatchCodes, rgsczPatchCodes, cPatchCodes, DICT_FLAG_CASEINSENSITIVE); | 626 | hr = DictCreateStringListFromArray(&sdPatchCodes, rgsczPatchCodes, cPatchCodes, DICT_FLAG_CASEINSENSITIVE); |
| @@ -659,7 +659,7 @@ static HRESULT DetermineRelationType( | |||
| 659 | } | 659 | } |
| 660 | 660 | ||
| 661 | // Compare detect codes. | 661 | // Compare detect codes. |
| 662 | hr = RegReadStringArray(hkBundleId, BUNDLE_REGISTRATION_REGISTRY_BUNDLE_DETECT_CODE, &rgsczDetectCodes, &cDetectCodes); | 662 | hr = RegReadStringArray(hkBundleCode, BUNDLE_REGISTRATION_REGISTRY_BUNDLE_DETECT_CODE, &rgsczDetectCodes, &cDetectCodes); |
| 663 | if (SUCCEEDED(hr)) | 663 | if (SUCCEEDED(hr)) |
| 664 | { | 664 | { |
| 665 | hr = DictCreateStringListFromArray(&sdDetectCodes, rgsczDetectCodes, cDetectCodes, DICT_FLAG_CASEINSENSITIVE); | 665 | hr = DictCreateStringListFromArray(&sdDetectCodes, rgsczDetectCodes, cDetectCodes, DICT_FLAG_CASEINSENSITIVE); |
| @@ -730,7 +730,7 @@ LExit: | |||
| 730 | } | 730 | } |
| 731 | 731 | ||
| 732 | static HRESULT LocateAndQueryBundleValue( | 732 | static HRESULT LocateAndQueryBundleValue( |
| 733 | __in_z LPCWSTR wzBundleId, | 733 | __in_z LPCWSTR wzBundleCode, |
| 734 | __in_opt LPCWSTR wzSubKey, | 734 | __in_opt LPCWSTR wzSubKey, |
| 735 | __in LPCWSTR wzValueName, | 735 | __in LPCWSTR wzValueName, |
| 736 | __inout HKEY* phKey, | 736 | __inout HKEY* phKey, |
| @@ -746,11 +746,11 @@ static HRESULT LocateAndQueryBundleValue( | |||
| 746 | 746 | ||
| 747 | if (wzSubKey) | 747 | if (wzSubKey) |
| 748 | { | 748 | { |
| 749 | hr = StrAllocFormatted(&sczKeypath, L"%ls\\%ls\\%ls", BUNDLE_REGISTRATION_REGISTRY_UNINSTALL_KEY, wzBundleId, wzSubKey); | 749 | hr = StrAllocFormatted(&sczKeypath, L"%ls\\%ls\\%ls", BUNDLE_REGISTRATION_REGISTRY_UNINSTALL_KEY, wzBundleCode, wzSubKey); |
| 750 | } | 750 | } |
| 751 | else | 751 | else |
| 752 | { | 752 | { |
| 753 | hr = StrAllocFormatted(&sczKeypath, L"%ls\\%ls", BUNDLE_REGISTRATION_REGISTRY_UNINSTALL_KEY, wzBundleId); | 753 | hr = StrAllocFormatted(&sczKeypath, L"%ls\\%ls", BUNDLE_REGISTRATION_REGISTRY_UNINSTALL_KEY, wzBundleCode); |
| 754 | } | 754 | } |
| 755 | ButilExitOnFailure(hr, "Failed to allocate bundle uninstall key path."); | 755 | ButilExitOnFailure(hr, "Failed to allocate bundle uninstall key path."); |
| 756 | 756 | ||
