2009/1/1 Steven Edwards winehacker@gmail.com:
Honestly though I think this is the wrong approach. If you want to emulate an older windows environment you should look at something like VMware's Thinapp. The Wine on Windows method is going to involve either emulating Win32 on Cygwin on Win32 or Win32 on POSIX on NTOS. I think its too many layers of abstraction and redirection. I don't know the internals of the Thinapp design, (if Ge van Geldorp is lurking he can explain more), but I believe it uses Side by Side assemblies to link on older versions of Windows dlls or Windows replacement dlls to trick the applications in to thinking they are on older Windows. You could take the existing Wine for Mingw32 dlls and a good bit of other Wine code and try to start a project doing something like this without the overhead of the wineserver and posix emulation.
A FOSS Thinapp clone sounds like a reall fun project actually...
I see two advantages of Wine over VMware technology here. 1) Wine is free, VMware Thinapp is trial/commercial license 2) VMware is a virtual machine, even for Thinapp. You need a copy of a complete operating system to run apps inside it.
The argument could be made that a virtual machine (e.g. VirtualBox OSE, QEMU or KVM/QEMU) is a better solution to getting Windows programs to run than using Wine (in particular VirtualBox which supports hardware accelerated OpenGL and, using wined3d in the development version, DirectX). So why has there been any development on Wine at all over the past 16 years or so? Because Wine is *not* a complete operating system, and because Wine is distributed under free (beer and speech forms) licenses.
I also see two problems with the idea of creating a Wine-based thinapp clone. 1) Effort. You're talking about a redesign of Wine that involves removing POSIX and wineserver dependence. This is not a trivial thing in any way, shape or form. Wine is designed from the start to provide a Win32 compatibility layer and environment on Unix and Unix-like systems. You would also have to remove all X11 dependence. (I'm not sure how Wine on Windows works right now, is there a DirectX pass-through or does it use an X server?) 2) Wine already allows you to change what Windows version is reported to applications on a per-app basis. I'm unsure what component is used for this, but I suspect it's built somewhere into wineserver. Someone correct me if I'm wrong :)