You need to write a small app that uses the ContentInstaller API in messenger.
I'll post you the API info later if you like (I don't have PE Explorer at work, but I do at home).
Here it is:
code:
//Messenger Content Installer Type Library
//Version: 1.0
MessengerContentInstallerLibrary;
GUID = {C1637F37-3FC8-4B37-B3B2-6CC5E202390D};
Dispatch DMessengerContentEvents;
GUID = {51A01E38-7505-401B-ABC9-F460E1499728};
function OnContentInstalled(lhrResult: I4); stdcall;
//Single Click Download Interface
Dispatch IMessengerContent;
GUID = {83B2A407-22B9-4842-97C6-DE30EC6DAC3E};
function QueryInterface(riid: ^GUID; out ppvObj: ^^VOID); stdcall;
function AddRef: UI4; stdcall;
function Release: UI4; stdcall;
function GetTypeInfoCount(out pctinfo: ^UINT); stdcall;
function GetTypeInfo(itinfo: UINT; lcid: UI4; out pptinfo: ^^VOID); stdcall;
function GetIDsOfNames(riid: ^GUID; rgszNames: ^^I1; cNames: UINT; lcid: UI4; out rgdispid: ^I4); stdcall;
function Invoke(dispidMember: I4; riid: ^GUID; lcid: UI4; wFlags: UI2; pdispparams: ^DISPPARAMS; out pvarResult: ^Variant; out pexcepinfo: ^EXCEPINFO; out puArgErr: ^UINT); stdcall;
//Download content to the client from a CAB file.
function InstallContent(bstrURL: BSTR); stdcall;
//Download content to the client from a Merchant CAB file.
function InstallIndirectContent(bstrURL: BSTR); stdcall;
//Single Click Download Interface v2
Dispatch IMessengerContent2;
GUID = {647C4DDA-B572-4EEF-871A-7ED254E680F7};
function QueryInterface(riid: ^GUID; out ppvObj: ^^VOID); stdcall;
function AddRef: UI4; stdcall;
function Release: UI4; stdcall;
function GetTypeInfoCount(out pctinfo: ^UINT); stdcall;
function GetTypeInfo(itinfo: UINT; lcid: UI4; out pptinfo: ^^VOID); stdcall;
function GetIDsOfNames(riid: ^GUID; rgszNames: ^^I1; cNames: UINT; lcid: UI4; out rgdispid: ^I4); stdcall;
function Invoke(dispidMember: I4; riid: ^GUID; lcid: UI4; wFlags: UI2; pdispparams: ^DISPPARAMS; out pvarResult: ^Variant; out pexcepinfo: ^EXCEPINFO; out puArgErr: ^UINT); stdcall;
//Download content to the client from a CAB file.
function InstallContent(bstrURL: BSTR); stdcall;
//Download content to the client from a Merchant CAB file.
function InstallIndirectContent(bstrURL: BSTR); stdcall;
//Messenger version
property-get Version: BSTR; stdcall;
//Single Click Download Interface v3
Dispatch IMessengerContent3;
GUID = {DE72ACCE-9D1D-4484-8A5E-5C5B517153CC};
function QueryInterface(riid: ^GUID; out ppvObj: ^^VOID); stdcall;
function AddRef: UI4; stdcall;
function Release: UI4; stdcall;
function GetTypeInfoCount(out pctinfo: ^UINT); stdcall;
function GetTypeInfo(itinfo: UINT; lcid: UI4; out pptinfo: ^^VOID); stdcall;
function GetIDsOfNames(riid: ^GUID; rgszNames: ^^I1; cNames: UINT; lcid: UI4; out rgdispid: ^I4); stdcall;
function Invoke(dispidMember: I4; riid: ^GUID; lcid: UI4; wFlags: UI2; pdispparams: ^DISPPARAMS; out pvarResult: ^Variant; out pexcepinfo: ^EXCEPINFO; out puArgErr: ^UINT); stdcall;
//Download content to the client from a CAB file.
function InstallContent(bstrURL: BSTR); stdcall;
//Download content to the client from a Merchant CAB file.
function InstallIndirectContent(bstrURL: BSTR); stdcall;
//Messenger version
property-get Version: BSTR; stdcall;
//Install content to the client from XML data.
function InstallMobileContent(bstrXML: BSTR); stdcall;
//Messenger Content Installer Object
CoClass MessengerContentInstaller;
GUID = {F06608C7-1874-4EEA-B3B2-DF99EBB144B8};