diff options
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 |