diff options
author | Sean Hall <r.sean.hall@gmail.com> | 2022-07-24 14:10:14 -0500 |
---|---|---|
committer | Bob Arnson <github@bobs.org> | 2022-07-25 13:04:12 -0400 |
commit | 8797650acd990ef71f143150b873b5b7a09db86d (patch) | |
tree | f54c94ac6c534df7713e941d936cddd4c445bea5 | |
parent | b86beafe859dea600209d19502bc194affd5fe2b (diff) | |
download | wix-8797650acd990ef71f143150b873b5b7a09db86d.tar.gz wix-8797650acd990ef71f143150b873b5b7a09db86d.tar.bz2 wix-8797650acd990ef71f143150b873b5b7a09db86d.zip |
Don't show FilesInUse dialogs if loc strings are missing.
This allows all flavors of wixstdba to conditionally support them.
-rw-r--r-- | src/ext/Bal/wixstdba/Resources/dncpreq.wxl | 8 | ||||
-rw-r--r-- | src/ext/Bal/wixstdba/Resources/iuipreq.wxl | 9 | ||||
-rw-r--r-- | src/ext/Bal/wixstdba/Resources/mbapreq.wxl | 8 | ||||
-rw-r--r-- | src/ext/Bal/wixstdba/WixStandardBootstrapperApplication.cpp | 190 |
4 files changed, 140 insertions, 75 deletions
diff --git a/src/ext/Bal/wixstdba/Resources/dncpreq.wxl b/src/ext/Bal/wixstdba/Resources/dncpreq.wxl index 734de0ed..19470064 100644 --- a/src/ext/Bal/wixstdba/Resources/dncpreq.wxl +++ b/src/ext/Bal/wixstdba/Resources/dncpreq.wxl | |||
@@ -30,4 +30,12 @@ | |||
30 | <String Id="FailureCloseButton">&Close</String> | 30 | <String Id="FailureCloseButton">&Close</String> |
31 | <String Id="SCDRUNTIMEFAILUREErrorMessage">[WixBundleName] cannot run on this machine. Install the latest updates and/or the latest OS to run in a supported environment.</String> | 31 | <String Id="SCDRUNTIMEFAILUREErrorMessage">[WixBundleName] cannot run on this machine. Install the latest updates and/or the latest OS to run in a supported environment.</String> |
32 | <String Id="PREREQBAINFINITELOOPErrorMessage">[WixBundleName] failed to load the .NET Core runtime even though all of the prerequisites are installed.</String> | 32 | <String Id="PREREQBAINFINITELOOPErrorMessage">[WixBundleName] failed to load the .NET Core runtime even though all of the prerequisites are installed.</String> |
33 | <String Id="FilesInUseTitle">Files In Use</String> | ||
34 | <String Id="FilesInUseLabel">The following applications are using files that need to be updated:</String> | ||
35 | <String Id="FilesInUseNetfxCloseRadioButton">Close the &applications.</String> | ||
36 | <String Id="FilesInUseCloseRadioButton">Close the &applications and attempt to restart them.</String> | ||
37 | <String Id="FilesInUseDontCloseRadioButton">&Do not close applications. A reboot will be required.</String> | ||
38 | <String Id="FilesInUseRetryButton">&Retry</String> | ||
39 | <String Id="FilesInUseIgnoreButton">&Ignore</String> | ||
40 | <String Id="FilesInUseExitButton">E&xit</String> | ||
33 | </WixLocalization> | 41 | </WixLocalization> |
diff --git a/src/ext/Bal/wixstdba/Resources/iuipreq.wxl b/src/ext/Bal/wixstdba/Resources/iuipreq.wxl index 4afcd10f..bdb69f09 100644 --- a/src/ext/Bal/wixstdba/Resources/iuipreq.wxl +++ b/src/ext/Bal/wixstdba/Resources/iuipreq.wxl | |||
@@ -30,5 +30,12 @@ | |||
30 | <String Id="FailureRestartText">You must restart your computer to complete the rollback of the software.</String> | 30 | <String Id="FailureRestartText">You must restart your computer to complete the rollback of the software.</String> |
31 | <String Id="FailureRestartButton">&Restart</String> | 31 | <String Id="FailureRestartButton">&Restart</String> |
32 | <String Id="FailureCloseButton">&Close</String> | 32 | <String Id="FailureCloseButton">&Close</String> |
33 | <String Id="ErrorFailNoActionReboot">No action was taken as a system reboot is required.</String> | 33 | <String Id="FilesInUseTitle">Files In Use</String> |
34 | <String Id="FilesInUseLabel">The following applications are using files that need to be updated:</String> | ||
35 | <String Id="FilesInUseNetfxCloseRadioButton">Close the &applications.</String> | ||
36 | <String Id="FilesInUseCloseRadioButton">Close the &applications and attempt to restart them.</String> | ||
37 | <String Id="FilesInUseDontCloseRadioButton">&Do not close applications. A reboot will be required.</String> | ||
38 | <String Id="FilesInUseRetryButton">&Retry</String> | ||
39 | <String Id="FilesInUseIgnoreButton">&Ignore</String> | ||
40 | <String Id="FilesInUseExitButton">E&xit</String> | ||
34 | </WixLocalization> | 41 | </WixLocalization> |
diff --git a/src/ext/Bal/wixstdba/Resources/mbapreq.wxl b/src/ext/Bal/wixstdba/Resources/mbapreq.wxl index 3fec4254..f7d4da8c 100644 --- a/src/ext/Bal/wixstdba/Resources/mbapreq.wxl +++ b/src/ext/Bal/wixstdba/Resources/mbapreq.wxl | |||
@@ -30,4 +30,12 @@ | |||
30 | <String Id="FailureCloseButton">&Close</String> | 30 | <String Id="FailureCloseButton">&Close</String> |
31 | <String Id="NET452WIN7RTMErrorMessage">[WixBundleName] cannot run on Windows 7 RTM with .NET 4.5.2 installed. Install Windows 7 SP1 to run in a supported environment.</String> | 31 | <String Id="NET452WIN7RTMErrorMessage">[WixBundleName] cannot run on Windows 7 RTM with .NET 4.5.2 installed. Install Windows 7 SP1 to run in a supported environment.</String> |
32 | <String Id="PREREQBAINFINITELOOPErrorMessage">[WixBundleName] failed to load the .NET Framework runtime even though all of the prerequisites are installed.</String> | 32 | <String Id="PREREQBAINFINITELOOPErrorMessage">[WixBundleName] failed to load the .NET Framework runtime even though all of the prerequisites are installed.</String> |
33 | <String Id="FilesInUseTitle">Files In Use</String> | ||
34 | <String Id="FilesInUseLabel">The following applications are using files that need to be updated:</String> | ||
35 | <String Id="FilesInUseNetfxCloseRadioButton">Close the &applications.</String> | ||
36 | <String Id="FilesInUseCloseRadioButton">Close the &applications and attempt to restart them.</String> | ||
37 | <String Id="FilesInUseDontCloseRadioButton">&Do not close applications. A reboot will be required.</String> | ||
38 | <String Id="FilesInUseRetryButton">&Retry</String> | ||
39 | <String Id="FilesInUseIgnoreButton">&Ignore</String> | ||
40 | <String Id="FilesInUseExitButton">E&xit</String> | ||
33 | </WixLocalization> | 41 | </WixLocalization> |
diff --git a/src/ext/Bal/wixstdba/WixStandardBootstrapperApplication.cpp b/src/ext/Bal/wixstdba/WixStandardBootstrapperApplication.cpp index 5fc20368..d7b5a269 100644 --- a/src/ext/Bal/wixstdba/WixStandardBootstrapperApplication.cpp +++ b/src/ext/Bal/wixstdba/WixStandardBootstrapperApplication.cpp | |||
@@ -1049,17 +1049,30 @@ public: // IBootstrapperApplication | |||
1049 | ) | 1049 | ) |
1050 | { | 1050 | { |
1051 | 1051 | ||
1052 | if (!m_fShowingInternalUiThisPackage && !m_fPrereq && wzPackageId && *wzPackageId) | 1052 | if (!m_fShowingInternalUiThisPackage && wzPackageId && *wzPackageId) |
1053 | { | 1053 | { |
1054 | BalLog(BOOTSTRAPPER_LOG_LEVEL_VERBOSE, "Package %ls has %d applications holding files in use.", wzPackageId, cFiles); | 1054 | BalLog(BOOTSTRAPPER_LOG_LEVEL_VERBOSE, "Package %ls has %d applications holding files in use.", wzPackageId, cFiles); |
1055 | 1055 | ||
1056 | switch (source) | 1056 | switch (source) |
1057 | { | 1057 | { |
1058 | case BOOTSTRAPPER_FILES_IN_USE_TYPE_MSI: | 1058 | case BOOTSTRAPPER_FILES_IN_USE_TYPE_MSI: |
1059 | if (m_fShowStandardFilesInUse) | ||
1060 | { | ||
1061 | return ShowMsiFilesInUse(cFiles, rgwzFiles, source, pResult); | ||
1062 | } | ||
1063 | break; | ||
1059 | case BOOTSTRAPPER_FILES_IN_USE_TYPE_MSI_RM: | 1064 | case BOOTSTRAPPER_FILES_IN_USE_TYPE_MSI_RM: |
1060 | return ShowMsiFilesInUse(cFiles, rgwzFiles, source, pResult); | 1065 | if (m_fShowRMFilesInUse) |
1066 | { | ||
1067 | return ShowMsiFilesInUse(cFiles, rgwzFiles, source, pResult); | ||
1068 | } | ||
1069 | break; | ||
1061 | case BOOTSTRAPPER_FILES_IN_USE_TYPE_NETFX: | 1070 | case BOOTSTRAPPER_FILES_IN_USE_TYPE_NETFX: |
1062 | return ShowNetfxFilesInUse(cFiles, rgwzFiles, pResult); | 1071 | if (m_fShowNetfxFilesInUse) |
1072 | { | ||
1073 | return ShowNetfxFilesInUse(cFiles, rgwzFiles, pResult); | ||
1074 | } | ||
1075 | break; | ||
1063 | } | 1076 | } |
1064 | } | 1077 | } |
1065 | 1078 | ||
@@ -2289,34 +2302,20 @@ private: // privates | |||
2289 | LPWSTR sczLabel = NULL; | 2302 | LPWSTR sczLabel = NULL; |
2290 | LPWSTR sczCloseRadioButton = NULL; | 2303 | LPWSTR sczCloseRadioButton = NULL; |
2291 | LPWSTR sczDontCloseRadioButton = NULL; | 2304 | LPWSTR sczDontCloseRadioButton = NULL; |
2292 | LOC_STRING* pLocString = NULL; | ||
2293 | int nButton = 0; | 2305 | int nButton = 0; |
2294 | int nRadioButton = 0; | 2306 | int nRadioButton = 0; |
2295 | 2307 | ||
2296 | // Get the loc strings for the files-in-use task dialog text. | 2308 | hr = BalFormatString(m_pFilesInUseTitleLoc->wzText, &sczTitle); |
2297 | hr = LocGetString(m_pWixLoc, L"#(loc.FilesInUseTitle)", &pLocString); | 2309 | BalExitOnFailure(hr, "Failed to format FilesInUseTitle loc string."); |
2298 | BalExitOnFailure(hr, "Failed to get FilesInUseTitle loc string."); | ||
2299 | |||
2300 | hr = StrAllocString(&sczTitle, pLocString->wzText, 0); | ||
2301 | BalExitOnFailure(hr, "Failed to copy FilesInUseTitle loc string."); | ||
2302 | 2310 | ||
2303 | hr = LocGetString(m_pWixLoc, L"#(loc.FilesInUseLabel)", &pLocString); | 2311 | hr = BalFormatString(m_pFilesInUseLabelLoc->wzText, &sczLabel); |
2304 | BalExitOnFailure(hr, "Failed to get FilesInUseLabel loc string."); | 2312 | BalExitOnFailure(hr, "Failed to format FilesInUseLabel loc string."); |
2305 | 2313 | ||
2306 | hr = StrAllocString(&sczLabel, pLocString->wzText, 0); | 2314 | hr = BalFormatString(m_pFilesInUseCloseRadioButtonLoc->wzText, &sczCloseRadioButton); |
2307 | BalExitOnFailure(hr, "Failed to copy FilesInUseLabel loc string."); | 2315 | BalExitOnFailure(hr, "Failed to format FilesInUseCloseRadioButton loc string."); |
2308 | 2316 | ||
2309 | hr = LocGetString(m_pWixLoc, L"#(loc.FilesInUseCloseRadioButton)", &pLocString); | 2317 | hr = BalFormatString(m_pFilesInUseDontCloseRadioButtonLoc->wzText, &sczDontCloseRadioButton); |
2310 | BalExitOnFailure(hr, "Failed to get FilesInUseCloseRadioButton loc string."); | 2318 | BalExitOnFailure(hr, "Failed to format FilesInUseDontCloseRadioButton loc string."); |
2311 | |||
2312 | hr = StrAllocString(&sczCloseRadioButton, pLocString->wzText, 0); | ||
2313 | BalExitOnFailure(hr, "Failed to copy FilesInUseCloseRadioButton loc string."); | ||
2314 | |||
2315 | hr = LocGetString(m_pWixLoc, L"#(loc.FilesInUseDontCloseRadioButton)", &pLocString); | ||
2316 | BalExitOnFailure(hr, "Failed to get FilesInUseDontCloseRadioButton loc string."); | ||
2317 | |||
2318 | hr = StrAllocString(&sczDontCloseRadioButton, pLocString->wzText, 0); | ||
2319 | BalExitOnFailure(hr, "Failed to copy FilesInUseDontCloseRadioButton loc string."); | ||
2320 | 2319 | ||
2321 | const TASKDIALOG_BUTTON rgRadioButtons[] = { | 2320 | const TASKDIALOG_BUTTON rgRadioButtons[] = { |
2322 | { IDOK, sczCloseRadioButton }, | 2321 | { IDOK, sczCloseRadioButton }, |
@@ -2346,6 +2345,11 @@ private: // privates | |||
2346 | #endif | 2345 | #endif |
2347 | 2346 | ||
2348 | LExit: | 2347 | LExit: |
2348 | ReleaseStr(sczTitle); | ||
2349 | ReleaseStr(sczLabel); | ||
2350 | ReleaseStr(sczCloseRadioButton); | ||
2351 | ReleaseStr(sczDontCloseRadioButton); | ||
2352 | |||
2349 | return hr; | 2353 | return hr; |
2350 | } | 2354 | } |
2351 | 2355 | ||
@@ -2362,38 +2366,21 @@ private: // privates | |||
2362 | LPWSTR sczRetryButton = NULL; | 2366 | LPWSTR sczRetryButton = NULL; |
2363 | LPWSTR sczIgnoreButton = NULL; | 2367 | LPWSTR sczIgnoreButton = NULL; |
2364 | LPWSTR sczExitButton = NULL; | 2368 | LPWSTR sczExitButton = NULL; |
2365 | LOC_STRING* pLocString = NULL; | ||
2366 | |||
2367 | // Get the loc strings for the files-in-use task dialog text. | ||
2368 | hr = LocGetString(m_pWixLoc, L"#(loc.FilesInUseTitle)", &pLocString); | ||
2369 | BalExitOnFailure(hr, "Failed to get FilesInUseTitle loc string."); | ||
2370 | 2369 | ||
2371 | hr = StrAllocString(&sczTitle, pLocString->wzText, 0); | 2370 | hr = BalFormatString(m_pFilesInUseTitleLoc->wzText, &sczTitle); |
2372 | BalExitOnFailure(hr, "Failed to copy FilesInUseTitle loc string."); | 2371 | BalExitOnFailure(hr, "Failed to format FilesInUseTitle loc string."); |
2373 | 2372 | ||
2374 | hr = LocGetString(m_pWixLoc, L"#(loc.FilesInUseLabel)", &pLocString); | 2373 | hr = BalFormatString(m_pFilesInUseLabelLoc->wzText, &sczLabel); |
2375 | BalExitOnFailure(hr, "Failed to get FilesInUseLabel loc string."); | 2374 | BalExitOnFailure(hr, "Failed to format FilesInUseLabel loc string."); |
2376 | 2375 | ||
2377 | hr = StrAllocString(&sczLabel, pLocString->wzText, 0); | 2376 | hr = BalFormatString(m_pFilesInUseRetryButtonLoc->wzText, &sczRetryButton); |
2378 | BalExitOnFailure(hr, "Failed to copy FilesInUseLabel loc string."); | 2377 | BalExitOnFailure(hr, "Failed to format FilesInUseRetryButton loc string."); |
2379 | 2378 | ||
2380 | hr = LocGetString(m_pWixLoc, L"#(loc.FilesInUseRetryButton)", &pLocString); | 2379 | hr = BalFormatString(m_pFilesInUseIgnoreButtonLoc->wzText, &sczIgnoreButton); |
2381 | BalExitOnFailure(hr, "Failed to get FilesInUseRetryButton loc string."); | 2380 | BalExitOnFailure(hr, "Failed to format FilesInUseIgnoreButton loc string."); |
2382 | 2381 | ||
2383 | hr = StrAllocString(&sczRetryButton, pLocString->wzText, 0); | 2382 | hr = BalFormatString(m_pFilesInUseExitButtonLoc->wzText, &sczExitButton); |
2384 | BalExitOnFailure(hr, "Failed to copy FilesInUseRetryButton loc string."); | 2383 | BalExitOnFailure(hr, "Failed to format FilesInUseExitButton loc string."); |
2385 | |||
2386 | hr = LocGetString(m_pWixLoc, L"#(loc.FilesInUseIgnoreButton)", &pLocString); | ||
2387 | BalExitOnFailure(hr, "Failed to get FilesInUseIgnoreButton loc string."); | ||
2388 | |||
2389 | hr = StrAllocString(&sczIgnoreButton, pLocString->wzText, 0); | ||
2390 | BalExitOnFailure(hr, "Failed to copy FilesInUseIgnoreButton loc string."); | ||
2391 | |||
2392 | hr = LocGetString(m_pWixLoc, L"#(loc.FilesInUseExitButton)", &pLocString); | ||
2393 | BalExitOnFailure(hr, "Failed to get FilesInUseExitButton loc string."); | ||
2394 | |||
2395 | hr = StrAllocString(&sczExitButton, pLocString->wzText, 0); | ||
2396 | BalExitOnFailure(hr, "Failed to copy FilesInUseExitButton loc string."); | ||
2397 | 2384 | ||
2398 | const TASKDIALOG_BUTTON rgButtons[] = { | 2385 | const TASKDIALOG_BUTTON rgButtons[] = { |
2399 | { IDRETRY, sczRetryButton }, | 2386 | { IDRETRY, sczRetryButton }, |
@@ -2419,6 +2406,12 @@ private: // privates | |||
2419 | #endif | 2406 | #endif |
2420 | 2407 | ||
2421 | LExit: | 2408 | LExit: |
2409 | ReleaseStr(sczTitle); | ||
2410 | ReleaseStr(sczLabel); | ||
2411 | ReleaseStr(sczRetryButton); | ||
2412 | ReleaseStr(sczIgnoreButton); | ||
2413 | ReleaseStr(sczExitButton); | ||
2414 | |||
2422 | return hr; | 2415 | return hr; |
2423 | } | 2416 | } |
2424 | 2417 | ||
@@ -2485,34 +2478,20 @@ private: // privates | |||
2485 | LPWSTR sczLabel = NULL; | 2478 | LPWSTR sczLabel = NULL; |
2486 | LPWSTR sczNetfxCloseRadioButton = NULL; | 2479 | LPWSTR sczNetfxCloseRadioButton = NULL; |
2487 | LPWSTR sczDontCloseRadioButton = NULL; | 2480 | LPWSTR sczDontCloseRadioButton = NULL; |
2488 | LOC_STRING* pLocString = NULL; | ||
2489 | int nButton = 0; | 2481 | int nButton = 0; |
2490 | int nRadioButton = 0; | 2482 | int nRadioButton = 0; |
2491 | 2483 | ||
2492 | // Get the loc strings for the files-in-use task dialog text. | 2484 | hr = BalFormatString(m_pFilesInUseTitleLoc->wzText, &sczTitle); |
2493 | hr = LocGetString(m_pWixLoc, L"#(loc.FilesInUseTitle)", &pLocString); | 2485 | BalExitOnFailure(hr, "Failed to format FilesInUseTitle loc string."); |
2494 | BalExitOnFailure(hr, "Failed to get FilesInUseTitle loc string."); | ||
2495 | |||
2496 | hr = StrAllocString(&sczTitle, pLocString->wzText, 0); | ||
2497 | BalExitOnFailure(hr, "Failed to copy FilesInUseTitle loc string."); | ||
2498 | |||
2499 | hr = LocGetString(m_pWixLoc, L"#(loc.FilesInUseLabel)", &pLocString); | ||
2500 | BalExitOnFailure(hr, "Failed to get FilesInUseLabel loc string."); | ||
2501 | 2486 | ||
2502 | hr = StrAllocString(&sczLabel, pLocString->wzText, 0); | 2487 | hr = BalFormatString(m_pFilesInUseLabelLoc->wzText, &sczLabel); |
2503 | BalExitOnFailure(hr, "Failed to copy FilesInUseLabel loc string."); | 2488 | BalExitOnFailure(hr, "Failed to format FilesInUseLabel loc string."); |
2504 | 2489 | ||
2505 | hr = LocGetString(m_pWixLoc, L"#(loc.FilesInUseNetfxCloseRadioButton)", &pLocString); | 2490 | hr = BalFormatString(m_pFilesInUseNetfxCloseRadioButtonLoc->wzText, &sczNetfxCloseRadioButton); |
2506 | BalExitOnFailure(hr, "Failed to get FilesInUseNetfxCloseRadioButton loc string."); | 2491 | BalExitOnFailure(hr, "Failed to format FilesInUseNetfxCloseRadioButton loc string."); |
2507 | 2492 | ||
2508 | hr = StrAllocString(&sczNetfxCloseRadioButton, pLocString->wzText, 0); | 2493 | hr = BalFormatString(m_pFilesInUseDontCloseRadioButtonLoc->wzText, &sczDontCloseRadioButton); |
2509 | BalExitOnFailure(hr, "Failed to copy FilesInUseNetfxCloseRadioButton loc string."); | 2494 | BalExitOnFailure(hr, "Failed to format FilesInUseDontCloseRadioButton loc string."); |
2510 | |||
2511 | hr = LocGetString(m_pWixLoc, L"#(loc.FilesInUseDontCloseRadioButton)", &pLocString); | ||
2512 | BalExitOnFailure(hr, "Failed to get FilesInUseDontCloseRadioButton loc string."); | ||
2513 | |||
2514 | hr = StrAllocString(&sczDontCloseRadioButton, pLocString->wzText, 0); | ||
2515 | BalExitOnFailure(hr, "Failed to copy FilesInUseDontCloseRadioButton loc string."); | ||
2516 | 2495 | ||
2517 | const TASKDIALOG_BUTTON rgRadioButtons[] = { | 2496 | const TASKDIALOG_BUTTON rgRadioButtons[] = { |
2518 | { IDYES, sczNetfxCloseRadioButton }, | 2497 | { IDYES, sczNetfxCloseRadioButton }, |
@@ -2542,6 +2521,11 @@ private: // privates | |||
2542 | #endif | 2521 | #endif |
2543 | 2522 | ||
2544 | LExit: | 2523 | LExit: |
2524 | ReleaseStr(sczTitle); | ||
2525 | ReleaseStr(sczLabel); | ||
2526 | ReleaseStr(sczNetfxCloseRadioButton); | ||
2527 | ReleaseStr(sczDontCloseRadioButton); | ||
2528 | |||
2545 | return hr; | 2529 | return hr; |
2546 | } | 2530 | } |
2547 | 2531 | ||
@@ -2736,6 +2720,8 @@ private: | |||
2736 | hr = LoadLocalization(sczModulePath, m_sczLanguage); | 2720 | hr = LoadLocalization(sczModulePath, m_sczLanguage); |
2737 | ExitOnFailure(hr, "Failed to load localization."); | 2721 | ExitOnFailure(hr, "Failed to load localization."); |
2738 | 2722 | ||
2723 | LoadFilesInUse(); | ||
2724 | |||
2739 | hr = LoadTheme(sczModulePath, m_sczLanguage); | 2725 | hr = LoadTheme(sczModulePath, m_sczLanguage); |
2740 | ExitOnFailure(hr, "Failed to load theme."); | 2726 | ExitOnFailure(hr, "Failed to load theme."); |
2741 | 2727 | ||
@@ -2898,6 +2884,40 @@ private: | |||
2898 | } | 2884 | } |
2899 | 2885 | ||
2900 | 2886 | ||
2887 | HRESULT LoadIndividualLocString( | ||
2888 | __in_z LPCWSTR wzId, | ||
2889 | __out LOC_STRING** ppLocString | ||
2890 | ) | ||
2891 | { | ||
2892 | HRESULT hr = LocGetString(m_pWixLoc, wzId, ppLocString); | ||
2893 | |||
2894 | if (E_NOTFOUND == hr) | ||
2895 | { | ||
2896 | BalLog(BOOTSTRAPPER_LOG_LEVEL_DEBUG, "WIXSTDBA: Missing loc string '%ls'.", wzId); | ||
2897 | } | ||
2898 | |||
2899 | return hr; | ||
2900 | } | ||
2901 | |||
2902 | |||
2903 | void LoadFilesInUse() | ||
2904 | { | ||
2905 | // Get the loc strings for the files-in-use dialogs. | ||
2906 | LoadIndividualLocString(L"#(loc.FilesInUseTitle)", &m_pFilesInUseTitleLoc); | ||
2907 | LoadIndividualLocString(L"#(loc.FilesInUseLabel)", &m_pFilesInUseLabelLoc); | ||
2908 | LoadIndividualLocString(L"#(loc.FilesInUseCloseRadioButton)", &m_pFilesInUseCloseRadioButtonLoc); | ||
2909 | LoadIndividualLocString(L"#(loc.FilesInUseDontCloseRadioButton)", &m_pFilesInUseDontCloseRadioButtonLoc); | ||
2910 | LoadIndividualLocString(L"#(loc.FilesInUseRetryButton)", &m_pFilesInUseRetryButtonLoc); | ||
2911 | LoadIndividualLocString(L"#(loc.FilesInUseIgnoreButton)", &m_pFilesInUseIgnoreButtonLoc); | ||
2912 | LoadIndividualLocString(L"#(loc.FilesInUseExitButton)", &m_pFilesInUseExitButtonLoc); | ||
2913 | LoadIndividualLocString(L"#(loc.FilesInUseNetfxCloseRadioButton)", &m_pFilesInUseNetfxCloseRadioButtonLoc); | ||
2914 | |||
2915 | m_fShowRMFilesInUse = m_pFilesInUseTitleLoc && m_pFilesInUseLabelLoc && m_pFilesInUseCloseRadioButtonLoc && m_pFilesInUseDontCloseRadioButtonLoc; | ||
2916 | m_fShowStandardFilesInUse = m_pFilesInUseTitleLoc && m_pFilesInUseLabelLoc && m_pFilesInUseRetryButtonLoc && m_pFilesInUseIgnoreButtonLoc && m_pFilesInUseExitButtonLoc; | ||
2917 | m_fShowNetfxFilesInUse = m_pFilesInUseTitleLoc && m_pFilesInUseLabelLoc && m_pFilesInUseNetfxCloseRadioButtonLoc && m_pFilesInUseDontCloseRadioButtonLoc; | ||
2918 | } | ||
2919 | |||
2920 | |||
2901 | HRESULT LoadTheme( | 2921 | HRESULT LoadTheme( |
2902 | __in_z LPCWSTR wzModulePath, | 2922 | __in_z LPCWSTR wzModulePath, |
2903 | __in_z_opt LPCWSTR wzLanguage | 2923 | __in_z_opt LPCWSTR wzLanguage |
@@ -4631,8 +4651,19 @@ public: | |||
4631 | m_fPrereqInstalled = FALSE; | 4651 | m_fPrereqInstalled = FALSE; |
4632 | m_fPrereqSkipped = FALSE; | 4652 | m_fPrereqSkipped = FALSE; |
4633 | 4653 | ||
4654 | m_fShowStandardFilesInUse = FALSE; | ||
4655 | m_fShowRMFilesInUse = FALSE; | ||
4656 | m_fShowNetfxFilesInUse = FALSE; | ||
4634 | m_nLastMsiFilesInUseResult = IDNOACTION; | 4657 | m_nLastMsiFilesInUseResult = IDNOACTION; |
4635 | m_nLastNetfxFilesInUseResult = IDNOACTION; | 4658 | m_nLastNetfxFilesInUseResult = IDNOACTION; |
4659 | m_pFilesInUseTitleLoc = NULL; | ||
4660 | m_pFilesInUseLabelLoc = NULL; | ||
4661 | m_pFilesInUseCloseRadioButtonLoc = NULL; | ||
4662 | m_pFilesInUseNetfxCloseRadioButtonLoc = NULL; | ||
4663 | m_pFilesInUseDontCloseRadioButtonLoc = NULL; | ||
4664 | m_pFilesInUseRetryButtonLoc = NULL; | ||
4665 | m_pFilesInUseIgnoreButtonLoc = NULL; | ||
4666 | m_pFilesInUseExitButtonLoc = NULL; | ||
4636 | 4667 | ||
4637 | pEngine->AddRef(); | 4668 | pEngine->AddRef(); |
4638 | m_pEngine = pEngine; | 4669 | m_pEngine = pEngine; |
@@ -4926,8 +4957,19 @@ private: | |||
4926 | BOOL m_fShowingInternalUiThisPackage; | 4957 | BOOL m_fShowingInternalUiThisPackage; |
4927 | BOOL m_fTriedToLaunchElevated; | 4958 | BOOL m_fTriedToLaunchElevated; |
4928 | 4959 | ||
4960 | BOOL m_fShowStandardFilesInUse; | ||
4961 | BOOL m_fShowRMFilesInUse; | ||
4962 | BOOL m_fShowNetfxFilesInUse; | ||
4929 | int m_nLastMsiFilesInUseResult; | 4963 | int m_nLastMsiFilesInUseResult; |
4930 | int m_nLastNetfxFilesInUseResult; | 4964 | int m_nLastNetfxFilesInUseResult; |
4965 | LOC_STRING* m_pFilesInUseTitleLoc; | ||
4966 | LOC_STRING* m_pFilesInUseLabelLoc; | ||
4967 | LOC_STRING* m_pFilesInUseCloseRadioButtonLoc; | ||
4968 | LOC_STRING* m_pFilesInUseNetfxCloseRadioButtonLoc; | ||
4969 | LOC_STRING* m_pFilesInUseDontCloseRadioButtonLoc; | ||
4970 | LOC_STRING* m_pFilesInUseRetryButtonLoc; | ||
4971 | LOC_STRING* m_pFilesInUseIgnoreButtonLoc; | ||
4972 | LOC_STRING* m_pFilesInUseExitButtonLoc; | ||
4931 | 4973 | ||
4932 | HMODULE m_hBAFModule; | 4974 | HMODULE m_hBAFModule; |
4933 | PFN_BA_FUNCTIONS_PROC m_pfnBAFunctionsProc; | 4975 | PFN_BA_FUNCTIONS_PROC m_pfnBAFunctionsProc; |