Commit 17e66e06 authored by Alexandre Julliard's avatar Alexandre Julliard

msi: Convert the dll registration to the IRegistrar mechanism.

parent 875c1b87
......@@ -34,7 +34,6 @@ C_SRCS = \
preview.c \
record.c \
registry.c \
regsvr.c \
script.c \
select.c \
source.c \
......@@ -50,6 +49,7 @@ C_SRCS = \
IDL_H_SRCS = msiserver.idl
IDL_I_SRCS = msiserver.idl
IDL_R_SRCS = msiserver.idl
IDL_TLB_SRCS = msiserver.idl
BISON_SRCS = \
......
......@@ -646,7 +646,7 @@ static UINT get_action_info( const GUID *guid, INT *type, MSIHANDLE *handle,
IWineMsiRemoteCustomAction *rca = NULL;
HRESULT r;
r = DllGetClassObject( &CLSID_IWineMsiRemoteCustomAction,
r = DllGetClassObject( &CLSID_WineMsiRemoteCustomAction,
&IID_IClassFactory, (LPVOID *)&cf );
if (FAILED(r))
{
......
......@@ -23,6 +23,9 @@
/* @makedep: msiserver.tlb */
1 TYPELIB msiserver.tlb
/* @makedep: msiserver.rgs */
1 WINE_REGISTRY msiserver.rgs
/* @makedep: instadvert.bmp */
0x1001 BITMAP instadvert.bmp
......
......@@ -28,7 +28,9 @@
#include "winreg.h"
#include "shlwapi.h"
#include "oleauto.h"
#include "rpcproxy.h"
#include "msipriv.h"
#include "msiserver.h"
#include "wine/debug.h"
......@@ -206,28 +208,28 @@ HRESULT WINAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID *ppv)
{
TRACE("%s %s %p\n", debugstr_guid(rclsid), debugstr_guid(riid), ppv);
if ( IsEqualCLSID (rclsid, &CLSID_IMsiServerX2) )
if ( IsEqualCLSID (rclsid, &CLSID_MsiInstaller) )
{
*ppv = &MsiServer_CF;
return S_OK;
}
if ( IsEqualCLSID (rclsid, &CLSID_IWineMsiRemoteCustomAction) )
if ( IsEqualCLSID (rclsid, &CLSID_WineMsiRemoteCustomAction) )
{
*ppv = &WineMsiCustomRemote_CF;
return S_OK;
}
if ( IsEqualCLSID (rclsid, &CLSID_IWineMsiRemotePackage) )
if ( IsEqualCLSID (rclsid, &CLSID_WineMsiRemotePackage) )
{
*ppv = &WineMsiRemotePackage_CF;
return S_OK;
}
if( IsEqualCLSID (rclsid, &CLSID_IMsiServerMessage) ||
IsEqualCLSID (rclsid, &CLSID_IMsiServer) ||
IsEqualCLSID (rclsid, &CLSID_IMsiServerX1) ||
IsEqualCLSID (rclsid, &CLSID_IMsiServerX3) )
if( IsEqualCLSID (rclsid, &CLSID_MsiServerMessage) ||
IsEqualCLSID (rclsid, &CLSID_MsiServer) ||
IsEqualCLSID (rclsid, &CLSID_PSFactoryBuffer) ||
IsEqualCLSID (rclsid, &CLSID_MsiServerX3) )
{
FIXME("create %s object\n", debugstr_guid( rclsid ));
}
......@@ -260,3 +262,19 @@ HRESULT WINAPI DllCanUnloadNow(void)
{
return dll_count == 0 ? S_OK : S_FALSE;
}
/***********************************************************************
* DllRegisterServer (MSI.@)
*/
HRESULT WINAPI DllRegisterServer(void)
{
return __wine_register_resources( msi_hInstance, NULL );
}
/***********************************************************************
* DllUnregisterServer (MSI.@)
*/
HRESULT WINAPI DllUnregisterServer(void)
{
return __wine_unregister_resources( msi_hInstance, NULL );
}
......@@ -644,20 +644,6 @@ typedef struct tagMSISCRIPT
#define MSIHANDLE_MAGIC 0x4d434923
DEFINE_GUID(CLSID_IMsiServer, 0x000C101C,0x0000,0x0000,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x46);
DEFINE_GUID(CLSID_IMsiServerX1, 0x000C103E,0x0000,0x0000,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x46);
DEFINE_GUID(CLSID_IMsiServerX2, 0x000C1090,0x0000,0x0000,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x46);
DEFINE_GUID(CLSID_IMsiServerX3, 0x000C1094,0x0000,0x0000,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x46);
DEFINE_GUID(CLSID_IMsiServerMessage, 0x000C101D,0x0000,0x0000,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x46);
DEFINE_GUID(CLSID_IWineMsiRemoteCustomAction,0xBA26E6FA,0x4F27,0x4f56,0x95,0x3A,0x3F,0x90,0x27,0x20,0x18,0xAA);
DEFINE_GUID(CLSID_IWineMsiRemotePackage,0x902b3592,0x9d08,0x4dfd,0xa5,0x93,0xd0,0x7c,0x52,0x54,0x64,0x21);
DEFINE_GUID(CLSID_MsiTransform, 0x000c1082,0x0000,0x0000,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x46);
DEFINE_GUID(CLSID_MsiDatabase, 0x000c1084,0x0000,0x0000,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x46);
DEFINE_GUID(CLSID_MsiPatch, 0x000c1086,0x0000,0x0000,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x46);
/* handle unicode/ascii output in the Msi* API functions */
typedef struct {
BOOL unicode;
......
......@@ -86,6 +86,99 @@ interface IWineMsiRemoteCustomAction : IUnknown
[out] BSTR *function, [out] IWineMsiRemotePackage **package );
}
[
uuid(000c101c-0000-0000-c000-000000000046),
oleautomation,
object
]
interface IMsiServer : IUnknown
{
/* FIXME: methods */
}
[
uuid(000c101d-0000-0000-c000-000000000046),
oleautomation,
object
]
interface IMsiMessage : IUnknown
{
/* FIXME: methods */
}
[
uuid(000c1025-0000-0000-c000-000000000046),
oleautomation,
object
]
interface IMsiCustomAction : IUnknown
{
/* FIXME: methods */
}
[
uuid(000c1033-0000-0000-c000-000000000046),
oleautomation,
object
]
interface IMsiRemoteAPI : IUnknown
{
/* FIXME: methods */
}
[
helpstring("Msi install server"),
progid("IMsiServer"),
uuid(000c101c-0000-0000-c000-000000000046)
]
coclass MsiServer { interface IMsiServer; }
[
helpstring("Microsoft Windows Installer Message RPC"),
progid("WindowsInstaller.Message"),
uuid(000c101d-0000-0000-c000-000000000046)
]
coclass MsiServerMessage { interface IMsiMessage; }
[
threading(both),
uuid(000c103e-0000-0000-c000-000000000046)
]
coclass PSFactoryBuffer { interface IPSFactoryBuffer; }
[
uuid(000c1082-0000-0000-c000-000000000046)
]
coclass MsiTransform { }
[
uuid(000c1084-0000-0000-c000-000000000046)
]
coclass MsiDatabase { }
[
uuid(000c1086-0000-0000-c000-000000000046)
]
coclass MsiPatch { }
[
threading(apartment),
uuid(000c1094-0000-0000-c000-000000000046)
]
/* FIXME: unidentified class */
coclass MsiServerX3 { interface IMsiServer; }
[
uuid(ba26e6fa-4f27-4f56-953a-3f90272018aa)
]
coclass WineMsiRemoteCustomAction { interface WineMsiRemoteCustomAction; }
[
uuid(902b3592-9d08-4dfd-a593-d07c52546421)
]
coclass WineMsiRemotePackage { interface WineMsiRemotePackage; }
[ uuid(000C1092-0000-0000-C000-000000000046), version(1.0) ]
library WindowsInstaller
{
......@@ -452,4 +545,12 @@ library WindowsInstaller
properties:
methods:
}
[
helpstring("Microsoft Windows Installer"),
threading(apartment),
progid("WindowsInstaller.Installer"),
uuid(000c1090-0000-0000-c000-000000000046)
]
coclass MsiInstaller { interface Installer; }
}
HKCR
{
NoRemove CLSID
{
'{000C101D-0000-0000-C000-000000000046}' { DllVersion = s '3.1.4000' }
'{000C1090-0000-0000-C000-000000000046}' { InProcHandler32 = s 'ole32.dll' }
}
}
......@@ -443,6 +443,7 @@ HKLM,%CurrentVersion%\Explorer\AutoplayHandlers,,16
HKLM,%CurrentVersion%\Explorer\DriveIcons,,16
HKLM,%CurrentVersion%\Explorer\KindMap,,16
HKLM,%CurrentVersion%\Group Policy,,16
HKLM,%CurrentVersion%\Installer,"InstallerLocation",,"%11%"
HKLM,%CurrentVersion%\Policies\System,"EnableLUA",0x10003,0
HKLM,%CurrentVersion%\PreviewHandlers,,16
HKLM,%CurrentVersion%\Setup,"BootDir",,"%30%"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment