[jitsi-dev] Outlook IM Plugin


#1

Hey Lyubo

I had a short chat with Emil about the Outlook IM-Integration feature, and
with my Outlook 2010 its not working (probably unrelated to Jitsi, Lync and
Live Messenger also don't publish their presence).
However while investigating I noticed some quirks in the Jitsi-Plugin:

1) Jitsi writes to HKCU\Software\IM Providers\Communicator, but this key
belongs to Lync. Probably it should go to ...\IM Providers\Jitsi
2) The ProcessId DWORD value below ...\IM Providers\App is not set/updated
by Jitsi (Optional value? Live Messenger doesn't add this value either.)
3) "HKCU\Software\Microsoft\Office\12.0\Outlook\IM\ EnablePresence" has an
additional whitespace at the beginning. Typo?
4) The whole 11.0 and 12.0-Keys should not get created unless Outlook
2003/2007 is really installed (not sure if this is all caused by Jitsi)

I haven't looked at MS's documentation about the stuff, so please excuse me
if comment on anything that is actually as it should be :slight_smile:

Regards,
Ingo

.


#2

Hey Ingo,

Glad to hear from you!

I had a short chat with Emil about the Outlook IM-Integration feature, and
with my Outlook 2010 its not working (probably unrelated to Jitsi, Lync and
Live Messenger also don't publish their presence).

Well, I've personally tested it on three different Windows 7 Home Premium setups with trials of Office Home and Business 2010 and Office Professional 2010 and non-trial Outlook 2010 and it never failed. Additionally, we've had it successfully running on multiple third-party setups.

However while investigating I noticed some quirks in the Jitsi-Plugin:

Thank you very much for the time and effort to review the code!

1) Jitsi writes to HKCU\Software\IM Providers\Communicator, but this key
belongs to Lync. Probably it should go to ...\IM Providers\Jitsi

The presence integration implemented by Jitsi is referred to as "Presence Integration between IM Applications and the 2007 Microsoft Office System". The 2010 way of doing it is different in terms of COM interfaces. The 2007 way is supported by Office 2007 and Office 2010 and the 2010 way is, of course, supported by Office 2010 but not supported by Office 2007. The (puny) document provided by Microsoft on the subject says:

This document describes how an instant messaging (IM) application is integrated with the 2007 Microsoft Office system to provide Presence, IM, as well as call and conferencing feature.[…] Advertise the start and shut down of your application’s COM server by setting the registry value REG_DW HKEY_CURRENT_USER\Software\IM Providers\Communicator\UpAndRunning.

2) The ProcessId DWORD value below ...\IM Providers\App is not set/updated
by Jitsi (Optional value? Live Messenger doesn't add this value either.)

It's the first time that I'm personally seeing this key mentioned. Could you please point us to documentation which clarifies its meaning in relation to the presence integration?

3) "HKCU\Software\Microsoft\Office\12.0\Outlook\IM\ EnablePresence" has an
additional whitespace at the beginning. Typo?

It must be a typo, thank you! I might be tired, messed up or something right now but I'm afraid I don't see where it's being set… Could you please specify the file and line?

4) The whole 11.0 and 12.0-Keys should not get created unless Outlook
2003/2007 is really installed (not sure if this is all caused by Jitsi)

Jitsi does set some keys in the 11.0 and 12.0 hierarchies but, as far as I remember, some parts of these hierarchies exist after installing Office or Outlook 2010 even without installing Jitsi.

Moreover, the "Presence Integration between IM Applications and the 2007 Microsoft Office System" document quoted above also says:

Set the IM provider that Office applications call to be Office Communicator by configuring the following registry value: REG_DWORD HKEY_CURRENT_USER\Software\Microsoft\Office\12.0\Common\PersonaMenu\RTCApplication.

The 11.0 keys were not really mentioned in any Microsoft document we've read on the subject but we found them in some online forum discussing failures to activate the presence integration.

The bottom line for me is that we may have to look a bit deeper into it.

Best regards,
Lyubomir.

···

On Jul 26, 2012, at 11:09 PM, "Ingo Bauersachs" <ingo@jitsi.org> wrote:


#3

Hey

Glad to hear from you!

Well, I'm busy, but I try to at least stay up to date :slight_smile:

I had a short chat with Emil about the Outlook IM-Integration feature,

and

