blob: 296fb642a04ee075814d065b8461def54130ccf4 [file] [log] [blame]
Dimitrie O. Paun041a8de2003-04-14 21:31:48 +00001INTRODUCTION
2~~~~~~~~~~~~
3
4This document attempts to establish guidelines for people making binary
5packages of Wine.
6
7It expresses the basic principles that the Wine developers have agreed
8should be used when building Wine. It also attempts to highlight the areas
9where there are different approaches to packaging Wine, so that the packager
10can understand the different alternatives that have been considered and their
11rationales.
12
13TERMS
14~~~~~
15
16There are several terms and paths used in this document as place holders
17for configurable values. Those terms are described here.
18 * WINEPREFIX: is the user's Wine configuration directory.
19 This is almost always ~/.wine, but can be overridden by
20 the user by setting the WINEPREFIX environment variable.
21
22 * PREFIX: is the prefix used when selecting an installation target.
23 The current default is /usr/local. This results in binary
24 installation into /usr/local/bin, library installation into
25 /usr/local/wine/lib, and so forth.
26 This value can be overridden by the packager. In fact, FHS 2.2
27 (http://www.pathname.com/fhs/) specifications suggest that a better
28 prefix is /opt/wine. Ideally, a packager would also allow the
29 installer to override this value.
30
31 * ETCDIR: is the prefix that Wine uses to find the global
32 configuration directory. This can be changed by the configure
33 option sysconfdir. The current default is $PREFIX/etc.
34
35 * WINDOWSDIR: is an important concept to Wine. This directory specifies
36 what directory corresponds to the root Windows directory
37 (e.g. C:\WINDOWS). This directory is specified by the user, in
38 the user's configuration file. Generally speaking, this directory
39 is either set to point at an empty directory, or it is set to point
40 at a Windows partition that has been mounted through the vfat driver.
41 NOTE: It is extremely important that the packager understand the
42 importance of WINDOWSDIR and convey this information and
43 choice to the end user.
44
Dimitrie O. Paun93cd5bd2003-09-18 04:29:56 +000045DEPENDENCIES
46~~~~~~~~~~~~
47
48There are two types of dependencies: hard and soft dependencies.
49
50A hard dependency must be available at runtime for Wine to function,
51if compiled into the code. Soft dependencies on the other hand
52will degrade gracefully at runtime if unavailable on the runtime system.
53Ideally, we should eliminate all hard dependencies in favour of
54soft dependencies.
55
56To enable a soft dependency, it must be available at compile time.
57As a packager, please do your best to make sure that as many soft
58dependencies are available during compilation. Failing to have a
59soft dependency available means that users cannot benefit
60from a Wine capability.
61
62Here is a list of the soft dependencies. We suggest packagers
63install each and every last of those before building the package.
64These libraries are not dependencies in the RPM sense. In DEB packages,
65they should appear as "Suggests" or "Recommends", as the case may be.
66 * FreeType: http://www.freetype.org
67 This library is used for direct rendering of fonts. It provides
68 better support of fonts than using the X11 fonts engine. It is
69 only needed for the X11 back end engine. Used from GDI.
70
71 * Alsa: "http://sourceforge.net/projects/alsa (Linux only)
72 This library gives sound support to the Windows environment.
73
74 * JACK: http://jackit.sourceforge.net
75 Similar to Alsa, it allow Wine to use the JACK audio server.
76
77 * CUPS: http://www.cups.org
78 This library allows Windows to see CUPS defined printers.
79
80 * OpenGL
81 This is used for both OpenGL and Direct3D (and some other
82 DirectX functions as well) support in Wine. There are many many
83 libraries for providing this functionality. It is enough for one
84 of them to be available when compiling Wine. Wine can work with
85 any other library during runtime.
86 If no library is available, packagers are encouraged to compile
87 Wine with Mesa3D (http://www.mesa3d.org), which requires no
88 hardware support to install.
89
Dimitrie O. Paun041a8de2003-04-14 21:31:48 +000090GOALS
91~~~~~
92
93An installation from a Wine package should:
94 * Install quickly and simply:
95 The initial installation should require no user input. An
96 'rpm -i wine.rpm' or 'apt-get install wine'
97 should suffice for initial installation.
98
99 * Work quickly and simply:
100 The user should be able to launch Solitaire
101 within minutes of downloading the Wine package.
102
103 * Comply with Filesystem Hierarchy Standard
104 A Wine installation should, as much as possible, comply
105 with the FHS standard (http://www.pathname.com/fhs/).
106
107 * Preserve flexibility
108 None of the flexibility built into Wine should
109 be hidden from the end user.
110
111 * Easy configuration
112 Come as preconfigured as possible, so the user does
113 not need to change any configuration files.
114
115 * Small footprint
116 Use only as much diskspace as needed per user.
117
118 * Reduce support requirements.
119 A packaged version of Wine should be sufficiently easy to use and
120 have quick and easy access to FAQs and documentation such that
121 requests to the newsgroup and development group go down.
122 Further, it should be easy for users to capture good bug reports.
123
124REQUIREMENTS
125~~~~~~~~~~~~
126
127Successfully installing Wine requires:
128 * Much thought and work from the packager (1x)
129
130 * A configuration file
131 Wine will not run without a configuration file. Wine provides a
132 a sample config file and it can be found in documentation/samples.
133 Some packagers may attempt to provide (or dynamically generate) a
134 default configuration file. Some packagers may wish to rely on
135 winesetup to generate the configuration file.
136
137 * A writeable C drive
138 A writeable C:\ directory structure on a per-user basis.
139 Applications do dump .ini file into C:\WINDOWS, installer
140 dump .exe/.dll/etc. files into C:\WINDOWS or C:\Program Files.
141
142 * An initial set of registry entries.
Steven Edwards26fe9142004-05-05 05:53:37 +0000143 For custom changes to the default registry, tools/wine.inf
144 can be modified as needed. The current preferred method of
145 configuring/installing Wine is to run /tools/wineinstall.
146 There are several other choices that could be made; registries
147 can be imported from a Windows partition. At this time, Wine
148 does not completely support a complex multi-user installation
149 ala Windows NT, but it could fairly readily.
Dimitrie O. Paun041a8de2003-04-14 21:31:48 +0000150
151 * Special files
152 Some special .dll and .exe files in the C:\WINDOWS\SYSTEM
153 directory, since applications directly check for their presence.
154
155WINE COMPONENTS
156~~~~~~~~~~~~~~~
157
158 * Executable Files
159 - notepad : The windows Notepad replacement.
160 - progman : A Program Manager replacement.
Steven Edwards26fe9142004-05-05 05:53:37 +0000161 - regedit : A graphical tool to edit your registry or for
Dimitrie O. Paun041a8de2003-04-14 21:31:48 +0000162 important a windows registry to Wine.
163 - regsvr32 : A program to register/unregister .DLL's and .OCX files.
164 Only works on those dlls that can self-register.
Steven Edwards26fe9142004-05-05 05:53:37 +0000165 - taskmgr : A clone of the windows taskmgr, used for debugging and
166 managing running Windows and Winlib processes.
Dimitrie O. Paun041a8de2003-04-14 21:31:48 +0000167 - uninstaller: A program to uninstall installed Windows programs.
168 Like the Add/Remove Program in the windows control panel.
169 - wcmd : Wine's command line interpreter, a cmd.exe replacement.
170 - widl : Wine IDL compiler compiles (MS-RPC and DCOM) Interface
171 Definition Language files.
172 - wine : The main Wine executable. This program will load a Windows
173 binary and run it, relying upon the Wine shared object libraries.
174 - wineboot : This program is executed on startup of the first wine
175 process of a particular user.wineboot won't automatically run
176 when needed. Currently you have to manually run it after you
177 install something.
178 - winebuild : Winebuild is a tool used for building Winelib applications
179 (and by Wine itself) to allow a developer to compile a .spec file
180 into a .spec.c file.
181 - wineclipserv : The Wine Clipboard Server is a standalone XLib application
182 whose purpose is to manage the X selection when Wine exits.
183 - wineconsole : Render the output of CUI programs.
184 - winedbg : A application making use of the debugging API to allow
185 debugging of Wine or Winelib applications as well as Wine itself
186 (kernel and all DLLs).
187 - winedump : Dumps the imports and exports of NE and PE files.
188 - winefile : A clone of the win3x filemanager.
189 - winegcc/wineg++: Wrappers for gcc/g++ respectively, to make them behave
190 as MinGW's gcc. Used for porting apps over to Winelib.
191 - winemaker : Winemaker is a perl script which is designed to help you
192 bootstrap the conversion of your Windows projects to Winelib.
193 - winemine : A clone of "Windows Minesweeper" a demo WineLib app.
194 - winepath : A tool for converting between Windows paths and Unix paths
195 - wineserver : The Wine server is the process that manages resources,
196 coordinates threads, and provides synchronization and interprocess
197 communication primitives to Wine processes.
198 - wineshelllink : This shell script can be called by Wine in order to
199 propagate Desktop icon and menu creation requests out to a
200 GNOME or KDE (or other Window Managers).
201 - winewrap : Takes care of linking winelib applications. Linking with
202 Winelib is a complex process, winewrap makes it simple.
203 - winhelp : A Windows Help replacement.
204 - wmc : Wine Message Compiler it allows Windows message files to be
205 compiled into a format usable by Wine.
206 - wrc : the Wine Resource Compiler. A clone of Microsoft's rc.
207
208 * Shared Object Library Files
209 To obtain a current list of DLLs, run:
210 ls dlls/*.so
Francois Gougetc5f775a2003-06-18 03:30:39 +0000211 it the root of the Wine _build_ tree, after a successful build.
Dimitrie O. Paun041a8de2003-04-14 21:31:48 +0000212
213 * Man Pages
214 To obtain a current list of man files that need to be installed, run:
215 find . -name "*.man"
216 it the root of the Wine _build_ tree, after you have run ./configure.
217
218 * Include Files
219 An up to date list of includes can be found in the include/Makefile.in file.
220
221 * Documentation files
222 After building the documentation with:
223 cd documentation; make html
224 install all the files from: wine-user/, wine-devel/ and winelib-user/.
225
226 * Dynamic Wine Files
227 Wine also generates and depends on a number of dynamic
228 files, including user configuration files and registry files.
229
230 At the time of this writing, there was not a clear
231 consensus of where these files should be located, and how
232 they should be handled. This section attempts
233 to explain the alternatives clearly.
234
235 - WINEPREFIX/config
236 This file is the user local Wine configuration file.
237 At the time of this writing, if this file exists,
238 then no other configuration file is loaded.
239
240 - ETCDIR/wine.conf
241 This is the global Wine configuration file. It is only used
242 if the user running Wine has no local configuration file.
243 Global wine configuration is currently not possible;
244 this might get reenabled at some time.
245 Some packagers feel that this file should not be supplied,
246 and that only a wine.conf.default should be given here.
247 Other packagers feel that this file should be the predominant
248 file used, and that users should only shift to a local
249 configuration file if they need to. An argument has been
250 made that the local configuration file should inherit the
251 global configuration file. At this time, Wine does not do this;
252 please refer to the WineHQ discussion archives for the debate
253 concerning this.
254 This debate is addressed more completely below, in the
255 'Packaging Strategy' section.
256
257 * Registry Files
258 In order to replicate the Windows registry system,
259 Wine stores registry entries in a series of files.
260
261 For an excellent overview of this issue, read this
Dimitrie O. Paunc0232542003-11-26 03:55:01 +0000262 http://www.winehq.org/News/2000-25.html#FTR
Dimitrie O. Paun041a8de2003-04-14 21:31:48 +0000263 Wine Weekly News feature.
264
265 The bottom line is that, at Wine server startup,
266 Wine loads all registry entries into memory
267 to create an in memory image of the registry.
268 The order of files which Wine uses to load
269 registry entries is extremely important,
270 as it affects what registry entries are
271 actually present. The order is roughly that
272 .dat files from a Windows partion are loaded,
273 then global registry settings from ETCDIR,
274 and then finally local registry settings are
275 loaded from WINEPREFIX. As each set are loaded,
276 they can override the prior entries. Thus,
277 the local registry files take precedence.
278
279 Then, at exit (or at periodic intervals),
280 Wine will write either all registry entries
281 (or, with the default setting) changed
282 registry entries to files in the WINEPREFIX.
283
284 - WINEPREFIX/system.reg
285 This file contains the user's local copy of the
286 HKEY_LOCAL_MACHINE registry hive. In general use, it will
287 contain only changes made to the default registry values.
288
289 - WINEPREFIX/user.reg
290 This file contains the user's local copy of the
291 HKEY_CURRENT_MACHINE registry hive. In general use, it will
292 contain only changes made to the default registry values.
293
294 - WINEPREFIX/userdef.reg
295 This file contains the user's local copy of the
296 HKEY_USERS\.Default registry hive. In general use, it will
297 contain only changes made to the default registry values.
298
299 - WINEPREFIX/cachedmetrics.[display]
300 This file contains font metrics for the given X display.
301 Generally, this cache is generated once at Wine start time.
302 cachedmetrics can be generated if absent.
303 You should note this can take a long time.
304
305 - ETCDIR/wine.systemreg
306 This file contains the global values for HKEY_LOCAL_MACHINE.
307 The values in this file can be overridden by the user's
308 local settings. The location of this directory is hardcoded
309 within wine, generally to /etc.
310
311 - ETCDIR/wine.userreg
312 This file contains the global values for HKEY_USERS.
313 The values in this file can be overridden by the user's
314 local settings. This file is likely to be deprecated in
315 favor of a global wine.userdef.reg that will only contain
316 HKEY_USERS/.Default.
317
318 * Important Files from a Windows Partition
319 Wine has the ability to use files from an installation of the
320 actual Microsoft Windows operating system. Generally these
321 files are loaded on a VFAT partition that is mounted under Linux.
322
323 This is probably the most important configuration detail.
324 The use of Windows registry and DLL files dramatically alters the
325 behaviour of Wine. If nothing else, pacakager have to make this
326 distinction clear to the end user, so that they can intelligently
327 choose their configuration.
328
329 - WINDOWSDIR/system32/system.dat
330 - WINDOWSDIR/system32/user.dat
331 - WINDOWSDIR/win.ini
332
333 * Windows Dynamic Link Libraries (WINDOWSDIR/system32/*.dll)
334 Wine has the ability to use the actual Windows DLL files
335 when running an application. An end user can configure
336 Wine so that Wine uses some or all of these DLL files
337 when running a given application.
338
339PACKAGING STRATEGIES
340~~~~~~~~~~~~~~~~~~~~
341
342There has recently been a lot of discussion on the Wine
343development mailing list about the best way to build Wine packages.
344
345There was a lot of discussion, and several diverging points of view.
346This section of the document attempts to present the areas of common
347agreement, and also to present the different approaches advocated on
348the mailing list.
349
350 * Distribution of Wine into packages
351 The most basic question to ask is given the Wine CVS tree,
352 what physical files are you, the packager, going to produce?
353 Are you going to produce only a wine.rpm (as Marcus has done),
354 or are you going to produce 6 Debian files (libwine, libwine-dev,
355 wine, wine-doc, wine-utils and winesetuptk) as Ove has done?
356 At this point, common practice is to adopt to the conventions
357 of the targeted distribution.
358
359 * Where to install files
360 This question is not really contested. It will vary
361 by distribution, and is really up to the packager.
362 As a guideline, the current 'make install' process
363 seems to behave such that if we pick a single PREFIX then:
364 - binary files go into PREFIX/bin
365 - library files go into PREFIX/lib/wine
366 - include files go into PREFIX/include/wine
367 - man pages go into PREFIX/share/man
368 - documentation files go into PREFIX/share/doc/wine-VERSION
369
370 You might also want to use the wine wrapper script winelauncher
371 that can be found in tools/ directory, as it has several important
372 advantages over directly invoking the wine binary.
373 See the Executable Files section for details.
374
375 * The question of /opt/wine
376 The FHS 2.2 specification suggests that Wine as a package
377 should be installed to /opt/wine. None of the existing packages
378 follow this guideline (today; check again tomorrow).
379
380 * What files to create
381 After installing the static and shareable files, the next
382 question the packager needs to ask is how much dynamic
383 configuration will be done, and what configuration
384 files should be created.
385 There are several approaches to this:
386 - Rely completely on user file space - install nothing
387 This approach relies upon the new winesetup utility
388 and the new ability of Wine to launch winesetup if no
389 configuration file is found. The basic concept is
390 that no global configuration files are created at
391 install time. Instead, Wine configuration files are
392 created on the fly by the winesetup program when Wine
393 is invoked. Further, winesetup creates default
394 Windows directories and paths that are stored
395 completely in the user's WINEPREFIX. This approach
396 has the benefit of simplicity in that all Wine files
397 are either stored under /opt/wine or under ~/.wine.
398 Further, there is only ever one Wine configuration
399 file. This approach, however, adds another level of
400 complexity. It does not allow Wine to run Solitaire
401 'out of the box'; the user must run the configuration
402 program first. Further, winesetup requires Tcl/Tk, a
403 requirement not beloved by some. Additionally, this
404 approach closes the door on multi user configurations
405 and presumes a single user approach.
406
407 - Build a reasonable set of defaults for the global wine.conf,
408 facilitate creation of a user's local Wine configuration.
409 This approach, best shown by Marcus, causes the
410 installation process to auto scan the system,
411 and generate a global wine.conf file with best
412 guess defaults. The OpenLinux packages follow
413 this behaviour.
414 The keys to this approach are always putting
415 an existing Windows partition into the
416 path, and being able to run Solitaire
417 right out of the box.
418 Another good thing that Marcus does is he
419 detects a first time installation and
420 does some clever things to improve the
421 user's Wine experience.
422 A flaw with this approach, however, is it doesn't
423 give the user an obvious way to choose not to
424 use a Windows partition.
425
426 - Build a reasonable set of defaults for the global wine.conf,
427 and ask the user if possible
428 This approach, demonstrated by Ove, causes the
429 installation process to auto scan the system,
430 and generate a global wine.conf file with best
431 guess defaults. Because Ove built a Debian
432 package, he was able to further query debconf and
433 get permission to ask the user some questions,
434 allowing the user to decide whether or not to
435 use a Windows partition.
436
437IMPLEMENTATION
438~~~~~~~~~~~~~~
439
440This section discusses the implementation of a Red Hat 8.0 .spec file.
441For a current .spec file, please refer to any one of the existing SRPMs.
442
4431. Building the package
444
445Wine is configured the usual way (depending on your build environment).
446The PREFIX is chosen using your application placement policy
447(/usr/, /usr/X11R6/, /opt/wine/, or similar). The configuration files
448(wine.conf, wine.userreg, wine.systemreg) are targeted for /etc/wine/
449(rationale: FHS 2.2, multiple readonly configuration files of a package).
450
451Example (split this into %build and %install section for rpm:
452
453
454 CFLAGS=$RPM_OPT_FLAGS ./configure --prefix=/usr/X11R6 --sysconfdir=/etc/wine/ --enable-dll
455 make
456 BR=$RPM_BUILD_ROOT
457 make install prefix=$BR/usr/X11R6/ sysconfdir=$BR/etc/wine/
458 install -d $BR/etc/wine/
459 install -m 644 wine.ini $BR/etc/wine/wine.conf
460
Francois Gougetc5f775a2003-06-18 03:30:39 +0000461 # Put all our DLLs in a separate directory. (this works only if you have a buildroot)
Dimitrie O. Paun041a8de2003-04-14 21:31:48 +0000462 install -d $BR/usr/X11R6/lib/wine
463 mv $BR/usr/X11R6/lib/lib* $BR/usr/X11R6/lib/wine/
464
465 # the clipboard server is started on demand.
466 install -m 755 dlls/x11drv/wineclipsrv $BR/usr/X11R6/bin/
467
468 # The Wine server is needed.
469 install -m 755 server/wineserver $BR/usr/X11R6/bin/
470
471Here we unfortunately do need to create wineuser.reg and winesystem.reg
472from the Wine distributed winedefault.reg. This can be done using regedit
473once for one example user and then reusing his WINEPREFIX/user.reg and
474WINEPREFIX/system.reg files.
475FIXME: this needs to be done better.
476
477 install -m 644 wine.sytemreg $BR/etc/wine/
478 install -m 644 wine.userreg $BR/etc/wine/
479
480There are now a lot of libraries generated by the build process, so a
Francois Gougetc5f775a2003-06-18 03:30:39 +0000481separate library directory should be used.
Dimitrie O. Paun041a8de2003-04-14 21:31:48 +0000482
483 install -d 755 $BR/usr/X11R6/lib/
484 mv $BR/
485
486You will need to package the files:
487
488 $prefix/bin/wine, $prefix/bin/dosmod, $prefix/lib/wine/*
489 $prefix/man/man1/wine.1, $prefix/include/wine/*,
490 $prefix/bin/wineserver, $prefix/bin/wineclipsrv
491
492 %config /etc/wine/*
493 %doc ... choose from the toplevel directory and documentation/
494
495The post-install script:
496
Francois Gouget533f0b52003-07-30 03:43:55 +0000497 if ! grep /usr/X11R6/lib/wine /etc/ld.so.conf >/dev/null; then
Dimitrie O. Paun041a8de2003-04-14 21:31:48 +0000498 echo "/usr/X11R6/lib/wine" >> /etc/ld.so.conf
499 fi
500 /sbin/ldconfig
501
502The post-uninstall script:
503
504 if [ "$1" = 0 ]; then
505 perl -ni -e 'print unless m:/usr/X11R6/lib/wine:;' /etc/ld.so.conf
506 fi
507 /sbin/ldconfig
508
5092. Creating a good default configuration file.
510
511For the rationales of needing as less input from the user as possible arises
512the need for a very good configuration file. The one supplied with Wine is
513currently lacking. We need:
514
515 * [Drive X]:
516 - A for the floppy. Specify your distribution's default floppy mountpoint.
517 Path=/auto/floppy
518 - C for the C:\ directory. Here we use the user's home directory, for most
519 applications do see C:\ as root-writeable directory of every windows
520 installation and this basically is it in the UNIX-user context.
Vincent BĂ©ron913457c2003-09-02 18:17:23 +0000521 Don't forget to identify environment variables as DOS ones (ie, surrounded by '%').
522 Path=%HOME%
Dimitrie O. Paun041a8de2003-04-14 21:31:48 +0000523 - R for the CD-Rom drive. Specify your distribution's default CD-ROM mountpoint.
524 Path=/auto/cdrom
525 - T for temporary storage. We do use /tmp/ (rationale: between process
526 temporary data belongs to /tmp/ , FHS 2.0)
527 Path=/tmp/
528 - W for the original Windows installation. This drive points to the
529 WINDOWSDIR subdirectory of the original windows installation.
530 This avoids problems with renamed WINDOWSDIR directories (as for
531 instance lose95, win or sys\win95). During compile/package/install
532 we leave this to be / , it has to be configured after the package install.
533 - Z for the UNIX Root directory. This avoids any roblems with
534 "could not find drive for current directory" users occasionally complain
535 about in the newsgroup and the irc channel. It also makes the whole
536 directory structure browseable. The type of Z should be network,
537 so applications expect it to be readonly.
538 Path=/
539
540 * [wine]:
541 Windows=c:\windows\ (the windows/ subdirectory in the user's
542 home directory)
543 System=c:\windows\system\ (the windows/system subdirectory in the user's
544 home directory)
545 Path=c:\windows;c:\windows\system;c:\windows\system32;w:\;w:\system;w:\system32;
546 ; Using this trick we have in fact two windows installations in one, we
547 ; get the stuff from the readonly installation and can write to our own.
548 Temp=t:\ (the TEMP directory)
549
Dimitrie O. Paun041a8de2003-04-14 21:31:48 +0000550 * Possibly modify the [spooler], [serialports] and [parallelports] sections.
551 FIXME: possibly more, including printer stuff.
552
553Add this prepared configuration file to the package.
554
5553. Installing Wine for the system administrator
556
557Install the package using the usual packager 'rpm -i wine.rpm'.
558You may edit /etc/wine/wine.conf , [Drive W], to point to a
559possible Windows installation right after the install. That's it.
560
561Note that on Linux you should somehow try to add the unhide mount optioni
562(see 'man mount') to the CD-ROM entry in /etc/fstab during package install,
563as several stupid Windows programs mark some setup (!) files as hidden
564(ISO9660) on CD-ROMs, which will greatly confuse users as they won't find
565their setup files on the CD-ROMs as they were used on Windows systems when
566unhide is not set ;-\ And of course the setup program will complain
567that setup.ins or some other mess is missing... If you choose to do so,
568then please make this change verbose to the admin.
569
570Also make sure that the kernel you use includes the Joliet CD-ROM support,
571for the very same reasons as given above (no long filenames due to missing
572Joliet, files not found).
573
5744. Installing Wine for the user
575
576The user will need to run a setup script before the first invocation of Wine.
577This script should:
578 * Copy /etc/wine/wine.conf for user modification.
579 * Allow specification of the original windows installation to use
580 (which modifies the copied wine.conf file).
581 * Create the windows directory structure (c:\windows, c:\windows\system,
582 c:\windows\Start Menu\Programs, c:\Program Files, c:\Desktop, etc.)
583 * Symlink all .dll and .exe files from the original windows installation
584 to the windows directory. Why? Some programs reference
585 "%windowsdir%/file.dll" or "%systemdir%/file.dll" directly and fail
586 if they are not present. This will give a huge number of symlinks, yes.
587 However, if an installer later overwrites one of those files, it will
588 overwrite the symlink (so that the file now lies in the windows/
589 subdirectory). FIXME: Not sure this is needed for all files.
590 * On later invocation the script might want to compare regular files in
591 the user's windows directories and in the global windows directories
592 and replace same files by symlinks (to avoid diskspace problems).
593
594AUTHORS
595~~~~~~~
596
597Written in 1999 by Marcus Meissner <marcus@jet.franken.de>
598Updated in 2000 by Jeremy White <jwhite@codeweavers.com>
599Updated in 2002 by Andreas Mohr <andi@rhlx01.fht-esslingen.de>
600Updated in 2003 by Tom Wickline <twickline2@triad.rr.com>
601Updated in 2003 by Dimitrie O. Paun <dpaun@rogers.com>