Index: src/ch/TShellExtensionClient.cpp =================================================================== diff -u -N -rbfa621d15810c821a147b2499926996b158b6444 -r1716e3b1c975937ae6f9583f91e8940d5bc855a2 --- src/ch/TShellExtensionClient.cpp (.../TShellExtensionClient.cpp) (revision bfa621d15810c821a147b2499926996b158b6444) +++ src/ch/TShellExtensionClient.cpp (.../TShellExtensionClient.cpp) (revision 1716e3b1c975937ae6f9583f91e8940d5bc855a2) @@ -114,10 +114,9 @@ } if(SUCCEEDED(hResult)) + { SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, NULL, NULL); - if(SUCCEEDED(hResult)) - { // NOTE: we are re-trying to enable the shell extension through our notification interface // in case of class-not-registered error because (it seems) system needs some time to process // DLL's self registration and usually the first call fails. @@ -214,12 +213,11 @@ if(SUCCEEDED(hResult)) { // enable or disable extension - currently we only support extension from strictly the same version as CH - hResult = m_piShellExtControl->SetFlags((lClientVersion == rlExtensionVersion) ? eShellExt_Enabled : 0, eShellExt_Enabled); + bool bVersionMatches = (lClientVersion == rlExtensionVersion); + hResult = m_piShellExtControl->SetFlags(bVersionMatches ? eShellExt_Enabled : 0, eShellExt_Enabled); if(SUCCEEDED(hResult)) - hResult = S_OK; + hResult = bVersionMatches ? S_OK : S_FALSE; } - else if(SUCCEEDED(hResult)) - hResult = S_FALSE; // do not overwrite S_OK/S_FALSE status after this line - it needs to be propagated upwards if(bstrVersion) Index: src/ch/ch.rc =================================================================== diff -u -N -ref0341282095cec2957225e031580d0c0bbaa5f6 -r1716e3b1c975937ae6f9583f91e8940d5bc855a2 --- src/ch/ch.rc (.../ch.rc) (revision ef0341282095cec2957225e031580d0c0bbaa5f6) +++ src/ch/ch.rc (.../ch.rc) (revision 1716e3b1c975937ae6f9583f91e8940d5bc855a2) @@ -1106,11 +1106,11 @@ IDS_UPDATER_WAITING_STRING "Please wait for the connection with %site to be established..." IDS_SHELL_EXTENSION_MISMATCH_STRING - "Copy Handler encountered incompatible version of component enabling integration with system installed on your system.\nWould you like to update it now (requires administrative rights)?" + "Copy Handler detected an incompatible version of Shell Extension component.\nWould you like to update it now (requires administrative rights)?" IDS_SHELL_EXTENSION_UNREGISTERED_STRING - "Copy Handler's component enabling integration with system is disabled.\nDo you want to enable it now (requires administrative rights)?" + "Copy Handler detected that Shell Extension component is not enabled.\nDo you want to enable it now (requires administrative rights)?" IDS_SHELL_EXTENSION_REGISTERED_MISMATCH_STRING - "Copy Handler's component enabling integration with system was updated.\nPlease reboot your system for changes to take effect." + "Copy Handler registered new Shell Extension component, but the old one is still in use by system.\nPlease reboot your system for changes to take effect." IDS_CH_PORTABLE_STRING " (portable mode)" IDS_TASK_IMPORT_FAILED "Failed to import task '%path'." IDS_TASK_CREATE_FAILED "Cannot create new task. Reason: %reason."