with my Outlook 2010 its not working (probably unrelated to Jitsi, Lync

and

Live Messenger also don't publish their presence).

Well, I've personally tested it on three different Windows 7 Home Premium
setups with trials of Office Home and Business 2010 and Office

Professional

2010 and non-trial Outlook 2010 and it never failed. Additionally, we've

had

it successfully running on multiple third-party setups.

Please try to install Lync and/or Live Messenger into one of your testbeds.
I was successful in getting it running now (see below).

However while investigating I noticed some quirks in the Jitsi-Plugin:

Thank you very much for the time and effort to review the code!

1) Jitsi writes to HKCU\Software\IM Providers\Communicator, but this key
belongs to Lync. Probably it should go to ...\IM Providers\Jitsi

The presence integration implemented by Jitsi is referred to as "Presence
Integration between IM Applications and the 2007 Microsoft Office System".
The 2010 way of doing it is different in terms of COM interfaces. The 2007
way is supported by Office 2007 and Office 2010 and the 2010 way is, of
course, supported by Office 2010 but not supported by Office 2007. The

(puny)

document provided by Microsoft on the subject says:

This document describes how an instant messaging (IM) application is
integrated with the 2007 Microsoft Office system to provide Presence, IM,

as

well as call and conferencing feature.[.] Advertise the start and shut

down

of your application's COM server by setting the registry value REG_DW
HKEY_CURRENT_USER\Software\IM Providers\Communicator\UpAndRunning.

I've just search for it now, but you might want to take a look at this
document:
http://www.microsoft.com/en-us/download/details.aspx?id=23841

It says: "Write the following registry keys under HKLM\Software\IM
Providers\<Application Name> during the installation of the third-party
client application." It also mentions some further values to write that are
currently not present.

When I changed IM Providers\DefaultIMApp to Jitsi, created a new Subkey
named Jitsi, and set the values FriendlyName=Jitsi and ProcessName=run.exe
it ran successful even without the UpAndRunning=2 value. I could see some
online statuses and could start a chat. So I conclude that there is some
confusion by "hijacking" Lync's Communicator-Key.

Setting DefaultIMApp to Jitsi should probably be either a setup option or a
choice inside Jitsi's options.

2) The ProcessId DWORD value below ...\IM Providers\App is not

set/updated

by Jitsi (Optional value? Live Messenger doesn't add this value either.)

It's the first time that I'm personally seeing this key mentioned. Could

you

please point us to documentation which clarifies its meaning in relation

to

the presence integration?

I couldn't find the ProcessId value in the above document, so it probably is
something that Lync adds just for itself.

3) "HKCU\Software\Microsoft\Office\12.0\Outlook\IM\ EnablePresence" has

an

additional whitespace at the beginning. Typo?

It must be a typo, thank you! I might be tired, messed up or something

right

now but I'm afraid I don't see where it's being set. Could you please

specify

the file and line?

Hmm... I also couldn't find it and after deleting it, it is not recreated. I
saw it in a procmon trace, but nevermind.

4) The whole 11.0 and 12.0-Keys should not get created unless Outlook
2003/2007 is really installed (not sure if this is all caused by Jitsi)

Jitsi does set some keys in the 11.0 and 12.0 hierarchies but, as far as I
remember, some parts of these hierarchies exist after installing Office or
Outlook 2010 even without installing Jitsi.

True, I've also seen them sometimes on machines with online Office 2010. But
I to be gentle to the system, I think we should check for the existence of
Software\\Microsoft\\Office\\1x.0\\Outlook\\ and
Software\\Microsoft\\Office\\1x.0\\Common\\PersonaMenu in
setIMProvidersCommunicatorUpAndRunning before simply writing to it.

Moreover, the "Presence Integration between IM Applications and the 2007
Microsoft Office System" document quoted above also says:

Set the IM provider that Office applications call to be Office
Communicator by configuring the following registry value: REG_DWORD
HKEY_CURRENT_USER\Software\Microsoft\Office\12.0\Common\PersonaMenu\RTCAp
plic ation.

The 11.0 keys were not really mentioned in any Microsoft document we've

read

on the subject but we found them in some online forum discussing failures

to

activate the presence integration.

11 would be Office 2003, but maybe MS forgot to update some internals to 12?

The bottom line for me is that we may have to look a bit deeper into it.

You might be interested in the value IM Providers\OfficePresenceLogging=1
(DWORD). When present, Outlook creates a trace file at
%userprofile%\tracing\officepresence-#.log

Best regards,
Lyubomir

Regards,
Ingo

···

On Jul 26, 2012, at 11:09 PM, "Ingo Bauersachs" <ingo@jitsi.org> wrote:


#4

Hello, Ingo!

I had a short chat with Emil about the Outlook IM-Integration feature,

and

