Wow! To complete the port for msi.dll, I need LoadTypeLib, RegisterTypeLib and ITypeLib_Release. So, is stdole32 a "32 bit" replacement for Wine typelib oleaut32 functions? I see only CreateTypeLib2 in the file. Thanks, James
ps. I can compile msi w/o those functions, ha! just comment them out. So here is a patch and makefiles, just remove the "msi-" and go.
Steven Edwards wrote:
Hi Sam, --- Sam Lauber sam124@operamail.com wrote:
I tried it with MS mktyplib (with Wine DLLs). Strangly, it produced the exact same FIXMEs that the C program generated, but generated a diffrent typelib. And more then two bytes differed. The two typelibs are attached. I'll try it with InstallShield.
Try this one
http://www.volny.cz/xnavara/stdole32.c
Thanks Steven
Only in /root/wine/wine/dlls/msi: .cvsignore Only in /root/wine/wine/dlls/msi: CVS Only in ./: Makefile Only in ./: Makefile.ros-template diff -u /root/wine/wine/dlls/msi/action.c ./action.c --- /root/wine/wine/dlls/msi/action.c 2004-10-27 20:43:05.000000000 -0500 +++ ./action.c 2004-10-30 12:14:17.000000000 -0500 @@ -28,6 +28,7 @@
#include <stdarg.h> #include <stdio.h> +#include <fcntl.h>
#define COBJMACROS
@@ -39,7 +40,7 @@ #include "fdi.h" #include "msi.h" #include "msiquery.h" -#include "msvcrt/fcntl.h" +//#include "msvcrt/fcntl.h" #include "objbase.h" #include "objidl.h" #include "msipriv.h" @@ -3477,7 +3478,7 @@ continue; }
- res = LoadTypeLib(package->files[index].TargetPath,&ptLib); +// res = LoadTypeLib(package->files[index].TargetPath,&ptLib); if (SUCCEEDED(res)) { WCHAR help[MAX_PATH]; @@ -3488,7 +3489,7 @@
resolve_folder(package,helpid,help,FALSE,FALSE,NULL);
- res = RegisterTypeLib(ptLib,package->files[index].TargetPath,help); +// res = RegisterTypeLib(ptLib,package->files[index].TargetPath,help); if (!SUCCEEDED(res)) ERR("Failed to register type library %s\n", debugstr_w(package->files[index].TargetPath)); @@ -3503,8 +3504,9 @@ debugstr_w(package->files[index].TargetPath)); }
- if (ptLib) - ITypeLib_Release(ptLib); + if (ptLib){ + //ITypeLib_Release(ptLib); + } } else ERR("Failed to load type library %s\n", Only in ./: patch.diff diff -u /root/wine/wine/dlls/msi/suminfo.c ./suminfo.c --- /root/wine/wine/dlls/msi/suminfo.c 2004-10-18 13:20:12.000000000 -0500 +++ ./suminfo.c 2004-10-30 00:09:12.000000000 -0500 @@ -23,6 +23,8 @@ #define COBJMACROS #define NONAMELESSUNION
+#define PRSPEC_PROPID (1) + #include "windef.h" #include "winbase.h" #include "winreg.h"
# $Id: Makefile,v 1.12 2004/02/25 20:00:41 sedwards Exp $
PATH_TO_TOP = ../..
TARGET_TYPE = winedll include $(PATH_TO_TOP)/rules.mak
include $(TOOLS_PATH)/helper.mk
# $Id: Makefile.ros-template
TARGET_NAME = msi
TARGET_OBJECTS = @C_SRCS@ @EXTRA_OBJS@
TARGET_CFLAGS = -D__REACTOS__ @EXTRADEFS@
TARGET_SDKLIBS = @IMPORTS@ libwine.a wine_uuid.a ntdll.a
TARGET_BASE = $(TARGET_BASE_LIB_WINMM)
TARGET_RC_SRCS = @RC_SRCS@ TARGET_RC_BINSRC = @RC_BINSRC@ TARGET_RC_BINARIES = @RC_BINARIES@
TARGET_CLEAN = *.tab.c *.tab.h
default: all
DEP_OBJECTS = $(TARGET_OBJECTS)
include $(TOOLS_PATH)/depend.mk
# # Bison is requiered for building msi.dll. If MingW32 for windows, # download bison from http://gnuwin32.sourceforge.net/ # Make sure bison.exe is placed in your command path for execution. # # sql.tab.c sql.tab.h: sql.y bison -p SQL_ -d ./sql.y -o sql.tab.c
cond.tab.c cond.tab.h: cond.y bison -p COND_ -d ./cond.y -o cond.tab.c