aboutsummaryrefslogtreecommitdiffstats
path: root/src/native/addrbook/msoutlook
diff options
context:
space:
mode:
Diffstat (limited to 'src/native/addrbook/msoutlook')
-rw-r--r--src/native/addrbook/msoutlook/MAPIBitness.cxx67
-rw-r--r--src/native/addrbook/msoutlook/MAPIBitness.h2
-rw-r--r--src/native/addrbook/msoutlook/MsOutlookAddrBookContactSourceService.cxx11
-rw-r--r--src/native/addrbook/msoutlook/net_java_sip_communicator_plugin_addrbook_msoutlook_MsOutlookAddrBookContactSourceService.cxx26
-rw-r--r--src/native/addrbook/msoutlook/net_java_sip_communicator_plugin_addrbook_msoutlook_MsOutlookAddrBookContactSourceService.h6
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