with my Outlook 2010 its not working (probably unrelated to Jitsi, Lync

and

Live Messenger also don't publish their presence).

Well, I've personally tested it on three different Windows 7 Home Premium
setups with trials of Office Home and Business 2010 and Office

Professional

2010 and non-trial Outlook 2010 and it never failed. Additionally, we've

had

it successfully running on multiple third-party setups.

Please try to install Lync and/or Live Messenger into one of your testbeds.
I was successful in getting it running now (see below).

We had Windows Live Messenger installed in at least one of my testbeds and it caused no problems for us.

However while investigating I noticed some quirks in the Jitsi-Plugin:

Thank you very much for the time and effort to review the code!

1) Jitsi writes to HKCU\Software\IM Providers\Communicator, but this key
belongs to Lync. Probably it should go to ...\IM Providers\Jitsi

The presence integration implemented by Jitsi is referred to as "Presence
Integration between IM Applications and the 2007 Microsoft Office System".
The 2010 way of doing it is different in terms of COM interfaces. The 2007
way is supported by Office 2007 and Office 2010 and the 2010 way is, of
course, supported by Office 2010 but not supported by Office 2007. The

(puny)

document provided by Microsoft on the subject says:

This document describes how an instant messaging (IM) application is
integrated with the 2007 Microsoft Office system to provide Presence, IM,

as

well as call and conferencing feature.[.] Advertise the start and shut

down

of your application's COM server by setting the registry value REG_DW
HKEY_CURRENT_USER\Software\IM Providers\Communicator\UpAndRunning.

I've just search for it now, but you might want to take a look at this
document:
http://www.microsoft.com/en-us/download/details.aspx?id=23841

Sure, we know it but we were targeting 2007 as well and the document describes 2010.

It says: "Write the following registry keys under HKLM\Software\IM
Providers\<Application Name> during the installation of the third-party
client application." It also mentions some further values to write that are
currently not present.

When I changed IM Providers\DefaultIMApp to Jitsi, created a new Subkey
named Jitsi, and set the values FriendlyName=Jitsi and ProcessName=run.exe
it ran successful even without the UpAndRunning=2 value. I could see some
online statuses and could start a chat. So I conclude that there is some
confusion by "hijacking" Lync's Communicator-Key.

As far as we understood the 2007 document, it described posing as Communicator.

Setting DefaultIMApp to Jitsi should probably be either a setup option or a
choice inside Jitsi's options.

It could be, it is currently neither of the two.

4) The whole 11.0 and 12.0-Keys should not get created unless Outlook
2003/2007 is really installed (not sure if this is all caused by Jitsi)

Jitsi does set some keys in the 11.0 and 12.0 hierarchies but, as far as I
remember, some parts of these hierarchies exist after installing Office or
Outlook 2010 even without installing Jitsi.

True, I've also seen them sometimes on machines with online Office 2010. But
I to be gentle to the system, I think we should check for the existence of
Software\\Microsoft\\Office\\1x.0\\Outlook\\ and
Software\\Microsoft\\Office\\1x.0\\Common\\PersonaMenu in
setIMProvidersCommunicatorUpAndRunning before simply writing to it.

We understand and we're not sure. For example, iTunes creates an Office key for its plug-in upon installation even in the absence of a previous Office setup. Besides, Office/Outlook 2010 takes into account the related registry values of Office/Outlook 2010 because it supports the legacy/2007 approach to IM/presence integration that Jitsi implements. Besides, we're not sure when we'll be able to allocate time to redesign and retest the whole thing for 2010-only compatibility.

Moreover, the "Presence Integration between IM Applications and the 2007
Microsoft Office System" document quoted above also says:

Set the IM provider that Office applications call to be Office
Communicator by configuring the following registry value: REG_DWORD
HKEY_CURRENT_USER\Software\Microsoft\Office\12.0\Common\PersonaMenu\RTCAp
plic ation.

The 11.0 keys were not really mentioned in any Microsoft document we've

read

on the subject but we found them in some online forum discussing failures

to

activate the presence integration.

11 would be Office 2003, but maybe MS forgot to update some internals to 12?

I don't know really. We'll try to remove at the very least the 11 key when we get to revisiting the implementation.

The bottom line for me is that we may have to look a bit deeper into it.

You might be interested in the value IM Providers\OfficePresenceLogging=1
(DWORD). When present, Outlook creates a trace file at
%userprofile%\tracing\officepresence-#.log

Thank you, we knew and used OfficePresenceLogging from the start of the development of the feature.

···

On 27.07.2012, at 05:15, Ingo Bauersachs <ingo@jitsi.org> wrote: