		A small WINE distribution guide.

While packaging WINE for one of the Linux distributions I came across
several points which have been clarified yet. Particular a how-to for WINE
packaging distributors is missing. This document tries to give a brief
overview over the rationales I thought up and how I tried to implement it.
(While the examples use "rpm" most of this stuff can be applied to other
packagers too.)

1. Rationales

A WINE install should:
a. Not have a world writeable directory (-tree).
b. Require only as much user input as possible. It would be very good if it
   would not require any at all. Just let the system administrator do "rpm
   -i wine.rpm" and let any user be able to run "wine sol.exe" instantly.
c. Give the user as much flexibility to install his own applications, do
   his own configuring etc.
d. Come as preconfigured as possible, so the user does not need to change
   any configuration files.
e. Use only as much diskspace as needed per user.

A WINE install needs:
f. A writeable C:\ directory structure on a per user basis. Applications do
   dump .ini files into c:\windows, installers dump .exe, .dll and more into
   c:\windows\ and subdirectories or into C:\Program Files\.
g. The .exe and .dll from a global read-only Windows installation to be 
   found by applications.
h. Some special .dll and .exe files in the windows\system directory, since
   applications directly check for their presence.


2. Implementation

2.1 Building the package

WINE is configured the usual way (depending on your buildenvironment).
The "prefix" is chosen using your application placement policy
(/usr/,/usr/X11R6/, /opt/wine/ or similar).  The configuration files
(wine.conf, wineuser.reg, winesystem.reg) are targeted for /etc/wine/
(rationale: FHS 2.0, multiple readonly configuration files of a package).

Example (split this into %build and %install section for rpm):
	CFLAGS=$RPM_OPT_FLAGS \
	./configure --prefix=/usr/X11R6 --sysconfdir=/etc/wine/ --enable-dll
	make
	make install prefix=$BUILDROOT/usr/X11R6/
	install -d /etc/wine/
	install -m 644 wine.ini /etc/wine/wine.conf

Here we unfortunately do need to create wineuser.reg and winesystem.reg
from the WINE distributed winedefault.reg. This can be done using
./regapi once for one example user and the reusing his .wine/user.reg
and .wine/system.reg files. [FIXME: this needs to be done better]

	install -m 644 winesytem.reg /etc/wine/
	install -m 644 wineuser.reg /etc/wine/

