views:

486

answers:

1

I've already asked this once and it got deleted in under 30 minutes... so here it goes again, hopefully this time the question will be clearer (and no, I'm not bitter ;-))

How do you package a bunch of images and deploy them programmatically as a custom emoticon pack for live messenger? I know the user can create as many custom emoticons as he/she pleases fiddling with some options dialog. What I'm looking for is different: some graphics guy hands me a pack of images and asks me to create a distributable package that people can download and add to their MSN client. How do I do that?

MediaPlayer skins are just zip archives with a funny filename and some JScript + XML magic added. Are emoticon packs something like that? Should I really go and write some .msi code? Any documentation out there? MSDN has Windows Live Messenger Web Toolkit and a Windows Live Client Extensibiliy APIs, but no emoticon talk inside those as far as I can see.

+3  A: 

I have tried to do that some time ago, but failed :P

Here's what I found:

  • Each emoticon is stored into 2 files:
    • an image file, with the extension .dt2. It basically contain the emoticon image (gif/png)
    • a meta data file, with the extension .id2. It contains some extra info like the emoticon name, keyboard shortcut, ..etc.
  • Those files are stored in the folder:
    • Windows XP: %USERPROFILE%\Local Settings\Application Data\Microsoft\Messenger\[EmailAddress]\ObjectStore\CustomEmoticons\
    • Windows Vista: %LOCALAPPDATA%\Microsoft\Messenger\[EmailAddress]\ObjectStore\CustomEmoticons\
  • The meta-data file (.id2) is encrypted using something called PUID (Passport Unique Identifier), which can be obtained by connecting to the Windows Live service using email and password. They can be decrypted using the Win32 API CryptUnprotectData()

  • (not sure about this) You can add emoticons by changing the extension to .dt2 and placing them in the mentioned folders. They will appear but without keyboard shortcut and other meta data. I don't know whether the file name will affect anything. Just tried it, doesn't work.

Here are some related discussions about decrypting id2 files. you might find them useful:

Aziz