diff options
author | Vincent Lucas <chenzo@jitsi.org> | 2013-07-26 22:51:24 +0200 |
---|---|---|
committer | Vincent Lucas <chenzo@jitsi.org> | 2013-07-26 22:51:24 +0200 |
commit | 4fbc19e87cd83185fd07d938eea6faa7fa6331ed (patch) | |
tree | 38cee4b032a58e73492905c9690da9abcaae1f78 /src/native/addrbook/msoutlook | |
parent | f714d6ec1381cda46573a7ad7daa0a55d273f859 (diff) | |
download | jitsi-4fbc19e87cd83185fd07d938eea6faa7fa6331ed.zip jitsi-4fbc19e87cd83185fd07d938eea6faa7fa6331ed.tar.gz jitsi-4fbc19e87cd83185fd07d938eea6faa7fa6331ed.tar.bz2 |
Corrects error at Outlook COM server startup, when Outlook is installed but no account is configured. Try to speed up Outlook entry ID resolution. Gets and logs Outlook version.
Diffstat (limited to 'src/native/addrbook/msoutlook')
5 files changed, 100 insertions, 12 deletions
diff --git a/src/native/addrbook/msoutlook/MAPIBitness.cxx b/src/native/addrbook/msoutlook/MAPIBitness.cxx index 1ecec0e..2dbc835 100644 --- a/src/native/addrbook/msoutlook/MAPIBitness.cxx +++ b/src/native/addrbook/msoutlook/MAPIBitness.cxx @@ -19,6 +19,22 @@ */ /** + * The number of registries known for the different Outlook version. + */ +int nbOutlookRegister = 4; + + +/** + * The registries known for the different Outlook version. + */ +TCHAR outlookRegister[][MAX_PATH] = { + TEXT("{E83B4360-C208-4325-9504-0D23003A74A5}"), // Outlook 2013 + TEXT("{1E77DE88-BCAB-4C37-B9E5-073AF52DFD7A}"), // Outlook 2010 + TEXT("{24AAE126-0911-478F-A019-07B875EB9996}"), // Outlook 2007 + TEXT("{BC174BAD-2F53-4855-A1D5-0D575C19B1EA}") // Outlook 2003 +}; + +/** * Returns the bitness of the Outlook installation. * * @return 64 if Outlook 64 bits version is installed. 32 if Outlook 32 bits @@ -26,14 +42,6 @@ */ int MAPIBitness_getOutlookBitnessVersion(void) { - int nbOutlookRegister = 3; - TCHAR outlookRegister[][MAX_PATH] = { - TEXT("{E83B4360-C208-4325-9504-0D23003A74A5}"), // Outlook 2013 - TEXT("{1E77DE88-BCAB-4C37-B9E5-073AF52DFD7A}"), // Outlook 2010 - TEXT("{24AAE126-0911-478F-A019-07B875EB9996}"), // Outlook 2007 - TEXT("{BC174BAD-2F53-4855-A1D5-0D575C19B1EA}") // Outlook 2003 - }; - DWORD pathLength = 0; for(int i = 0; i < nbOutlookRegister; ++i) @@ -62,3 +70,46 @@ int MAPIBitness_getOutlookBitnessVersion(void) return -1; } + +/** + * Returns the Outlook version installed. + * + * @return 2013 for "Outlook 2013", 2010 for "Outlook 2010", 2007 for "Outlook + * 2007" or 2003 for "Outlook 2003". -1 otherwise. + */ +int MAPIBitness_getOutlookVersion(void) +{ + int outlookVersions[] = { + 2013, // Outlook 2013 + 2010, // Outlook 2010 + 2007, // Outlook 2007 + 2003 // Outlook 2003 + }; + DWORD pathLength = 0; + + for(int i = 0; i < nbOutlookRegister; ++i) + { + if(MsiProvideQualifiedComponent( + outlookRegister[i], + TEXT("outlook.x64.exe"), + (DWORD) INSTALLMODE_DEFAULT, + NULL, + &pathLength) + == ERROR_SUCCESS) + { + return outlookVersions[i]; + } + else if(MsiProvideQualifiedComponent( + outlookRegister[i], + TEXT("outlook.exe"), + (DWORD) INSTALLMODE_DEFAULT, + NULL, + &pathLength) + == ERROR_SUCCESS) + { + return outlookVersions[i]; + } + } + + return -1; +} diff --git a/src/native/addrbook/msoutlook/MAPIBitness.h b/src/native/addrbook/msoutlook/MAPIBitness.h index 9039b0b..645afa2 100644 --- a/src/native/addrbook/msoutlook/MAPIBitness.h +++ b/src/native/addrbook/msoutlook/MAPIBitness.h @@ -16,4 +16,6 @@ int MAPIBitness_getOutlookBitnessVersion(void); +int MAPIBitness_getOutlookVersion(void); + #endif diff --git a/src/native/addrbook/msoutlook/MsOutlookAddrBookContactSourceService.cxx b/src/native/addrbook/msoutlook/MsOutlookAddrBookContactSourceService.cxx index ff6f3b4..88754d1 100644 --- a/src/native/addrbook/msoutlook/MsOutlookAddrBookContactSourceService.cxx +++ b/src/native/addrbook/msoutlook/MsOutlookAddrBookContactSourceService.cxx @@ -406,10 +406,13 @@ HRESULT MsOutlookAddrBookContactSourceService_MAPIInitialize | MAPI_NO_MAIL | MAPI_USE_DEFAULT, &mapiSession); - // Register the notification of contact changed, - // created and deleted. - MAPINotification_registerNotifyAllMsgStores( - mapiSession); + if(HR_SUCCEEDED(hResult)) + { + // Register the notification of contact changed, + // created and deleted. + MAPINotification_registerNotifyAllMsgStores( + mapiSession); + } } ::SetCurrentDirectory(lpszWorkingDir); MAPISession_unlock(); diff --git a/src/native/addrbook/msoutlook/net_java_sip_communicator_plugin_addrbook_msoutlook_MsOutlookAddrBookContactSourceService.cxx b/src/native/addrbook/msoutlook/net_java_sip_communicator_plugin_addrbook_msoutlook_MsOutlookAddrBookContactSourceService.cxx index 21b5f5c..afe9461 100644 --- a/src/native/addrbook/msoutlook/net_java_sip_communicator_plugin_addrbook_msoutlook_MsOutlookAddrBookContactSourceService.cxx +++ b/src/native/addrbook/msoutlook/net_java_sip_communicator_plugin_addrbook_msoutlook_MsOutlookAddrBookContactSourceService.cxx @@ -44,3 +44,29 @@ Java_net_java_sip_communicator_plugin_addrbook_msoutlook_MsOutlookAddrBookContac MsOutlookAddrBookContactSourceService_MAPIUninitializeCOMServer(); } + +/** + * Returns the bitness of the Outlook installation. + * + * @return 64 if Outlook 64 bits version is installed. 32 if Outlook 32 bits + * version is installed. -1 otherwise. + */ +JNIEXPORT int JNICALL +Java_net_java_sip_communicator_plugin_addrbook_msoutlook_MsOutlookAddrBookContactSourceService_getOutlookBitnessVersion + (JNIEnv *jniEnv, jclass clazz) +{ + return MAPIBitness_getOutlookBitnessVersion(); +} + +/** + * Returns the Outlook version installed. + * + * @return 2013 for "Outlook 2013", 2010 for "Outlook 2010", 2007 for "Outlook + * 2007" or 2003 for "Outlook 2003". -1 otherwise. + */ +JNIEXPORT int JNICALL +Java_net_java_sip_communicator_plugin_addrbook_msoutlook_MsOutlookAddrBookContactSourceService_getOutlookVersion + (JNIEnv *jniEnv, jclass clazz) +{ + return MAPIBitness_getOutlookVersion(); +} diff --git a/src/native/addrbook/msoutlook/net_java_sip_communicator_plugin_addrbook_msoutlook_MsOutlookAddrBookContactSourceService.h b/src/native/addrbook/msoutlook/net_java_sip_communicator_plugin_addrbook_msoutlook_MsOutlookAddrBookContactSourceService.h index a8de352..10b142f 100644 --- a/src/native/addrbook/msoutlook/net_java_sip_communicator_plugin_addrbook_msoutlook_MsOutlookAddrBookContactSourceService.h +++ b/src/native/addrbook/msoutlook/net_java_sip_communicator_plugin_addrbook_msoutlook_MsOutlookAddrBookContactSourceService.h @@ -25,6 +25,12 @@ JNIEXPORT void JNICALL JNIEXPORT void JNICALL Java_net_java_sip_communicator_plugin_addrbook_msoutlook_MsOutlookAddrBookContactSourceService_MAPIUninitialize (JNIEnv *, jclass); +JNIEXPORT int JNICALL Java_net_java_sip_communicator_plugin_addrbook_msoutlook_MsOutlookAddrBookContactSourceService_getOutlookBitnessVersion + (JNIEnv *jniEnv, jclass clazz); + +JNIEXPORT int JNICALL Java_net_java_sip_communicator_plugin_addrbook_msoutlook_MsOutlookAddrBookContactSourceService_getOutlookVersion + (JNIEnv *jniEnv, jclass clazz); + #ifdef __cplusplus } #endif |