MSI: add stub implementations for MsiPreviewDialog and MsiPreviewBillboard

Mike McCormack mike at codeweavers.com
Thu Jan 20 23:25:19 CST 2005


ChangeLog:
* add stub implementations for MsiPreviewDialog and MsiPreviewBillboard
-------------- next part --------------
? dlls/msi/preview.c
Index: dlls/msi/Makefile.in
===================================================================
RCS file: /home/wine/wine/dlls/msi/Makefile.in,v
retrieving revision 1.17
diff -u -p -r1.17 Makefile.in
--- dlls/msi/Makefile.in	5 Jan 2005 17:11:33 -0000	1.17
+++ dlls/msi/Makefile.in	21 Jan 2005 05:23:52 -0000
@@ -16,6 +16,7 @@ C_SRCS = \
 	msiquery.c \
 	order.c \
 	package.c \
+	preview.c \
 	record.c \
 	regsvr.c \
 	select.c \
Index: dlls/msi/msi.spec
===================================================================
RCS file: /home/wine/wine/dlls/msi/msi.spec,v
retrieving revision 1.27
diff -u -p -r1.27 msi.spec
--- dlls/msi/msi.spec	19 Jan 2005 16:58:03 -0000	1.27
+++ dlls/msi/msi.spec	21 Jan 2005 05:23:53 -0000
@@ -32,7 +32,7 @@
 32 stdcall MsiDatabaseOpenViewW(long wstr ptr)
 33 stdcall MsiDoActionA(long str)
 34 stdcall MsiDoActionW(long wstr)
-35 stub MsiEnableUIPreview
+35 stdcall MsiEnableUIPreview(long ptr)
 36 stdcall MsiEnumClientsA(str long ptr)
 37 stdcall MsiEnumClientsW(wstr long ptr)
 38 stdcall MsiEnumComponentQualifiersA(str long str ptr str ptr)
@@ -94,10 +94,10 @@
 94 stdcall MsiOpenPackageW(wstr ptr)
 95 stdcall MsiOpenProductA(str ptr)
 96 stdcall MsiOpenProductW(wstr ptr)
-97 stub MsiPreviewBillboardA
-98 stub MsiPreviewBillboardW
-99 stub MsiPreviewDialogA
-100 stub MsiPreviewDialogW
+97 stdcall MsiPreviewBillboardA(long str str)
+98 stdcall MsiPreviewBillboardW(long wstr wstr)
+99 stdcall MsiPreviewDialogA(long str)
+100 stdcall MsiPreviewDialogW(long wstr)
 101 stub MsiProcessAdvertiseScriptA
 102 stub MsiProcessAdvertiseScriptW
 103 stdcall MsiProcessMessage(long long long)
Index: dlls/msi/msipriv.h
===================================================================
RCS file: /home/wine/wine/dlls/msi/msipriv.h,v
retrieving revision 1.36
diff -u -p -r1.36 msipriv.h
--- dlls/msi/msipriv.h	20 Jan 2005 20:34:29 -0000	1.36
+++ dlls/msi/msipriv.h	21 Jan 2005 05:23:53 -0000
@@ -206,12 +206,19 @@ typedef struct tagMSIPACKAGE
     LPWSTR PackagePath;
 } MSIPACKAGE;
 
+typedef struct tagMSIPREVIEW
+{
+    MSIOBJECTHDR hdr;
+    MSIDATABASE *db;
+} MSIPREVIEW;
+
 #define MSIHANDLETYPE_ANY 0
 #define MSIHANDLETYPE_DATABASE 1
 #define MSIHANDLETYPE_SUMMARYINFO 2
 #define MSIHANDLETYPE_VIEW 3
 #define MSIHANDLETYPE_RECORD 4
 #define MSIHANDLETYPE_PACKAGE 5
+#define MSIHANDLETYPE_PREVIEW 6
 
 #define MSI_MAJORVERSION 2
 #define MSI_MINORVERSION 0
--- /dev/null	2004-12-26 03:00:47.000000000 +0900
+++ dlls/msi/preview.c	2005-01-21 14:17:55.000000000 +0900
@@ -0,0 +1,116 @@
+/*
+ * Implementation of the Microsoft Installer (msi.dll)
+ *
+ * Copyright 2005 Mike McCormack for CodeWeavers
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+#include <stdarg.h>
+
+#include "windef.h"
+#include "winbase.h"
+#include "winreg.h"
+#include "winnls.h"
+#include "shlwapi.h"
+#include "wine/debug.h"
+#include "msi.h"
+#include "msipriv.h"
+
+WINE_DEFAULT_DEBUG_CHANNEL(msi);
+
+static void MSI_ClosePreview( MSIOBJECTHDR *arg )
+{
+    MSIPREVIEW *preview = (MSIPREVIEW *) arg;
+
+    msiobj_release( &preview->db->hdr );
+}
+
+MSIPREVIEW *MSI_EnableUIPreview( MSIDATABASE *db )
+{
+    MSIPREVIEW *preview;
+
+    preview = alloc_msiobject( MSIHANDLETYPE_PREVIEW, sizeof (MSIPREVIEW),
+                               MSI_ClosePreview );
+    if( preview )
+    {
+        preview->db = db;
+        msiobj_addref( &db->hdr );
+    }
+    return preview;
+}
+
+UINT WINAPI MsiEnableUIPreview( MSIHANDLE hdb, MSIHANDLE* phPreview )
+{
+    MSIDATABASE *db;
+    MSIPREVIEW *preview;
+    UINT r = ERROR_FUNCTION_FAILED;
+
+    TRACE("%ld %p\n", hdb, phPreview);
+
+    db = msihandle2msiinfo( hdb, MSIHANDLETYPE_DATABASE );
+    if( !db )
+        return ERROR_INVALID_HANDLE;
+    preview = MSI_EnableUIPreview( db );
+    if( preview )
+    {
+        *phPreview = alloc_msihandle( &preview->hdr );
+        msiobj_release( &preview->hdr );
+        r = ERROR_SUCCESS;
+    }
+    msiobj_release( &db->hdr );
+
+    return r;
+}
+
+UINT WINAPI MsiPreviewDialogW( MSIHANDLE hPreview, LPCWSTR szDialogName )
+{
+    FIXME("%ld %s\n", hPreview, debugstr_w(szDialogName));
+    return ERROR_CALL_NOT_IMPLEMENTED;
+}
+
+UINT WINAPI MsiPreviewDialogA( MSIHANDLE hPreview, LPCSTR szDialogName )
+{
+    UINT r, len;
+    LPWSTR strW = NULL;
+
+    TRACE("%ld %s\n", hPreview, debugstr_a(szDialogName));
+
+    if( szDialogName )
+    {
+        len = MultiByteToWideChar( CP_ACP, 0, szDialogName, -1, NULL, 0 );
+        strW = HeapAlloc( GetProcessHeap(), 0, len*sizeof(WCHAR) );
+        MultiByteToWideChar( CP_ACP, 0, szDialogName, -1, strW, len );
+    }
+    r = MsiPreviewDialogW( hPreview, strW );
+    HeapFree( GetProcessHeap(), 0, strW );
+    return r;
+}
+
+UINT WINAPI MsiPreviewBillboardW( MSIHANDLE hPreview, LPCWSTR szControlName,
+                                  LPCWSTR szBillboard)
+{
+    FIXME("%ld %s %s\n", hPreview, debugstr_w(szControlName),
+          debugstr_w(szBillboard));
+    return ERROR_CALL_NOT_IMPLEMENTED;
+}
+
+UINT WINAPI MsiPreviewBillboardA( MSIHANDLE hPreview, LPCSTR szControlName,
+                                  LPCSTR szBillboard)
+{
+    FIXME("%ld %s %s\n", hPreview, debugstr_a(szControlName),
+          debugstr_a(szBillboard));
+    return ERROR_CALL_NOT_IMPLEMENTED;
+}


More information about the wine-patches mailing list