diff options
| author | Sean Hall <r.sean.hall@gmail.com> | 2021-05-13 20:46:08 -0500 |
|---|---|---|
| committer | Sean Hall <r.sean.hall@gmail.com> | 2021-05-19 12:15:13 -0500 |
| commit | 2c085b3aa89150fff9a0ea6df2cde0ce56e3066d (patch) | |
| tree | d5c1cfb9e6fa1cc1270c813d28a6ca3ee4f84b0b /src/burn/engine/registration.cpp | |
| parent | f88ffc7f5c1710b5e106d7e6aea7f1e32fb15dfe (diff) | |
| download | wix-2c085b3aa89150fff9a0ea6df2cde0ce56e3066d.tar.gz wix-2c085b3aa89150fff9a0ea6df2cde0ce56e3066d.tar.bz2 wix-2c085b3aa89150fff9a0ea6df2cde0ce56e3066d.zip | |
Add InProgressDisplayName for bundles.
#6296
Diffstat (limited to 'src/burn/engine/registration.cpp')
| -rw-r--r-- | src/burn/engine/registration.cpp | 140 |
1 files changed, 105 insertions, 35 deletions
diff --git a/src/burn/engine/registration.cpp b/src/burn/engine/registration.cpp index 5b246112..eed1fee2 100644 --- a/src/burn/engine/registration.cpp +++ b/src/burn/engine/registration.cpp | |||
| @@ -46,12 +46,23 @@ static HRESULT SetPaths( | |||
| 46 | static HRESULT GetBundleManufacturer( | 46 | static HRESULT GetBundleManufacturer( |
| 47 | __in BURN_REGISTRATION* pRegistration, | 47 | __in BURN_REGISTRATION* pRegistration, |
| 48 | __in BURN_VARIABLES* pVariables, | 48 | __in BURN_VARIABLES* pVariables, |
| 49 | __out LPWSTR* psczBundleManufacturer | 49 | __out_z LPWSTR* psczBundleManufacturer |
| 50 | ); | ||
| 51 | static HRESULT GetBundleInProgressName( | ||
| 52 | __in BURN_REGISTRATION* pRegistration, | ||
| 53 | __in BURN_VARIABLES* pVariables, | ||
| 54 | __out_z LPWSTR* psczBundleName | ||
| 50 | ); | 55 | ); |
| 51 | static HRESULT GetBundleName( | 56 | static HRESULT GetBundleName( |
| 52 | __in BURN_REGISTRATION* pRegistration, | 57 | __in BURN_REGISTRATION* pRegistration, |
| 53 | __in BURN_VARIABLES* pVariables, | 58 | __in BURN_VARIABLES* pVariables, |
| 54 | __out LPWSTR* psczBundleName | 59 | __out_z LPWSTR* psczBundleName |
| 60 | ); | ||
| 61 | static HRESULT EnsureRegistrationVariable( | ||
| 62 | __in BURN_VARIABLES* pVariables, | ||
| 63 | __in_z LPCWSTR wzVariable, | ||
| 64 | __in_z LPCWSTR wzDefaultValue, | ||
| 65 | __out_z LPWSTR* psczValue | ||
| 55 | ); | 66 | ); |
| 56 | static HRESULT UpdateResumeMode( | 67 | static HRESULT UpdateResumeMode( |
| 57 | __in BURN_REGISTRATION* pRegistration, | 68 | __in BURN_REGISTRATION* pRegistration, |
| @@ -91,7 +102,8 @@ static HRESULT RegWriteStringVariable( | |||
| 91 | static HRESULT UpdateBundleNameRegistration( | 102 | static HRESULT UpdateBundleNameRegistration( |
| 92 | __in BURN_REGISTRATION* pRegistration, | 103 | __in BURN_REGISTRATION* pRegistration, |
| 93 | __in BURN_VARIABLES* pVariables, | 104 | __in BURN_VARIABLES* pVariables, |
| 94 | __in HKEY hkRegistration | 105 | __in HKEY hkRegistration, |
| 106 | __in BOOL fInProgressRegistration | ||
| 95 | ); | 107 | ); |
| 96 | static BOOL IsWuRebootPending(); | 108 | static BOOL IsWuRebootPending(); |
| 97 | static BOOL IsBundleRebootPending( | 109 | static BOOL IsBundleRebootPending( |
| @@ -176,6 +188,13 @@ extern "C" HRESULT RegistrationParseFromXml( | |||
| 176 | ExitOnFailure(hr, "Failed to get @DisplayName."); | 188 | ExitOnFailure(hr, "Failed to get @DisplayName."); |
| 177 | } | 189 | } |
| 178 | 190 | ||
| 191 | // @InProgressDisplayName | ||
| 192 | hr = XmlGetAttributeEx(pixnArpNode, L"InProgressDisplayName", &pRegistration->sczInProgressDisplayName); | ||
| 193 | if (E_NOTFOUND != hr) | ||
| 194 | { | ||
| 195 | ExitOnFailure(hr, "Failed to get @InProgressDisplayName."); | ||
| 196 | } | ||
| 197 | |||
| 179 | // @DisplayVersion | 198 | // @DisplayVersion |
| 180 | hr = XmlGetAttributeEx(pixnArpNode, L"DisplayVersion", &pRegistration->sczDisplayVersion); | 199 | hr = XmlGetAttributeEx(pixnArpNode, L"DisplayVersion", &pRegistration->sczDisplayVersion); |
| 181 | if (E_NOTFOUND != hr) | 200 | if (E_NOTFOUND != hr) |
| @@ -372,6 +391,7 @@ extern "C" void RegistrationUninitialize( | |||
| 372 | ReleaseStr(pRegistration->sczStateFile); | 391 | ReleaseStr(pRegistration->sczStateFile); |
| 373 | 392 | ||
| 374 | ReleaseStr(pRegistration->sczDisplayName); | 393 | ReleaseStr(pRegistration->sczDisplayName); |
| 394 | ReleaseStr(pRegistration->sczInProgressDisplayName); | ||
| 375 | ReleaseStr(pRegistration->sczDisplayVersion); | 395 | ReleaseStr(pRegistration->sczDisplayVersion); |
| 376 | ReleaseStr(pRegistration->sczPublisher); | 396 | ReleaseStr(pRegistration->sczPublisher); |
| 377 | ReleaseStr(pRegistration->sczHelpLink); | 397 | ReleaseStr(pRegistration->sczHelpLink); |
| @@ -421,8 +441,7 @@ extern "C" HRESULT RegistrationSetVariables( | |||
| 421 | ) | 441 | ) |
| 422 | { | 442 | { |
| 423 | HRESULT hr = S_OK; | 443 | HRESULT hr = S_OK; |
| 424 | LPWSTR sczBundleManufacturer = NULL; | 444 | LPWSTR scz = NULL; |
| 425 | LPWSTR sczBundleName = NULL; | ||
| 426 | 445 | ||
| 427 | if (pRegistration->fInstalled) | 446 | if (pRegistration->fInstalled) |
| 428 | { | 447 | { |
| @@ -431,10 +450,13 @@ extern "C" HRESULT RegistrationSetVariables( | |||
| 431 | } | 450 | } |
| 432 | 451 | ||
| 433 | // Ensure the registration bundle name is updated. | 452 | // Ensure the registration bundle name is updated. |
| 434 | hr = GetBundleName(pRegistration, pVariables, &sczBundleName); | 453 | hr = GetBundleInProgressName(pRegistration, pVariables, &scz); |
| 435 | ExitOnFailure(hr, "Failed to initialize bundle name."); | 454 | ExitOnFailure(hr, "Failed to initialize bundle name."); |
| 436 | 455 | ||
| 437 | hr = GetBundleManufacturer(pRegistration, pVariables, &sczBundleName); | 456 | hr = GetBundleName(pRegistration, pVariables, &scz); |
| 457 | ExitOnFailure(hr, "Failed to initialize bundle name."); | ||
| 458 | |||
| 459 | hr = GetBundleManufacturer(pRegistration, pVariables, &scz); | ||
| 438 | ExitOnFailure(hr, "Failed to initialize bundle manufacturer."); | 460 | ExitOnFailure(hr, "Failed to initialize bundle manufacturer."); |
| 439 | 461 | ||
| 440 | if (pRegistration->sczActiveParent && *pRegistration->sczActiveParent) | 462 | if (pRegistration->sczActiveParent && *pRegistration->sczActiveParent) |
| @@ -456,8 +478,7 @@ extern "C" HRESULT RegistrationSetVariables( | |||
| 456 | ExitOnFailure(hr, "Failed to overwrite the bundle reboot-pending built-in variable."); | 478 | ExitOnFailure(hr, "Failed to overwrite the bundle reboot-pending built-in variable."); |
| 457 | 479 | ||
| 458 | LExit: | 480 | LExit: |
| 459 | ReleaseStr(sczBundleManufacturer); | 481 | ReleaseStr(scz); |
| 460 | ReleaseStr(sczBundleName); | ||
| 461 | 482 | ||
| 462 | return hr; | 483 | return hr; |
| 463 | } | 484 | } |
| @@ -595,7 +616,8 @@ extern "C" HRESULT RegistrationSessionBegin( | |||
| 595 | __in BURN_VARIABLES* pVariables, | 616 | __in BURN_VARIABLES* pVariables, |
| 596 | __in DWORD dwRegistrationOptions, | 617 | __in DWORD dwRegistrationOptions, |
| 597 | __in BURN_DEPENDENCY_REGISTRATION_ACTION dependencyRegistrationAction, | 618 | __in BURN_DEPENDENCY_REGISTRATION_ACTION dependencyRegistrationAction, |
| 598 | __in DWORD64 qwEstimatedSize | 619 | __in DWORD64 qwEstimatedSize, |
| 620 | __in BOOTSTRAPPER_REGISTRATION_TYPE registrationType | ||
| 599 | ) | 621 | ) |
| 600 | { | 622 | { |
| 601 | HRESULT hr = S_OK; | 623 | HRESULT hr = S_OK; |
| @@ -603,6 +625,8 @@ extern "C" HRESULT RegistrationSessionBegin( | |||
| 603 | HKEY hkRegistration = NULL; | 625 | HKEY hkRegistration = NULL; |
| 604 | LPWSTR sczPublisher = NULL; | 626 | LPWSTR sczPublisher = NULL; |
| 605 | 627 | ||
| 628 | AssertSz(BOOTSTRAPPER_REGISTRATION_TYPE_NONE != registrationType, "Registration type can't be NONE"); | ||
| 629 | |||
| 606 | LogId(REPORT_VERBOSE, MSG_SESSION_BEGIN, pRegistration->sczRegistrationKey, dwRegistrationOptions, LoggingBoolToString(pRegistration->fDisableResume)); | 630 | LogId(REPORT_VERBOSE, MSG_SESSION_BEGIN, pRegistration->sczRegistrationKey, dwRegistrationOptions, LoggingBoolToString(pRegistration->fDisableResume)); |
| 607 | 631 | ||
| 608 | // Cache bundle executable. | 632 | // Cache bundle executable. |
| @@ -668,7 +692,7 @@ extern "C" HRESULT RegistrationSessionBegin( | |||
| 668 | ExitOnFailure(hr, "Failed to write %ls value.", REGISTRY_BUNDLE_DISPLAY_ICON); | 692 | ExitOnFailure(hr, "Failed to write %ls value.", REGISTRY_BUNDLE_DISPLAY_ICON); |
| 669 | 693 | ||
| 670 | // update display name | 694 | // update display name |
| 671 | hr = UpdateBundleNameRegistration(pRegistration, pVariables, hkRegistration); | 695 | hr = UpdateBundleNameRegistration(pRegistration, pVariables, hkRegistration, BOOTSTRAPPER_REGISTRATION_TYPE_INPROGRESS == registrationType); |
| 672 | ExitOnFailure(hr, "Failed to update name and publisher."); | 696 | ExitOnFailure(hr, "Failed to update name and publisher."); |
| 673 | 697 | ||
| 674 | // DisplayVersion: provided by UI | 698 | // DisplayVersion: provided by UI |
| @@ -841,12 +865,15 @@ LExit: | |||
| 841 | *******************************************************************/ | 865 | *******************************************************************/ |
| 842 | extern "C" HRESULT RegistrationSessionResume( | 866 | extern "C" HRESULT RegistrationSessionResume( |
| 843 | __in BURN_REGISTRATION* pRegistration, | 867 | __in BURN_REGISTRATION* pRegistration, |
| 844 | __in BURN_VARIABLES* pVariables | 868 | __in BURN_VARIABLES* pVariables, |
| 869 | __in BOOTSTRAPPER_REGISTRATION_TYPE registrationType | ||
| 845 | ) | 870 | ) |
| 846 | { | 871 | { |
| 847 | HRESULT hr = S_OK; | 872 | HRESULT hr = S_OK; |
| 848 | HKEY hkRegistration = NULL; | 873 | HKEY hkRegistration = NULL; |
| 849 | 874 | ||
| 875 | AssertSz(BOOTSTRAPPER_REGISTRATION_TYPE_NONE != registrationType, "Registration type can't be NONE"); | ||
| 876 | |||
| 850 | // open registration key | 877 | // open registration key |
| 851 | hr = RegOpen(pRegistration->hkRoot, pRegistration->sczRegistrationKey, KEY_WRITE, &hkRegistration); | 878 | hr = RegOpen(pRegistration->hkRoot, pRegistration->sczRegistrationKey, KEY_WRITE, &hkRegistration); |
| 852 | ExitOnFailure(hr, "Failed to open registration key."); | 879 | ExitOnFailure(hr, "Failed to open registration key."); |
| @@ -856,7 +883,7 @@ extern "C" HRESULT RegistrationSessionResume( | |||
| 856 | ExitOnFailure(hr, "Failed to update resume mode."); | 883 | ExitOnFailure(hr, "Failed to update resume mode."); |
| 857 | 884 | ||
| 858 | // update display name | 885 | // update display name |
| 859 | hr = UpdateBundleNameRegistration(pRegistration, pVariables, hkRegistration); | 886 | hr = UpdateBundleNameRegistration(pRegistration, pVariables, hkRegistration, BOOTSTRAPPER_REGISTRATION_TYPE_INPROGRESS == registrationType); |
| 860 | ExitOnFailure(hr, "Failed to update name and publisher."); | 887 | ExitOnFailure(hr, "Failed to update name and publisher."); |
| 861 | 888 | ||
| 862 | LExit: | 889 | LExit: |
| @@ -876,7 +903,8 @@ extern "C" HRESULT RegistrationSessionEnd( | |||
| 876 | __in BURN_PACKAGES* pPackages, | 903 | __in BURN_PACKAGES* pPackages, |
| 877 | __in BURN_RESUME_MODE resumeMode, | 904 | __in BURN_RESUME_MODE resumeMode, |
| 878 | __in BOOTSTRAPPER_APPLY_RESTART restart, | 905 | __in BOOTSTRAPPER_APPLY_RESTART restart, |
| 879 | __in BURN_DEPENDENCY_REGISTRATION_ACTION dependencyRegistrationAction | 906 | __in BURN_DEPENDENCY_REGISTRATION_ACTION dependencyRegistrationAction, |
| 907 | __in BOOTSTRAPPER_REGISTRATION_TYPE registrationType | ||
| 880 | ) | 908 | ) |
| 881 | { | 909 | { |
| 882 | HRESULT hr = S_OK; | 910 | HRESULT hr = S_OK; |
| @@ -884,8 +912,6 @@ extern "C" HRESULT RegistrationSessionEnd( | |||
| 884 | HKEY hkRebootRequired = NULL; | 912 | HKEY hkRebootRequired = NULL; |
| 885 | HKEY hkRegistration = NULL; | 913 | HKEY hkRegistration = NULL; |
| 886 | 914 | ||
| 887 | LogId(REPORT_STANDARD, MSG_SESSION_END, pRegistration->sczRegistrationKey, LoggingResumeModeToString(resumeMode), LoggingRestartToString(restart), LoggingBoolToString(pRegistration->fDisableResume)); | ||
| 888 | |||
| 889 | // If a restart is required for any reason, write a volatile registry key to track of | 915 | // If a restart is required for any reason, write a volatile registry key to track of |
| 890 | // of that fact until the reboot has taken place. | 916 | // of that fact until the reboot has taken place. |
| 891 | if (BOOTSTRAPPER_APPLY_RESTART_NONE != restart) | 917 | if (BOOTSTRAPPER_APPLY_RESTART_NONE != restart) |
| @@ -910,6 +936,8 @@ extern "C" HRESULT RegistrationSessionEnd( | |||
| 910 | // If no resume mode, then remove the bundle registration. | 936 | // If no resume mode, then remove the bundle registration. |
| 911 | if (BURN_RESUME_MODE_NONE == resumeMode) | 937 | if (BURN_RESUME_MODE_NONE == resumeMode) |
| 912 | { | 938 | { |
| 939 | AssertSz(BOOTSTRAPPER_REGISTRATION_TYPE_NONE == registrationType, "Registration type must be NONE if resume mode is NONE"); | ||
| 940 | |||
| 913 | // If we just registered the bundle dependency but something went wrong and caused us to not | 941 | // If we just registered the bundle dependency but something went wrong and caused us to not |
| 914 | // keep the bundle registration (like rollback) or we are supposed to unregister the bundle | 942 | // keep the bundle registration (like rollback) or we are supposed to unregister the bundle |
| 915 | // dependency when unregistering the bundle, do so. | 943 | // dependency when unregistering the bundle, do so. |
| @@ -939,9 +967,15 @@ extern "C" HRESULT RegistrationSessionEnd( | |||
| 939 | } | 967 | } |
| 940 | else // the mode needs to be updated so open the registration key. | 968 | else // the mode needs to be updated so open the registration key. |
| 941 | { | 969 | { |
| 970 | AssertSz(BOOTSTRAPPER_REGISTRATION_TYPE_NONE != registrationType, "Registration type must not be NONE if resume mode is not NONE"); | ||
| 971 | |||
| 942 | // Open registration key. | 972 | // Open registration key. |
| 943 | hr = RegOpen(pRegistration->hkRoot, pRegistration->sczRegistrationKey, KEY_WRITE, &hkRegistration); | 973 | hr = RegOpen(pRegistration->hkRoot, pRegistration->sczRegistrationKey, KEY_WRITE, &hkRegistration); |
| 944 | ExitOnFailure(hr, "Failed to open registration key."); | 974 | ExitOnFailure(hr, "Failed to open registration key."); |
| 975 | |||
| 976 | // update display name | ||
| 977 | hr = UpdateBundleNameRegistration(pRegistration, pVariables, hkRegistration, BOOTSTRAPPER_REGISTRATION_TYPE_INPROGRESS == registrationType); | ||
| 978 | ExitOnFailure(hr, "Failed to update name and publisher."); | ||
| 945 | } | 979 | } |
| 946 | 980 | ||
| 947 | // Update resume mode. | 981 | // Update resume mode. |
| @@ -1133,44 +1167,69 @@ LExit: | |||
| 1133 | static HRESULT GetBundleManufacturer( | 1167 | static HRESULT GetBundleManufacturer( |
| 1134 | __in BURN_REGISTRATION* pRegistration, | 1168 | __in BURN_REGISTRATION* pRegistration, |
| 1135 | __in BURN_VARIABLES* pVariables, | 1169 | __in BURN_VARIABLES* pVariables, |
| 1136 | __out LPWSTR* psczBundleManufacturer | 1170 | __out_z LPWSTR* psczBundleManufacturer |
| 1137 | ) | 1171 | ) |
| 1138 | { | 1172 | { |
| 1139 | HRESULT hr = S_OK; | 1173 | HRESULT hr = S_OK; |
| 1140 | LPCWSTR wzPublisher = pRegistration->sczPublisher ? pRegistration->sczPublisher : L""; | 1174 | LPCWSTR wzPublisher = pRegistration->sczPublisher ? pRegistration->sczPublisher : L""; |
| 1141 | 1175 | ||
| 1142 | hr = VariableGetString(pVariables, BURN_BUNDLE_MANUFACTURER, psczBundleManufacturer); | 1176 | hr = EnsureRegistrationVariable(pVariables, BURN_BUNDLE_MANUFACTURER, wzPublisher, psczBundleManufacturer); |
| 1143 | if (E_NOTFOUND == hr) | ||
| 1144 | { | ||
| 1145 | hr = VariableSetString(pVariables, BURN_BUNDLE_MANUFACTURER, wzPublisher, FALSE, FALSE); | ||
| 1146 | ExitOnFailure(hr, "Failed to set bundle manufacturer."); | ||
| 1147 | |||
| 1148 | hr = StrAllocString(psczBundleManufacturer, wzPublisher, 0); | ||
| 1149 | } | ||
| 1150 | ExitOnFailure(hr, "Failed to get bundle manufacturer."); | 1177 | ExitOnFailure(hr, "Failed to get bundle manufacturer."); |
| 1151 | 1178 | ||
| 1152 | LExit: | 1179 | LExit: |
| 1153 | return hr; | 1180 | return hr; |
| 1154 | } | 1181 | } |
| 1155 | 1182 | ||
| 1183 | static HRESULT GetBundleInProgressName( | ||
| 1184 | __in BURN_REGISTRATION* pRegistration, | ||
| 1185 | __in BURN_VARIABLES* pVariables, | ||
| 1186 | __out_z LPWSTR* psczInProgressBundleName | ||
| 1187 | ) | ||
| 1188 | { | ||
| 1189 | HRESULT hr = S_OK; | ||
| 1190 | LPCWSTR wzInProgressDisplayName = pRegistration->sczInProgressDisplayName ? pRegistration->sczInProgressDisplayName : L""; | ||
| 1191 | |||
| 1192 | hr = EnsureRegistrationVariable(pVariables, BURN_BUNDLE_INPROGRESS_NAME, wzInProgressDisplayName, psczInProgressBundleName); | ||
| 1193 | ExitOnFailure(hr, "Failed to ensure in-progress bundle name."); | ||
| 1194 | |||
| 1195 | LExit: | ||
| 1196 | return hr; | ||
| 1197 | } | ||
| 1198 | |||
| 1156 | static HRESULT GetBundleName( | 1199 | static HRESULT GetBundleName( |
| 1157 | __in BURN_REGISTRATION* pRegistration, | 1200 | __in BURN_REGISTRATION* pRegistration, |
| 1158 | __in BURN_VARIABLES* pVariables, | 1201 | __in BURN_VARIABLES* pVariables, |
| 1159 | __out LPWSTR* psczBundleName | 1202 | __out_z LPWSTR* psczBundleName |
| 1160 | ) | 1203 | ) |
| 1161 | { | 1204 | { |
| 1162 | HRESULT hr = S_OK; | 1205 | HRESULT hr = S_OK; |
| 1163 | LPCWSTR wzDisplayName = pRegistration->sczDisplayName ? pRegistration->sczDisplayName : L""; | 1206 | LPCWSTR wzDisplayName = pRegistration->sczDisplayName ? pRegistration->sczDisplayName : L""; |
| 1164 | 1207 | ||
| 1165 | hr = VariableGetString(pVariables, BURN_BUNDLE_NAME, psczBundleName); | 1208 | hr = EnsureRegistrationVariable(pVariables, BURN_BUNDLE_NAME, wzDisplayName, psczBundleName); |
| 1209 | ExitOnFailure(hr, "Failed to ensure bundle name."); | ||
| 1210 | |||
| 1211 | LExit: | ||
| 1212 | return hr; | ||
| 1213 | } | ||
| 1214 | |||
| 1215 | static HRESULT EnsureRegistrationVariable( | ||
| 1216 | __in BURN_VARIABLES* pVariables, | ||
| 1217 | __in_z LPCWSTR wzVariable, | ||
| 1218 | __in_z LPCWSTR wzDefaultValue, | ||
| 1219 | __out_z LPWSTR* psczValue | ||
| 1220 | ) | ||
| 1221 | { | ||
| 1222 | HRESULT hr = S_OK; | ||
| 1223 | |||
| 1224 | hr = VariableGetString(pVariables, wzVariable, psczValue); | ||
| 1166 | if (E_NOTFOUND == hr) | 1225 | if (E_NOTFOUND == hr) |
| 1167 | { | 1226 | { |
| 1168 | hr = VariableSetString(pVariables, BURN_BUNDLE_NAME, wzDisplayName, FALSE, FALSE); | 1227 | hr = VariableSetString(pVariables, wzVariable, wzDefaultValue, FALSE, FALSE); |
| 1169 | ExitOnFailure(hr, "Failed to set bundle name."); | 1228 | ExitOnFailure(hr, "Failed to set registration variable."); |
| 1170 | 1229 | ||
| 1171 | hr = StrAllocString(psczBundleName, wzDisplayName, 0); | 1230 | hr = StrAllocString(psczValue, wzDefaultValue, 0); |
| 1172 | } | 1231 | } |
| 1173 | ExitOnFailure(hr, "Failed to get bundle name."); | 1232 | ExitOnFailure(hr, "Failed to get registration variable."); |
| 1174 | 1233 | ||
| 1175 | LExit: | 1234 | LExit: |
| 1176 | return hr; | 1235 | return hr; |
| @@ -1584,15 +1643,26 @@ LExit: | |||
| 1584 | static HRESULT UpdateBundleNameRegistration( | 1643 | static HRESULT UpdateBundleNameRegistration( |
| 1585 | __in BURN_REGISTRATION* pRegistration, | 1644 | __in BURN_REGISTRATION* pRegistration, |
| 1586 | __in BURN_VARIABLES* pVariables, | 1645 | __in BURN_VARIABLES* pVariables, |
| 1587 | __in HKEY hkRegistration | 1646 | __in HKEY hkRegistration, |
| 1647 | __in BOOL fInProgressRegistration | ||
| 1588 | ) | 1648 | ) |
| 1589 | { | 1649 | { |
| 1590 | HRESULT hr = S_OK; | 1650 | HRESULT hr = S_OK; |
| 1591 | LPWSTR sczDisplayName = NULL; | 1651 | LPWSTR sczDisplayName = NULL; |
| 1592 | 1652 | ||
| 1593 | // DisplayName: provided by UI | 1653 | if (fInProgressRegistration) |
| 1594 | hr = GetBundleName(pRegistration, pVariables, &sczDisplayName); | 1654 | { |
| 1595 | hr = RegWriteString(hkRegistration, BURN_REGISTRATION_REGISTRY_BUNDLE_DISPLAY_NAME, SUCCEEDED(hr) ? sczDisplayName : pRegistration->sczDisplayName); | 1655 | hr = GetBundleInProgressName(pRegistration, pVariables, &sczDisplayName); |
| 1656 | ExitOnFailure(hr, "Failed to get bundle in-progress name."); | ||
| 1657 | } | ||
| 1658 | |||
| 1659 | if (!sczDisplayName || !*sczDisplayName) | ||
| 1660 | { | ||
| 1661 | hr = GetBundleName(pRegistration, pVariables, &sczDisplayName); | ||
| 1662 | ExitOnFailure(hr, "Failed to get bundle name."); | ||
| 1663 | } | ||
| 1664 | |||
| 1665 | hr = RegWriteString(hkRegistration, BURN_REGISTRATION_REGISTRY_BUNDLE_DISPLAY_NAME, sczDisplayName); | ||
| 1596 | ExitOnFailure(hr, "Failed to write %ls value.", BURN_REGISTRATION_REGISTRY_BUNDLE_DISPLAY_NAME); | 1666 | ExitOnFailure(hr, "Failed to write %ls value.", BURN_REGISTRATION_REGISTRY_BUNDLE_DISPLAY_NAME); |
| 1597 | 1667 | ||
| 1598 | LExit: | 1668 | LExit: |