You will need to package the files:
	$prefix/bin/wine, $prefix/bin/dosmod, $prefix/lib/libwine.so.1.0,
	$prefix/man/man1/wine.1, $prefix/include/wine/*,

	%config /etc/wine/*
	%doc ... choose from the toplevel directory and documentation/

Do not forget ldconfig for the postinstall, the postuninstall and 'rm
libwine.so' for the postuninstall.

2.2 Creating a good default configuration file

For the rationales of needing as less input from the user as possible 
arises the need for a very good configuration file. The one supplied
with WINE is currently lacking. We need:

- [Drive X]:
  + A for the floppy. Specify your distributions default floppy mountpoint
    here. (Path=/auto/floppy)
  + C for the C:\ directory. Here we use the users homedirectory, for most
    applications do see C:\ as root-writeable directory of every windows
    installation and this basically is it in the UNIX-user context.
    (Path=${HOME})
  + R for the CD-Rom drive. Specify your distributions default CD-ROM drives
    mountpoint here. (Path=/auto/cdrom)
  + T for temporary storage. We do use /tmp/ (rationale: between process
    temporary data belongs to /tmp/, FHS 2.0)
  + W for the original Windows installation. This drive points to the
    windows\ subdirectory of the original windows installation. This avoids
    problems with renamed 'windows' directories (as for instance 'lose95',
    'win' or 'sys\win95'). During compile/package/install we leave this 
    to be '/', it has to be configured after the package install.
  + Z for the UNIX Root directory (Path=/). This avoids any problems with
    "could not find drive for current directory" users occasionaly complain
    about in the newsgroup and the ircchannel. It also makes the whole
    directory structure browseable. The type of Z should be network, so
    applications expect it to be readonly.

- [wine]:
  Windows=c:\windows\ 		(the windows/ subdirectory in the users
  				 homedirectory)
  System=c:\windows\system\	(the windows/system subdirectory in the users
  				 homedirectory)
  Path=c:\windows;c:\windows\system;c:\windows\system32;w:\;w:\system;w:\system32;
  ; Using this trick we have in fact two windows installations in one, we
  ; get the stuff from the readonly installation and can write to our own.
  Temp=t:\			(the TEMP directory)
- [Tweak.Layout]
  WineLook=win95		(just the coolest look ;)
- Possibly modify the [spooler], [serialports] and [parallelports] sections.
(FIXME: possibly more, including printer stuff)

Add this prepared configuration file to the package.

2.3 Installing WINE for the system administrator

Install the package using the usual packager "rpm -i wine.rpm".
You may edit /etc/wine/wine.conf, [Drive W], to point to a possible windows
installation right after the install. Thats it.

2.4 Installing WINE for the user

The user will need to run a setup script before the first invocation of
WINE. This script should:
- Copy /etc/wine/wine.conf for user modification.
- Allow specification of the original windows installation to use (which
  modifies the copied wine.conf file).
- Create the windows directory structure (c:\windows,c:\windows\system,
  c:\Program Files,c:\Desktop,etc...)

  (FIXME: Not sure this is needed for all files:)
- Symlink all .dll and .exe files from the original windows installation to
  the windows directory. Why? Some program reference "%windowsdir%/file.dll"
  or "%systemdir%/file.dll" directly and fail if there are not present.
  This will give a huge number of symlinks, yes. However, if an installer
  later overwrites on of those files, it will overwrite the symlink (so
  that the file now lies in the windows/ subdirectory).

- On later invocation the script might want to compare regular files in 
  the users windows directories and in the global windows directories and
  replace same files by symlinks (to avoid diskspace problems).

Done.

This procedure requires:
- Much thought and work from the packager (1x)
- No work for the sysadmin. Well except one "rpm -i" and possible one edit
  of the configuration file.
- Some or no work from the user, except running the per-user setup script
  once.
=> It scales well and suffices most of the rationales.

				Marcus Meissner <marcus@jet.franken.de>

----------------------------------------------------------------
Sample wine.ini for OpenLinux 2.x:

;;
;; MS-DOS drives configuration
;;
;; Each section has the following format:
;; [Drive X]
;; Path=xxx       (Unix path for drive root)
;; Type=xxx       (supported types are 'floppy', 'hd', 'cdrom' and 'network')
;; Label=xxx      (drive label, at most 11 characters)
;; Serial=xxx     (serial number, 8 characters hexadecimal number)
;; Filesystem=xxx (supported types are 'msdos'/'dos'/'fat', 'win95'/'vfat', 'unix')
;;   This is the FS Wine is supposed to emulate on a certain
;;   directory structure.
;;   Recommended:
;;   - "win95" for ext2fs, VFAT and FAT32
;;   - "msdos" for FAT16 (ugly, upgrading to VFAT driver strongly recommended)
;;   DON'T use "unix" unless you intend to port programs using Winelib !
;; Device=/dev/xx (only if you want to allow raw device access)
;;

;
;
; Floppy 'A' and 'B'
;
; OpenLinux uses an automounter under /auto/, so we use that too.
;
[Drive A]
Path=/auto/floppy/
Type=floppy
Label=Floppy
Serial=87654321
Device=/dev/fd0
Filesystem=win95

; 
; Comment in ONLY if you have a second floppy or the automounter hangs
; for 5 minutes.
;
;[Drive B]
;Path=/auto/floppy2/
;Type=floppy
;Label=Floppy
;Serial=87654321
;Device=/dev/fd1
;Filesystem=win95


;
; Drive 'C' links to the users homedirectory. 
; 
; This must point to a writeable directory structure (not your readonly
; mounted DOS partitions!) since programs want to dump stuff into
; "Program Files/" "Programme/", "windows/", "windows/system/" etc.
; 
; The basic structure is set up using the config script.
;
[Drive C]
Path=${HOME}
Type=hd
Label=MS-DOS
Filesystem=win95

;
; /tmp/ directory
; 
; The temp drive (and directory) points to /tmp/. Windows programs fill it
; with junk, so it is approbiate.
;
[Drive T]
Path=/tmp
Type=hd
Label=Tmp Drive
Filesystem=win95

;
; 'U'ser homedirectory
; 
; Just in case you want C:\ elsewhere.
; 
[Drive U]
Path=${HOME}
Type=hd
Label=Home
Filesystem=win95

;
; CD-'R'OM drive (automounted)
; 
; The default cdrom drive.
;
; If an application (or game) wants a specific CD-ROM you might have to
; temporary change the Label to the one of the CD itself.
;
; How to read them is described in /usr/doc/wine-cvs-xxxxx/cdrom-labels.
; 
[Drive R]
Path=/auto/cdrom
Type=cdrom
Label=CD-Rom
Filesystem=win95

;
; The drive where the old windows installation resides (it points to the 
; windows/ subdirectory).
; 
; The Path is modified by the winesetup script.
;
[Drive W]
Path=/
Type=network
Label=Windows
Filesystem=win95
;
; The UNIX Root directory, so all other programs and directories are reachable.
;
; type network is used to tell programs to not write here. 
;
[Drive Z]
Path=/
Type=network
Label=ROOT
Filesystem=win95

;
; Standard Windows path entries. WINE will not work if they are incorrect.
;
[wine]
; 
; The windows/ directory. It must be writeable, for programs write into it.
;
Windows=c:\windows
;
; The windows/system/ directory. It must be writeable, for especially setup
; programs install dlls in there.
;
System=c:\windows\system
;
; The temp directory. Should be cleaned regulary, since install programs leave
; junk without end in there.
;
Temp=t:\
;
; The dll search path. It should contain at least:
; - the windows and the windows/system directory of the user.
; - the global windows and windows/system directory (from a possible readonly
;   windows installation either on msdos filesystems or somewhere in the UNIX
;   directory tree)
; - any other windows style directories you want to add.
;
Path=c:\windows;c:\windows\system;c:\windows\system32;t:\;w:\;w:\system;w:\system32
;
; Outdated and no longer used. (but needs to be present).
;
SymbolTableFile=./wine.sym

# <wineconf>

; 
; Dll loadorder defaults. No need to modify.
;
[DllDefaults]
EXTRA_LD_LIBRARY_PATH=${HOME}/wine/cvs/lib
DefaultLoadOrder = native, elfdll, so, builtin

;
; What 32/16 dlls belong to each other (context wise). No need to modify.
;
[DllPairs]
kernel	= kernel32
gdi	= gdi32
user	= user32
commdlg	= comdlg32
commctrl= comctl32
ver	= version
shell	= shell32
lzexpand= lz32
mmsystem= winmm
msvideo = msvfw32
winsock	= wsock32

;
; What type of dll to use in their respective loadorder.
; 
[DllOverrides]
kernel32, gdi32, user32	= builtin
kernel, gdi, user	= builtin
toolhelp		= builtin
comdlg32, commdlg	= elfdll, builtin, native
version, ver		= elfdll, builtin, native
shell32, shell		= builtin, native
lz32, lzexpand		= builtin, native
commctrl, comctl32	= builtin, native
wsock32, winsock	= builtin
advapi32, crtdll, ntdll	= builtin, native
mpr, winspool		= builtin, native
ddraw, dinput, dsound	= builtin, native
winmm, mmsystem         = builtin
msvideo, msvfw32        = builtin, native
mcicda.drv, mciseq.drv  = builtin, native
mciwave.drv		= builtin, native
mciavi.drv, mcianim.drv = native, builtin
w32skrnl                = builtin
wnaspi32, wow32		= builtin
system, display, wprocs	= builtin
wineps			= builtin

;
; Options section. Does not need to be edited.
;
[options]
; allocate how much system colors on startup. No need to modify.
AllocSystemColors=100

;;
; Font specification. You usually do not need to edit this section.
; 
; Read documentation/fonts before adding aliases
;
[fonts]
; The resolution defines what fonts to use (usually either 75 or 100 dpi fonts,
; or nearest match).
Resolution = 96
; Default font
Default = -adobe-times-

;
; serial ports used by "COM1" "COM2" "COM3" "COM4". Useful for applications
; that try to access serial ports.
; 
[serialports]
Com1=/dev/ttyS0
Com2=/dev/ttyS1
Com3=/dev/modem,38400
Com4=/dev/modem

;
; parallel port(s) used by "LPT1" etc. Useful for applications that try to 
; access these ports.
;
[parallelports]
Lpt1=/dev/lp0

;
; What spooling program to use on printing.
; Use "|program" or "filename", where the output will be dumped into.
;
[spooler]
LPT1:=|lpr
LPT2:=|gs -sDEVICE=bj200 -sOutputFile=/tmp/fred -q -
LPT3:=/dev/lp3

; 
; Allow port access to WINE started by the root user. Useful for some
; supported devices, but it can make the system unstable.
; Read /usr/doc/wine-cvs-xxxxx/ioport-trace-hints.
;
[ports]
;read=0x779,0x379,0x280-0x2a0
;write=0x779,0x379,0x280-0x2a0

; debugging, not need to be modified.
[spy]
Exclude=WM_SIZE;WM_TIMER;

;
; What names for the registry datafiles, no need to modify.
;
[Registry]
; Paths must be given in /dir/dir/file.reg format.
; Wine will not understand dos file names here...
;UserFileName=xxx		; alternate registry file name (user.reg)
;LocalMachineFileName=xxx	; (system.reg)

;
; Layout/Look modifications. Here you can switch with a single line between
; windows 3.1 and windows 95 style.
; This does not change WINE behaviour or reported versions, just the look!
;
[Tweak.Layout]
;; WineLook=xxx  (supported styles are 'Win31'(default), 'Win95', 'Win98')
WineLook=Win95

;
; What programs to start on WINE startup. (you should probably leave it empty)
;
[programs]
Default=
Startup=

; defunct section.
[Console]
;XtermProg=nxterm
;InitialRows=25
;InitialColumns=80
;TerminalType=nxterm

# </wineconf>


