2009/1/1 Steven Edwards <winehacker(a)gmail.com>om>:
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 :)