Transform the Packaging Guide into a nice ASCII file.
Update it to the latest info, make it less prone to obsolescence.
Updated the Wine executables from list produced by Tom Wickline.
diff --git a/documentation/.cvsignore b/documentation/.cvsignore
index d603250..147be13 100644
--- a/documentation/.cvsignore
+++ b/documentation/.cvsignore
@@ -12,7 +12,6 @@
wine-doc
wine-doc.rtf
wine-faq
-wine-pkg
wine-user
wine.man
winelib-user
diff --git a/documentation/Makefile.in b/documentation/Makefile.in
index ef34de6..203d01f 100644
--- a/documentation/Makefile.in
+++ b/documentation/Makefile.in
@@ -51,9 +51,6 @@
winelib-porting.sgml \
winelib-toolkit.sgml
-WINE_PKG_SRCS = \
- packaging.sgml
-
WINE_FAQ_SRCS = \
faq.sgml
@@ -61,7 +58,6 @@
$(WINELIB_USER_SRCS) \
$(WINE_DEVEL_SRCS) \
$(WINE_FAQ_SRCS) \
- $(WINE_PKG_SRCS) \
$(WINE_USER_SRCS)
MAN_TARGETS = wine.man
@@ -69,7 +65,6 @@
ALLBOOKS = \
wine-devel \
wine-faq \
- wine-pkg \
wine-user \
winelib-user
@@ -106,7 +101,6 @@
wine-devel.pdf wine-devel.ps wine-devel/index.html: $(WINE_DEVEL_SRCS)
wine-faq.pdf wine-faq.ps wine-faq/index.html: $(WINE_FAQ_SRCS)
-wine-pkg.pdf wine-pkg.ps wine-pkg/index.html: $(WINE_PKG_SRCS)
wine-user.pdf wine-user.ps wine-user/index.html: $(WINE_USER_SRCS)
winelib-user.pdf winelib-user.ps winelib-user/index.html: $(WINELIB_USER_SRCS)
wine-doc.pdf wine-doc.ps wine-doc/index.html: $(WINE_DOC_SRCS)
diff --git a/documentation/PACKAGING b/documentation/PACKAGING
new file mode 100644
index 0000000..570a6a6
--- /dev/null
+++ b/documentation/PACKAGING
@@ -0,0 +1,557 @@
+INTRODUCTION
+~~~~~~~~~~~~
+
+This document attempts to establish guidelines for people making binary
+packages of Wine.
+
+It expresses the basic principles that the Wine developers have agreed
+should be used when building Wine. It also attempts to highlight the areas
+where there are different approaches to packaging Wine, so that the packager
+can understand the different alternatives that have been considered and their
+rationales.
+
+TERMS
+~~~~~
+
+There are several terms and paths used in this document as place holders
+for configurable values. Those terms are described here.
+ * WINEPREFIX: is the user's Wine configuration directory.
+ This is almost always ~/.wine, but can be overridden by
+ the user by setting the WINEPREFIX environment variable.
+
+ * PREFIX: is the prefix used when selecting an installation target.
+ The current default is /usr/local. This results in binary
+ installation into /usr/local/bin, library installation into
+ /usr/local/wine/lib, and so forth.
+ This value can be overridden by the packager. In fact, FHS 2.2
+ (http://www.pathname.com/fhs/) specifications suggest that a better
+ prefix is /opt/wine. Ideally, a packager would also allow the
+ installer to override this value.
+
+ * ETCDIR: is the prefix that Wine uses to find the global
+ configuration directory. This can be changed by the configure
+ option sysconfdir. The current default is $PREFIX/etc.
+
+ * WINDOWSDIR: is an important concept to Wine. This directory specifies
+ what directory corresponds to the root Windows directory
+ (e.g. C:\WINDOWS). This directory is specified by the user, in
+ the user's configuration file. Generally speaking, this directory
+ is either set to point at an empty directory, or it is set to point
+ at a Windows partition that has been mounted through the vfat driver.
+ NOTE: It is extremely important that the packager understand the
+ importance of WINDOWSDIR and convey this information and
+ choice to the end user.
+
+GOALS
+~~~~~
+
+An installation from a Wine package should:
+ * Install quickly and simply:
+ The initial installation should require no user input. An
+ 'rpm -i wine.rpm' or 'apt-get install wine'
+ should suffice for initial installation.
+
+ * Work quickly and simply:
+ The user should be able to launch Solitaire
+ within minutes of downloading the Wine package.
+
+ * Comply with Filesystem Hierarchy Standard
+ A Wine installation should, as much as possible, comply
+ with the FHS standard (http://www.pathname.com/fhs/).
+
+ * Preserve flexibility
+ None of the flexibility built into Wine should
+ be hidden from the end user.
+
+ * Easy configuration
+ Come as preconfigured as possible, so the user does
+ not need to change any configuration files.
+
+ * Small footprint
+ Use only as much diskspace as needed per user.
+
+ * Reduce support requirements.
+ A packaged version of Wine should be sufficiently easy to use and
+ have quick and easy access to FAQs and documentation such that
+ requests to the newsgroup and development group go down.
+ Further, it should be easy for users to capture good bug reports.
+
+REQUIREMENTS
+~~~~~~~~~~~~
+
+Successfully installing Wine requires:
+ * Much thought and work from the packager (1x)
+
+ * A configuration file
+ Wine will not run without a configuration file. Wine provides a
+ a sample config file and it can be found in documentation/samples.
+ Some packagers may attempt to provide (or dynamically generate) a
+ default configuration file. Some packagers may wish to rely on
+ winesetup to generate the configuration file.
+
+ * A writeable C drive
+ A writeable C:\ directory structure on a per-user basis.
+ Applications do dump .ini file into C:\WINDOWS, installer
+ dump .exe/.dll/etc. files into C:\WINDOWS or C:\Program Files.
+
+ * An initial set of registry entries.
+ The current Wine standard is to use the regedit tool against
+ the 'winedefault.reg' file to generate a default registry.
+ The current preferred method of configuring/installing
+ Wine is to run /toos/wineinstall. There are several other
+ choices that could be made; registries can be imported from
+ a Windows partition. At this time, Wine does not completely
+ support a complex multi-user installation ala Windows NT,
+ but it could fairly readily.
+
+ * Special files
+ Some special .dll and .exe files in the C:\WINDOWS\SYSTEM
+ directory, since applications directly check for their presence.
+
+WINE COMPONENTS
+~~~~~~~~~~~~~~~
+
+ * Executable Files
+ - notepad : The windows Notepad replacement.
+ - progman : A Program Manager replacement.
+ - regedit : A command-line tool to edit your registry or for
+ important a windows registry to Wine.
+ - regsvr32 : A program to register/unregister .DLL's and .OCX files.
+ Only works on those dlls that can self-register.
+ - uninstaller: A program to uninstall installed Windows programs.
+ Like the Add/Remove Program in the windows control panel.
+ - wcmd : Wine's command line interpreter, a cmd.exe replacement.
+ - widl : Wine IDL compiler compiles (MS-RPC and DCOM) Interface
+ Definition Language files.
+ - wine : The main Wine executable. This program will load a Windows
+ binary and run it, relying upon the Wine shared object libraries.
+ - wineboot : This program is executed on startup of the first wine
+ process of a particular user.wineboot won't automatically run
+ when needed. Currently you have to manually run it after you
+ install something.
+ - winebuild : Winebuild is a tool used for building Winelib applications
+ (and by Wine itself) to allow a developer to compile a .spec file
+ into a .spec.c file.
+ - wineclipserv : The Wine Clipboard Server is a standalone XLib application
+ whose purpose is to manage the X selection when Wine exits.
+ - wineconsole : Render the output of CUI programs.
+ - winedbg : A application making use of the debugging API to allow
+ debugging of Wine or Winelib applications as well as Wine itself
+ (kernel and all DLLs).
+ - winedump : Dumps the imports and exports of NE and PE files.
+ - winefile : A clone of the win3x filemanager.
+ - winegcc/wineg++: Wrappers for gcc/g++ respectively, to make them behave
+ as MinGW's gcc. Used for porting apps over to Winelib.
+ - winemaker : Winemaker is a perl script which is designed to help you
+ bootstrap the conversion of your Windows projects to Winelib.
+ - winemine : A clone of "Windows Minesweeper" a demo WineLib app.
+ - winepath : A tool for converting between Windows paths and Unix paths
+ - wineserver : The Wine server is the process that manages resources,
+ coordinates threads, and provides synchronization and interprocess
+ communication primitives to Wine processes.
+ - wineshelllink : This shell script can be called by Wine in order to
+ propagate Desktop icon and menu creation requests out to a
+ GNOME or KDE (or other Window Managers).
+ - winewrap : Takes care of linking winelib applications. Linking with
+ Winelib is a complex process, winewrap makes it simple.
+ - winhelp : A Windows Help replacement.
+ - wmc : Wine Message Compiler it allows Windows message files to be
+ compiled into a format usable by Wine.
+ - wrc : the Wine Resource Compiler. A clone of Microsoft's rc.
+
+ * Shared Object Library Files
+ To obtain a current list of DLLs, run:
+ ls dlls/*.so
+ it the root of the Wine _build_ tree, after a sucessful build.
+
+ * Man Pages
+ To obtain a current list of man files that need to be installed, run:
+ find . -name "*.man"
+ it the root of the Wine _build_ tree, after you have run ./configure.
+
+ * Include Files
+ An up to date list of includes can be found in the include/Makefile.in file.
+
+ * Documentation files
+ After building the documentation with:
+ cd documentation; make html
+ install all the files from: wine-user/, wine-devel/ and winelib-user/.
+
+ * Dynamic Wine Files
+ Wine also generates and depends on a number of dynamic
+ files, including user configuration files and registry files.
+
+ At the time of this writing, there was not a clear
+ consensus of where these files should be located, and how
+ they should be handled. This section attempts
+ to explain the alternatives clearly.
+
+ - WINEPREFIX/config
+ This file is the user local Wine configuration file.
+ At the time of this writing, if this file exists,
+ then no other configuration file is loaded.
+
+ - ETCDIR/wine.conf
+ This is the global Wine configuration file. It is only used
+ if the user running Wine has no local configuration file.
+ Global wine configuration is currently not possible;
+ this might get reenabled at some time.
+ Some packagers feel that this file should not be supplied,
+ and that only a wine.conf.default should be given here.
+ Other packagers feel that this file should be the predominant
+ file used, and that users should only shift to a local
+ configuration file if they need to. An argument has been
+ made that the local configuration file should inherit the
+ global configuration file. At this time, Wine does not do this;
+ please refer to the WineHQ discussion archives for the debate
+ concerning this.
+ This debate is addressed more completely below, in the
+ 'Packaging Strategy' section.
+
+ * Registry Files
+ In order to replicate the Windows registry system,
+ Wine stores registry entries in a series of files.
+
+ For an excellent overview of this issue, read this
+ http://www.winehq.com/News/2000-25.html#FTR
+ Wine Weekly News feature.
+
+ The bottom line is that, at Wine server startup,
+ Wine loads all registry entries into memory
+ to create an in memory image of the registry.
+ The order of files which Wine uses to load
+ registry entries is extremely important,
+ as it affects what registry entries are
+ actually present. The order is roughly that
+ .dat files from a Windows partion are loaded,
+ then global registry settings from ETCDIR,
+ and then finally local registry settings are
+ loaded from WINEPREFIX. As each set are loaded,
+ they can override the prior entries. Thus,
+ the local registry files take precedence.
+
+ Then, at exit (or at periodic intervals),
+ Wine will write either all registry entries
+ (or, with the default setting) changed
+ registry entries to files in the WINEPREFIX.
+
+ - WINEPREFIX/system.reg
+ This file contains the user's local copy of the
+ HKEY_LOCAL_MACHINE registry hive. In general use, it will
+ contain only changes made to the default registry values.
+
+ - WINEPREFIX/user.reg
+ This file contains the user's local copy of the
+ HKEY_CURRENT_MACHINE registry hive. In general use, it will
+ contain only changes made to the default registry values.
+
+ - WINEPREFIX/userdef.reg
+ This file contains the user's local copy of the
+ HKEY_USERS\.Default registry hive. In general use, it will
+ contain only changes made to the default registry values.
+
+ - WINEPREFIX/cachedmetrics.[display]
+ This file contains font metrics for the given X display.
+ Generally, this cache is generated once at Wine start time.
+ cachedmetrics can be generated if absent.
+ You should note this can take a long time.
+
+ - ETCDIR/wine.systemreg
+ This file contains the global values for HKEY_LOCAL_MACHINE.
+ The values in this file can be overridden by the user's
+ local settings. The location of this directory is hardcoded
+ within wine, generally to /etc.
+
+ - ETCDIR/wine.userreg
+ This file contains the global values for HKEY_USERS.
+ The values in this file can be overridden by the user's
+ local settings. This file is likely to be deprecated in
+ favor of a global wine.userdef.reg that will only contain
+ HKEY_USERS/.Default.
+
+ * Important Files from a Windows Partition
+ Wine has the ability to use files from an installation of the
+ actual Microsoft Windows operating system. Generally these
+ files are loaded on a VFAT partition that is mounted under Linux.
+
+ This is probably the most important configuration detail.
+ The use of Windows registry and DLL files dramatically alters the
+ behaviour of Wine. If nothing else, pacakager have to make this
+ distinction clear to the end user, so that they can intelligently
+ choose their configuration.
+
+ - WINDOWSDIR/system32/system.dat
+ - WINDOWSDIR/system32/user.dat
+ - WINDOWSDIR/win.ini
+
+ * Windows Dynamic Link Libraries (WINDOWSDIR/system32/*.dll)
+ Wine has the ability to use the actual Windows DLL files
+ when running an application. An end user can configure
+ Wine so that Wine uses some or all of these DLL files
+ when running a given application.
+
+PACKAGING STRATEGIES
+~~~~~~~~~~~~~~~~~~~~
+
+There has recently been a lot of discussion on the Wine
+development mailing list about the best way to build Wine packages.
+
+There was a lot of discussion, and several diverging points of view.
+This section of the document attempts to present the areas of common
+agreement, and also to present the different approaches advocated on
+the mailing list.
+
+ * Distribution of Wine into packages
+ The most basic question to ask is given the Wine CVS tree,
+ what physical files are you, the packager, going to produce?
+ Are you going to produce only a wine.rpm (as Marcus has done),
+ or are you going to produce 6 Debian files (libwine, libwine-dev,
+ wine, wine-doc, wine-utils and winesetuptk) as Ove has done?
+ At this point, common practice is to adopt to the conventions
+ of the targeted distribution.
+
+ * Where to install files
+ This question is not really contested. It will vary
+ by distribution, and is really up to the packager.
+ As a guideline, the current 'make install' process
+ seems to behave such that if we pick a single PREFIX then:
+ - binary files go into PREFIX/bin
+ - library files go into PREFIX/lib/wine
+ - include files go into PREFIX/include/wine
+ - man pages go into PREFIX/share/man
+ - documentation files go into PREFIX/share/doc/wine-VERSION
+
+ You might also want to use the wine wrapper script winelauncher
+ that can be found in tools/ directory, as it has several important
+ advantages over directly invoking the wine binary.
+ See the Executable Files section for details.
+
+ * The question of /opt/wine
+ The FHS 2.2 specification suggests that Wine as a package
+ should be installed to /opt/wine. None of the existing packages
+ follow this guideline (today; check again tomorrow).
+
+ * What files to create
+ After installing the static and shareable files, the next
+ question the packager needs to ask is how much dynamic
+ configuration will be done, and what configuration
+ files should be created.
+ There are several approaches to this:
+ - Rely completely on user file space - install nothing
+ This approach relies upon the new winesetup utility
+ and the new ability of Wine to launch winesetup if no
+ configuration file is found. The basic concept is
+ that no global configuration files are created at
+ install time. Instead, Wine configuration files are
+ created on the fly by the winesetup program when Wine
+ is invoked. Further, winesetup creates default
+ Windows directories and paths that are stored
+ completely in the user's WINEPREFIX. This approach
+ has the benefit of simplicity in that all Wine files
+ are either stored under /opt/wine or under ~/.wine.
+ Further, there is only ever one Wine configuration
+ file. This approach, however, adds another level of
+ complexity. It does not allow Wine to run Solitaire
+ 'out of the box'; the user must run the configuration
+ program first. Further, winesetup requires Tcl/Tk, a
+ requirement not beloved by some. Additionally, this
+ approach closes the door on multi user configurations
+ and presumes a single user approach.
+
+ - Build a reasonable set of defaults for the global wine.conf,
+ facilitate creation of a user's local Wine configuration.
+ This approach, best shown by Marcus, causes the
+ installation process to auto scan the system,
+ and generate a global wine.conf file with best
+ guess defaults. The OpenLinux packages follow
+ this behaviour.
+ The keys to this approach are always putting
+ an existing Windows partition into the
+ path, and being able to run Solitaire
+ right out of the box.
+ Another good thing that Marcus does is he
+ detects a first time installation and
+ does some clever things to improve the
+ user's Wine experience.
+ A flaw with this approach, however, is it doesn't
+ give the user an obvious way to choose not to
+ use a Windows partition.
+
+ - Build a reasonable set of defaults for the global wine.conf,
+ and ask the user if possible
+ This approach, demonstrated by Ove, causes the
+ installation process to auto scan the system,
+ and generate a global wine.conf file with best
+ guess defaults. Because Ove built a Debian
+ package, he was able to further query debconf and
+ get permission to ask the user some questions,
+ allowing the user to decide whether or not to
+ use a Windows partition.
+
+IMPLEMENTATION
+~~~~~~~~~~~~~~
+
+This section discusses the implementation of a Red Hat 8.0 .spec file.
+For a current .spec file, please refer to any one of the existing SRPMs.
+
+1. Building the package
+
+Wine is configured the usual way (depending on your build environment).
+The PREFIX is chosen using your application placement policy
+(/usr/, /usr/X11R6/, /opt/wine/, or similar). The configuration files
+(wine.conf, wine.userreg, wine.systemreg) are targeted for /etc/wine/
+(rationale: FHS 2.2, 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
+ BR=$RPM_BUILD_ROOT
+ make install prefix=$BR/usr/X11R6/ sysconfdir=$BR/etc/wine/
+ install -d $BR/etc/wine/
+ install -m 644 wine.ini $BR/etc/wine/wine.conf
+
+ # Put all our DLLs in a seperate directory. (this works only if you have a buildroot)
+ install -d $BR/usr/X11R6/lib/wine
+ mv $BR/usr/X11R6/lib/lib* $BR/usr/X11R6/lib/wine/
+
+ # the clipboard server is started on demand.
+ install -m 755 dlls/x11drv/wineclipsrv $BR/usr/X11R6/bin/
+
+ # The Wine server is needed.
+ install -m 755 server/wineserver $BR/usr/X11R6/bin/
+
+Here we unfortunately do need to create wineuser.reg and winesystem.reg
+from the Wine distributed winedefault.reg. This can be done using regedit
+once for one example user and then reusing his WINEPREFIX/user.reg and
+WINEPREFIX/system.reg files.
+FIXME: this needs to be done better.
+
+ install -m 644 wine.sytemreg $BR/etc/wine/
+ install -m 644 wine.userreg $BR/etc/wine/
+
+There are now a lot of libraries generated by the build process, so a
+seperate library directory should be used.
+
+ install -d 755 $BR/usr/X11R6/lib/
+ mv $BR/
+
+You will need to package the files:
+
+ $prefix/bin/wine, $prefix/bin/dosmod, $prefix/lib/wine/*
+ $prefix/man/man1/wine.1, $prefix/include/wine/*,
+ $prefix/bin/wineserver, $prefix/bin/wineclipsrv
+
+ %config /etc/wine/*
+ %doc ... choose from the toplevel directory and documentation/
+
+The post-install script:
+
+ if ! grep -q /usr/X11R6/lib/wine /etc/ld.so.conf; then
+ echo "/usr/X11R6/lib/wine" >> /etc/ld.so.conf
+ fi
+ /sbin/ldconfig
+
+The post-uninstall script:
+
+ if [ "$1" = 0 ]; then
+ perl -ni -e 'print unless m:/usr/X11R6/lib/wine:;' /etc/ld.so.conf
+ fi
+ /sbin/ldconfig
+
+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 distribution's default floppy mountpoint.
+ Path=/auto/floppy
+ - C for the C:\ directory. Here we use the user's home directory, 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 distribution's default CD-ROM mountpoint.
+ Path=/auto/cdrom
+ - T for temporary storage. We do use /tmp/ (rationale: between process
+ temporary data belongs to /tmp/ , FHS 2.0)
+ Path=/tmp/
+ - W for the original Windows installation. This drive points to the
+ WINDOWSDIR subdirectory of the original windows installation.
+ This avoids problems with renamed WINDOWSDIR 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. This avoids any roblems with
+ "could not find drive for current directory" users occasionally complain
+ about in the newsgroup and the irc channel. It also makes the whole
+ directory structure browseable. The type of Z should be network,
+ so applications expect it to be readonly.
+ Path=/
+
+ * [wine]:
+ Windows=c:\windows\ (the windows/ subdirectory in the user's
+ home directory)
+ System=c:\windows\system\ (the windows/system subdirectory in the user's
+ home directory)
+ 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.
+
+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. That's it.
+
+Note that on Linux you should somehow try to add the unhide mount optioni
+(see 'man mount') to the CD-ROM entry in /etc/fstab during package install,
+as several stupid Windows programs mark some setup (!) files as hidden
+(ISO9660) on CD-ROMs, which will greatly confuse users as they won't find
+their setup files on the CD-ROMs as they were used on Windows systems when
+unhide is not set ;-\ And of course the setup program will complain
+that setup.ins or some other mess is missing... If you choose to do so,
+then please make this change verbose to the admin.
+
+Also make sure that the kernel you use includes the Joliet CD-ROM support,
+for the very same reasons as given above (no long filenames due to missing
+Joliet, files not found).
+
+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:\windows\Start Menu\Programs, c:\Program Files, c:\Desktop, etc.)
+ * Symlink all .dll and .exe files from the original windows installation
+ to the windows directory. Why? Some programs reference
+ "%windowsdir%/file.dll" or "%systemdir%/file.dll" directly and fail
+ if they are not present. This will give a huge number of symlinks, yes.
+ However, if an installer later overwrites one of those files, it will
+ overwrite the symlink (so that the file now lies in the windows/
+ subdirectory). FIXME: Not sure this is needed for all files.
+ * On later invocation the script might want to compare regular files in
+ the user's windows directories and in the global windows directories
+ and replace same files by symlinks (to avoid diskspace problems).
+
+AUTHORS
+~~~~~~~
+
+Written in 1999 by Marcus Meissner <marcus@jet.franken.de>
+Updated in 2000 by Jeremy White <jwhite@codeweavers.com>
+Updated in 2002 by Andreas Mohr <andi@rhlx01.fht-esslingen.de>
+Updated in 2003 by Tom Wickline <twickline2@triad.rr.com>
+Updated in 2003 by Dimitrie O. Paun <dpaun@rogers.com>
diff --git a/documentation/make_winehq b/documentation/make_winehq
index 3661144..02a43b6 100755
--- a/documentation/make_winehq
+++ b/documentation/make_winehq
@@ -33,11 +33,9 @@
./db2html-winehq wine-devel.sgml
echo "./db2html-winehq winelib-user.sgml"
./db2html-winehq winelib-user.sgml
-echo "./db2html-winehq wine-pkg.sgml"
-./db2html-winehq wine-pkg.sgml
echo "./db2html-winehq wine-faq.sgml"
./db2html-winehq wine-faq.sgml
-tar czf winedoc-html.tgz wine-user wine-devel winelib-user wine-pkg wine-faq
+tar czf winedoc-html.tgz wine-user wine-devel winelib-user wine-faq
cp winedoc-html.tgz "$WWWDIR"
## Create one-book HTML tarball
@@ -53,11 +51,9 @@
db2ps -d ./print.dsl wine-devel.sgml > /dev/null 2>&1
echo "db2ps -d ./print.dsl winelib-user.sgml"
db2ps -d ./print.dsl winelib-user.sgml > /dev/null 2>&1
-echo "db2ps -d ./print.dsl wine-pkg.sgml"
-db2ps -d ./print.dsl wine-pkg.sgml > /dev/null 2>&1
echo "db2ps -d ./print.dsl wine-faq.sgml"
db2ps -d ./print.dsl wine-faq.sgml > /dev/null 2>&1
-tar czf winedoc-ps.tgz wine-user.ps wine-devel.ps winelib-user.ps wine-pkg.ps wine-faq.ps
+tar czf winedoc-ps.tgz wine-user.ps wine-devel.ps winelib-user.ps wine-faq.ps
cp winedoc-ps.tgz "$WWWDIR"
## Create PDF tarball
@@ -67,11 +63,9 @@
db2pdf -d ./print.dsl wine-devel.sgml > /dev/null 2>&1
echo "db2pdf -d ./print.dsl winelib-user.sgml"
db2pdf -d ./print.dsl winelib-user.sgml > /dev/null 2>&1
-echo "db2pdf -d ./print.dsl wine-pkg.sgml"
-db2pdf -d ./print.dsl wine-pkg.sgml > /dev/null 2>&1
echo "db2pdf -d ./print.dsl wine-faq.sgml"
db2pdf -d ./print.dsl wine-faq.sgml > /dev/null 2>&1
-tar czf winedoc-pdf.tgz wine-user.pdf wine-devel.pdf winelib-user.pdf wine-pkg.pdf wine-faq.pdf
+tar czf winedoc-pdf.tgz wine-user.pdf wine-devel.pdf winelib-user.pdf wine-faq.pdf
cp winedoc-pdf.tgz "$WWWDIR"
## Create SGML tarball
@@ -94,9 +88,7 @@
./db2html-winehq wine-devel.sgml
echo "./db2html-winehq winelib-user.sgml"
./db2html-winehq winelib-user.sgml
-echo "./db2html-winehq wine-pkg.sgml"
-./db2html-winehq wine-pkg.sgml
echo "./db2html-winehq wine-faq.sgml"
./db2html-winehq wine-faq.sgml
-tar czf winehq-shtml.tgz wine-user wine-devel winelib-user wine-pkg wine-faq
+tar czf winehq-shtml.tgz wine-user wine-devel winelib-user wine-faq
cp winehq-shtml.tgz "$WWWDIR"
diff --git a/documentation/packaging.sgml b/documentation/packaging.sgml
deleted file mode 100644
index 08747ad..0000000
--- a/documentation/packaging.sgml
+++ /dev/null
@@ -1,2442 +0,0 @@
-<!-- Wine Packaging guidelines. This is a rough outline only,
- and much of this was up for open debate on wine-devel. -->
-
- <chapter id="pkg-preface"> <title>Preface</title>
-
- <sect1 id="pkg-authors"> <title>Authors</title>
-
- <para>
- Written by &name-marcus-meissner; <email>&email-marcus-meissner;</email>
- </para>
- <para>
- Updated by &name-jeremy-white; <email>&email-jeremy-white;</email>
- </para>
- <para>
- Updated by &name-andreas-mohr; <email>&email-andreas-mohr;</email>
- </para>
- <para>
- Updated by &name-tom-wickline; <email>&email-tom-wickline;</email>
- </para>
- </sect1>
-
- <sect1 id="pkg-date"> <title>Document Revision Date</title>
-
-
- <para>
- The information contained in this document is extremely
- time sensitive. <emphasis>It is vital that a packager
- stay current with changes in Wine. </>
- Changes to this document could be tracked e.g. by viewing its CVS log.
- Due to Wine's fast development, a recent revision date
- does not necessarily indicate that this document is 100% on par
- with what Wine's full installation requirements are
- (especially whenever lazy developers don't properly update the
- documentation to include info about new features they implemented).
- </para>
- <para>
- This document was last revised on January 16, 2003.</para>
-
- </sect1>
-
- <sect1 id="pkg-terms"> <title>Terms used in this document</title>
-
- <para>There are several terms and paths used in this
- document as place holders for configurable values.
- Those terms are described here.
- </para>
-
- <orderedlist>
- <listitem id=WINECONFDIR><para id=wineconfdir.id><EnVar>WINECONFDIR</EnVar></para>
- <para>
- <envar>WINECONFDIR</envar> is the user's Wine configuration directory.
- This is almost always ~/.wine, but can be overridden
- by the user by setting the <EnVar>WINECONFDIR</EnVar> environment
- variable.
- </para>
- </listitem>
-
- <listitem id=PREFIX><para id=prefix.id><EnVar>PREFIX</EnVar></para>
- <para>
- <envar>PREFIX</envar> is the prefix used when selecting
- an installation target. The current default is /usr/local.
- This results in binary installation into /usr/bin,
- library installation into /usr/wine/lib, and so forth.
- This value can be overridden by the packager.
- In fact, <ulink url="http://www.pathname.com/fhs/">FHS 2.2</ulink>
- specifications suggest that a better
- prefix is /opt/wine. Ideally, a packager would also
- allow the installer to override this value.
- </para>
- </listitem>
-
- <listitem id=ETCDIR><para id=etcdir.id><EnVar>ETCDIR</EnVar></para>
- <para>
- <envar>ETCDIR</envar> is the prefix that Wine uses
- to find the global configuration directory.
- This can be changed by the configure option sysconfdir.
- The current default is $prefix/etc.
- </para>
- </listitem>
-
- <listitem id=WINDOWSDIR><para id=windowsdir.id><EnVar>WINDOWSDIR</EnVar></para>
- <para>
- <envar>WINDOWSDIR</envar> is an important concept
- to Wine. This directory specifies what directory
- corresponds to the root Windows directory
- (e.g. C:\WINDOWS).
- </para>
- <para>
- This directory is specified by the user, in
- the user's <link linkend=winerc>configuration file</link>.
- </para>
- <para>
- Generally speaking, this directory is either set
- to point at an empty directory, or it is set
- to point at a Windows partition that has been
- mounted through the vfat driver.
- </para>
- <para>
- <emphasis>It is extremely important that the packager
- understand the importance of <envar>WINDOWSDIR</envar>
- and convey this information and choice to the end
- user</emphasis>.
- </para>
- </listitem>
-
- </orderedlist>
-
-
- </sect1>
-
- </chapter>
-
-
-
- <chapter id="pkg-introduction"> <title>Introduction</title>
-
- <para>
- This document attempts to establish guidelines
- for people making binary packages of Wine.
- </para>
-
- <para>
- It expresses the basic principles that the
- Wine developers have agreed should be
- used when building Wine.
- It also attempts to highlight the areas
- where there are different approaches
- to packaging Wine, so that the packager
- can understand the different alternatives
- that have been considered and their rationales.
- </para>
-
- <sect1 id="pkg-goals"> <title>Goals</title>
- <para>
- An installation from a Wine package should:
- </para>
- <itemizedlist>
-
- <listitem>
- <para>
- Install quickly and simply.
- </para>
- <para>
- The initial installation should require no user
- input. An <command>rpm -i wine.rpm</command>
- or <command>apt-get install wine</command>
- should suffice for initial installation.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Work quickly and simply
- </para>
- <para>
- The user should be able to launch Solitaire
- within minutes of downloading the Wine package.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Comply with Filesystem Hierarchy Standard
- </para>
- <para>
- A Wine installation should, as much as possible, comply
- with the
- <ulink url="http://www.pathname.com/fhs/">FHS standard</ulink>.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Preserve flexibility
- </para>
- <para>
- None of the flexibility built into Wine should
- be hidden from the end user.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Come as preconfigured as possible, so the user does
- not need to change any configuration files.
- </para>
- </listitem>
-
- <listitem>
- <para>Use only as much diskspace as needed per user.</para>
- </listitem>
-
- <listitem>
- <para>
- Reduce support requirements.
- </para>
- <para>
- A packaged version of Wine should be sufficiently easy
- to use and have quick and easy access to FAQs and
- documentation such that requests to the
- newsgroup and development group go down.
- Further, it should be easy for users to capture
- good bug reports.
- </para>
- </listitem>
-
- </itemizedlist>
-
-
- </sect1>
-
- <sect1 id="pkg-requirements"> <title>Requirements</title>
- <para>
- Successfully installing Wine requires:
- </para>
-
- <itemizedlist>
- <listitem>
- <para>Much thought and work from the packager (1x)</para>
- </listitem>
- <listitem>
- <para>
- A configuration file
- </para>
- <para>
- Wine will not run without a configuration file. Wine provides a
- a sample config file and it can be found in /usr/share/doc/wine/samples.
- Some packagers may attempt to provide (or dynamically generate) a default configuration
- file. Some packagers may wish to rely on winesetup to generate the configuration file.
- </para>
- </listitem>
-
-
- <listitem>
- <para>
- A writeable <filename>C:\</filename> directory
- structure on a per-user basis. Applications do dump
- <filename>.ini</filename> files into
- <filename>c:\windows</filename>, installers dump
- <filename>.exe</filename>, <filename>.dll</filename>
- and more into <filename>c:\windows</filename> and
- subdirectories or into <filename>C:\Program Files</filename>.
- </para>
- </listitem>
-
-
- <listitem>
- <para>
- An initial set of registry entries.
- </para>
- <para>
- The current Wine standard is to use the regedit tool
- against the 'winedefault.reg' file to generate
- a default registry.
- </para>
- <para>
- The current preferred method of configuring/installing
- Wine is to run /toos/wineinstall.
- There are several other choices that could be made;
- registries can be imported from a Windows partition.
- At this time, Wine does not completely support
- a complex multi-user installation ala Windows NT,
- but it could fairly readily.
- </para>
- </listitem>
-
-
- <listitem>
- <para>
- Some special <filename>.dll</filename> and
- <filename>.exe</filename> files in the
- <filename>windows\system</filename> directory, since
- applications directly check for their presence.
- </para>
- </listitem>
- </itemizedlist>
-
- </sect1>
-
-
- </chapter>
-
-
-
-
- <chapter id="pkg-components"><title>Wine Components</title>
-
- <para>
- This section lists all files that pertain to Wine.
- </para>
-
- <sect1 id="pkg-static"><title>Wine Static and Shareable Files</title>
-
- <para>
- At the time of this writing, almost all of the following components
- are installed through a standard 'make install'
- of Wine. Exceptions from the rule are noted.
-
- <caution>
- <para>
- It is vital that a packager check for
- changes in Wine. This list will likely be out
- of date by the time this document is committed to CVS.
- </para>
- </caution>
-
- </para>
-
- <orderedlist>
-
- <listitem id=binfiles>
- <variablelist><title>Executable Files</title>
-
- <varlistentry><term><filename>wine</filename></term>
- <listitem>
- <para>
- The main Wine executable. This program will load
- a Windows binary and run it, relying upon
- the Wine shared object libraries.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry><term><filename>wineserver</filename></term>
- <listitem>
- <para>
- The Wine server is critical to Wine; it is the
- process that coordinates all shared Windows
- resources.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry><term><filename>wineboot</filename></term>
- <listitem>
- <para>
- Winelib app to be found in programs/.
- Its purpose is to process all Windows startup autorun
- mechanisms, such as wininit.ini, win.ini Load=/Run=,
- registry keys: RenameFiles/Run/RunOnce*/RunServices*,
- Startup folders.
- It'll be called by Wine automatically when an application
- requests a restart of the system (presumeably - after
- installation).
- It should also be called once when a session starts to
- run the various session start utilities (will not happen
- automatically). To start a session, invoke "wineboot start".
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry><term><filename>wineclipsrv</filename></term>
- <listitem>
- <para>
- The Wine Clipboard Server is a standalone XLib
- application whose purpose is to manage the X selection
- when Wine exits.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry><term><filename>winedbg</filename></term>
- <listitem>
- <para>
- Winedbg is the Wine built in debugger.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry><term><filename>winelauncher</filename></term>
- <listitem>
- <para>
- (not getting installed via make install)
- A wine wrapper shell script that intelligently handles
- wine invocation by informing the user about what's going
- on, among other things.
- To be found in tools/ directory.
- Use of this wrapper script instead of directly using wine
- is strongly encouraged, as it not only improves the user
- interface, but also adds important functionality to wine,
- such as session bootup/startup actions.
- If you intend to use this script, then you might want to
- rename the wine executable to e.g. wine.bin and
- winelauncher to wine.
- the <link linkend=WINECONFDIR endterm=wineconfdir.id></link>/config file.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry><term><filename>winesetup</filename></term>
- <listitem>
- <para>
- This is a Tcl/Tk based front end that provides
- a user friendly tool to edit and configure
- the <link linkend=WINECONFDIR endterm=wineconfdir.id></link>/config file.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry><term><filename>wineshelllink</filename></term>
- <listitem>
- <para>
- This shell script can be called by Wine in order
- to propagate Desktop icon and menu creation
- requests out to a GNOME or KDE (or other
- Window Managers).
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry><term><filename>winebuild</filename></term>
- <listitem>
- <para>
- Winebuild is a tool used for Winelib applications
- (and by Wine itself) to allow a developer to
- compile a .spec file into a .spec.c file.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry><term><filename>wmc</filename></term>
- <listitem>
- <para>
- The wmc tools is the Wine Message Compiler. It
- allows Windows message files to be compiled
- into a format usable by Wine.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry><term><filename>wrc</filename></term>
- <listitem>
- <para>
- The wrc tool is the Wine Resource Compiler.
- It allows Winelib programmers (and Wine itself)
- to compile Windows style resource files
- into a form usable by Wine.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry><term><filename>fnt2bdf</filename></term>
- <listitem>
- <para>
- The fnt2bdf utility extracts fonts from .fnt or
- .dll files and stores them in .bdf format files.
- </para>
- </listitem>
- </varlistentry>
- <varlistentry><term><filename>dosmod</filename></term>
- <listitem>
- <para>
- DOS Virtual Machine.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry><term><filename>uninstaller</filename></term>
- <listitem>
- <para>
- (not getting installed via make install)
- A Winelib program to uninstall installed Windows programs.
- To be found in the programs/ source directory.
- This program can be used to uninstall most Windows programs
- (just like the Add/Remove Programs item in Windows)
- by taking the registry uninstall strings that get created
- by installers such as InstallShield or WISE.
- In binary packages, it should probably be renamed
- to something like wine-uninstaller for consistency's sake.
- </para>
- </listitem>
- </varlistentry>
-
- </variablelist>
- </listitem>
-
- <listitem id=libfiles>
- <para>Shared Object Library Files</para>
- <para>This list may NOT necessarily current!</para>
-
- <simplelist columns=5>
-<member>advapi32.dll.so</>
-<member>avicap32.dll.so</>
-<member>avifil32.dll.so</>
-<member>avifile.dll.so</>
-<member>aviinfo.exe.so</>
-<member>aviplay.exe.so</>
-<member>clock.exe.so </>
-<member>comcat.dll.so</>
-<member>comctl32.dll.so</>
-<member>comdlg32.dll.so</>
-<member>comm.dll.so</>
-<member>commdlg.dll.so</>
-<member>compobj.dll.so</>
-<member>control.exe.so</>
-<member>crtdll.dll.so</>
-<member>crypt32.dll.so</>
-<member>dciman32.dll.so</>
-<member>ddeml.dll.so</>
-<member>ddraw.dll.so</>
-<member>devenum.dll.so</>
-<member>dinput.dll.so</>
-<member>dinput8.dll.so</>
-<member>dispdib.dll.so</>
-<member>display.dll.so</>
-<member>dplay.dll.so</>
-<member>dplayx.dll.so</>
-<member>dsound.dll.so</>
-<member>expand.exe.so</>
-<member>gdi.exe.so</>
-<member>gdi32.dll.so</>
-<member>glu32.dll.so</>
-<member>icmp.dll.so</>
-<member>imaadp32.acm.so</>
-<member>imagehlp.dll.so</>
-<member>icinfo.exe.so</>
-<member>icmp.dll.so</>
-<member>imaadp32.acm.so</>
-<member>imagehlp.dll.so</>
-<member>imm.dll.so</>
-<member>imm32.dll.so</>
-<member>joystick.drv.so</>
-<member>kernel32.dll.so</>
-<member>keyboard.dll.so</>
-<member>krnl386.exe.so</>
-<member>libgdi32.dll.so</>
-<member>libkernel32.dll.so</>
-<member>libntdll.dll.so</>
-<member>libuser32.dll.so</>
-<member>libwine.so</>
-<member>libwine_tsx11.so</>
-<member>libwine_unicode.so</>
-<member>libwinspool.drv.so</>
-<member>lz32.dll.so</>
-<member>lzexpand.dll.so</>
-<member>mapi32.dll.so</>
-<member>mcianim.drv.so</>
-<member>mciavi.drv.so</>
-<member>mcicda.drv.so</>
-<member>mciseq.drv.so</>
-<member>mciwave.drv.so</>
-<member>midimap.drv.so</>
-<member>mmsystem.dll.so</>
-<member>mouse.dll.so</>
-<member>mpr.dll.so</>
-<member>msacm.dll.so</>
-<member>msacm.drv.so</>
-<member>msacm32.dll.so</>
-<member>msdmo.dll.so</>
-<member>msg711.drv.so</>
-<member>msimg32.dll.so</>
-<member>msacm.drv.so</>
-<member>msnet32.dll.so</>
-<member>msrle32.dll.so</>
-<member>msdmo.dll.so</>
-<member>msg711.acm.so</>
-<member>msimg32.dll.so</>
-<member>msisys.ocx.so</>
-<member>msnet32.dll.so</>
-<member>msrle32.dll.so</>
-<member>msvcrt.dll.so</>
-<member>msvcrt20.dll.so</>
-<member>msvfw32.dll.so</>
-<member>msvideo.dll.so</>
-<member>netapi32.dll.so</>
-<member>notepad.exe.so</>
-<member>ntdll.dll.so</>
-<member>odbc32.dll.so</>
-<member>ole2.dll.so</>
-<member>ole2conv.dll.so</>
-<member>ole2disp.dll.so</>
-<member>ole2nls.dll.so</>
-<member>ole2prox.dll.so</>
-<member>ole2thk.dll.so</>
-<member>ole32.dll.so</>
-<member>oleaut32.dll.so</>
-<member>olecli.dll.so</>
-<member>olecli32.dll.so</>
-<member>oledlg.dll.so</>
-<member>olepro32.dll.so</>
-<member>olesvr.dll.so</>
-<member>olesvr32.dll.so</>
-<member>opengl32.dll.so</>
-<member>osversioncheck.exe.so</>
-<member>progman.exe.so</>
-<member>psapi.dll.so</>
-<member>qcap.dll.so</>
-<member>quartz.dll.so</>
-<member>rasapi16.dll.so</>
-<member>rasapi32.dll.so</>
-<member>regapi.exe.so</>
-<member>regedit.exe.so </>
-<member>regsvr32.exe.so</>
-<member>regtest.exe.so</>
-<member>riched32.dll.so</>
-<member>rpcrt4.dll.so</>
-<member>serialui.dll.so</>
-<member>setupapi.dll.so</>
-<member>setupx.dll.so</>
-<member>shdocvw.dll.so</>
-<member>shell.dll.so</>
-<member>shell32.dll.so</>
-<member>shfolder.dll.so</>
-<member>shlwapi.dll.so</>
-<member>sound.dll.so</>
-<member>sti.dll.so</>
-<member>storage.dll.so</>
-<member>stress.dll.so</>
-<member>system.dll.so</>
-<member>tapi32.dll.so</>
-<member>toolhelp.dll.so</>
-<member>ttydrv.dll.so</>
-<member>twain_32.dll.so</>
-<member>typelib.dll.so</>
-<member>uninstaller.exe.so</>
-<member>url.dll.so</>
-<member>urlmon.dll.so</>
-<member>user.exe.so</>
-<member>user32.dll.so</>
-<member>ver.dll.so</>
-<member>version.dll.so</>
-<member>w32skrnl.dll.so</>
-<member>w32sys.dll.so</>
-<member>win32s16.dll.so</>
-<member>win87em.dll.so</>
-<member>winaspi.dll.so</>
-<member>windebug.dll.so</>
-<member>winealsa.drv.so</>
-<member>winearts.drv.so</>
-<member>wineconsole.exe.so</>
-<member>winedbg.exe.so</>
-<member>winedos.dll.so</>
-<member>winefile.exe.so</>
-<member>winemine.exe.so</>
-<member>winemp3.acm.so</>
-<member>wineoss.drv.so</>
-<member>winepath.exe.so</>
-<member>wineps.dll.so</>
-<member>wineps16.dll.so</>
-<member>wing.dll.so</>
-<member>winhelp.exe.so</>
-<member>wininet.dll.so</>
-<member>winmm.dll.so</>
-<member>winnls.dll.so</>
-<member>winnls32.dll.so</>
-<member>winsock.dll.so</>
-<member>winspool.drv.so</>
-<member>wintrust.dll.so</>
-<member>wnaspi32.dll.so</>
-<member>wow32.dll.so</>
-<member>wprocs.dll.so</>
-<member>ws2_32.dll.so</>
-<member>wsock32.dll.so</>
-<member>x11drv.dll.so</>
- </simplelist>
-
- </listitem>
-
-
- <listitem id=manfiles>
- <para> Man Pages</para>
- <simplelist columns=1>
-<member>wine.conf.man</>
-<member>wine.man</>
-<member>winemaker</>
-<member>wmc.man</>
-<member>wrc.man</>
- </simplelist>
- </listitem>
-
-
- <listitem id=includefiles>
- <para>Include Files</para>
- <para>This list may NOT be current!</para>
- <simplelist columns=5>
-
-<member>audevcod.h</>
-<member>basetsd.h</>
-<member>cderr.h</>
-<member>cguid.h</>
-<member>comcat.h</>
-<member>commctrl.h</>
-<member>commdlg.h</>
-<member>compobj.h</>
-<member>cpl.h</>
-<member>d3d.h</>
-<member>d3dcaps.h</>
-<member>d3dtypes.h</>
-<member>d3dvec.inl</>
-<member>dde.h</>
-<member>ddeml.h</>
-<member>ddraw.h</>
-<member>digitalv.h</>
-<member>dinput.h</>
-<member>dispdib.h</>
-<member>dlgs.h</>
-<member>dmo.h</>
-<member>dmoreg.h</>
-<member>dmort.h</>
-<member>docobj.h</>
-<member>dplay.h</>
-<member>dplobby.h</>
-<member>dshow.h</>
-<member>dsound.h</>
-<member>guiddef.h</>
-<member>imagehlp.h</>
-<member>imm.h</>
-<member>initguid.h</>
-<member>instance.h</>
-<member>lmcons.h</>
-<member>lzexpand.h</>
-<member>mapi.h</>
-<member>mapicode.h</>
-<member>mapidefs.h</>
-<member>mciavi.h</>
-<member>mcx.h</>
-<member>mediaerr.h</>
-<member>mediaobj.h</>
-<member>minmax.h</>
-<member>mmreg.h</>
-<member>mmsystem.h</>
-<member>msacm.h</>
-<member>msacmdlg.h</>
-<member>msvcrt/conio.h</>
-<member>msvcrt/crtdbg.h</>
-<member>msvcrt/ctype.h</>
-<member>msvcrt/direct.h</>
-<member>msvcrt/dos.h</>
-<member>msvcrt/eh.h</>
-<member>msvcrt/excpt.h</>
-<member>msvcrt/fcntl.h</>
-<member>msvcrt/io.h</>
-<member>msvcrt/locale.h</>
-<member>msvcrt/malloc.h</>
-<member>msvcrt/mbctype.h</>
-<member>msvcrt/mbstring.h</>
-<member>msvcrt/process.h</>
-<member>msvcrt/search.h</>
-<member>msvcrt/setjmp.h</>
-<member>msvcrt/share.h</>
-<member>msvcrt/stddef.h</>
-<member>msvcrt/stdio.h</>
-<member>msvcrt/stdlib.h</>
-<member>msvcrt/string.h</>
-<member>msvcrt/sys/locking.h</>
-<member>msvcrt/sys/stat.h</>
-<member>msvcrt/sys/timeb.h</>
-<member>msvcrt/sys/types.h</>
-<member>msvcrt/sys/utime.h</>
-<member>msvcrt/time.h</>
-<member>msvcrt/wchar.h</>
-<member>msvcrt/wctype.h</>
-<member>mswsock.h</>
-<member>nb30.h</>
-<member>nspapi.h</>
-<member>ntsecapi.h</>
-<member>oaidl.h</>
-<member>objbase.h</>
-<member>objidl.h</>
-<member>ocidl.h</>
-<member>ole2.h</>
-<member>ole2ver.h</>
-<member>oleauto.h</>
-<member>olectl.h</>
-<member>oledlg.h</>
-<member>oleidl.h</>
-<member>poppack.h</>
-<member>prsht.h</>
-<member>psapi.h</>
-<member>pshpack1.h</>
-<member>pshpack2.h</>
-<member>pshpack4.h</>
-<member>pshpack8.h</>
-<member>ras.h</>
-<member>regstr.h</>
-<member>richedit.h</>
-<member>rpc.h</>
-<member>rpcdce.h</>
-<member>rpcdcep.h</>
-<member>rpcndr.h</>
-<member>rpcnterr.h</>
-<member>rpcproxy.h</>
-<member>servprov.h</>
-<member>setupapi.h</>
-<member>shellapi.h</>
-<member>shlguid.h</>
-<member>shlobj.h</>
-<member>shlwapi.h</>
-<member>sql.h</>
-<member>sqlext.h</>
-<member>sqltypes.h</>
-<member>storage.h</>
-<member>tapi.h</>
-<member>tlhelp32.h</>
-<member>unknwn.h</>
-<member>urlmon.h</>
-<member>uuids.h</>
-<member>ver.h</>
-<member>vfw.h</>
-<member>vfwmsgs.h</>
-<member>winbase.h</>
-<member>wincon.h</>
-<member>wincrypt.h</>
-<member>windef.h</>
-<member>windows.h</>
-<member>windowsx.h</>
-<member>wine/debug.h</>
-<member>wine/exception.h</>
-<member>wine/icmpapi.h</>
-<member>wine/ipexport.h</>
-<member>wine/library.h</>
-<member>wine/obj_base.h</>
-<member>wine/obj_cache.h</>
-<member>wine/obj_channel.h</>
-<member>wine/obj_clientserver.h</>
-<member>wine/obj_comcat.h</>
-<member>wine/obj_commdlgbrowser.h</>
-<member>wine/obj_connection.h</>
-<member>wine/obj_contextmenu.h</>
-<member>wine/obj_control.h</>
-<member>wine/obj_dataobject.h</>
-<member>wine/obj_dockingwindowframe.h</>
-<member>wine/obj_dragdrop.h</>
-<member>wine/obj_enumguid.h</>
-<member>wine/obj_enumidlist.h</>
-<member>wine/obj_errorinfo.h</>
-<member>wine/obj_extracticon.h</>
-<member>wine/obj_inplace.h</>
-<member>wine/obj_marshal.h</>
-<member>wine/obj_misc.h</>
-<member>wine/obj_moniker.h</>
-<member>wine/obj_oleaut.h</>
-<member>wine/obj_olefont.h</>
-<member>wine/obj_oleobj.h</>
-<member>wine/obj_oleundo.h</>
-<member>wine/obj_oleview.h</>
-<member>wine/obj_picture.h</>
-<member>wine/obj_property.h</>
-<member>wine/obj_propertystorage.h</>
-<member>wine/obj_queryassociations.h</>
-<member>wine/obj_serviceprovider.h</>
-<member>wine/obj_shellbrowser.h</>
-<member>wine/obj_shellextinit.h</>
-<member>wine/obj_shellfolder.h</>
-<member>wine/obj_shelllink.h</>
-<member>wine/obj_shellview.h</>
-<member>wine/obj_storage.h</>
-<member>wine/obj_webbrowser.h</>
-<member>wine/unicode.h</>
-<member>winerror.h</>
-<member>wingdi.h</>
-<member>wininet.h</>
-<member>winioctl.h</>
-<member>winnetwk.h</>
-<member>winnls.h</>
-<member>winnt.h</>
-<member>winreg.h</>
-<member>winres.h</>
-<member>winresrc.h</>
-<member>winsock.h</>
-<member>winsock2.h</>
-<member>winspool.h</>
-<member>winsvc.h</>
-<member>winuser.h</>
-<member>winver.h</>
-<member>wnaspi32.h</>
-<member>wownt32.h</>
-<member>ws2spi.h</>
-<member>ws2tcpip.h</>
-<member>wshisotp.h</>
-<member>wsipx.h</>
-<member>wtypes.h</>
-<member>zmouse.h</>
-<member>libwine_uuid.a</>
- </simplelist>
-
- </listitem>
-
- <listitem id=docfiles>
- <para>Documentation files.</para>
- <para>This list may NOT be current!</para>
-
- <simplelist columns=3>
-
-<member>HOWTO-winelib.gz</>
-<member>wine-devel-20020710/wine-devel</>
-<member>wine-devel/accel-impl.html</>
-<member>wine-devel/arch-dlls.html</>
-<member>wine-devel/architecture.html</>
-<member>wine-devel/build.html</>
-<member>wine-devel/com-writing.html</>
-<member>wine-devel/compiling.html</>
-<member>wine-devel/consoles.html</>
-<member>wine-devel/cvs-regression.html</>
-<member>wine-devel/dbg-channels.html</>
-<member>wine-devel/dbg-checking.html</>
-<member>wine-devel/dbg-commands.html</>
-<member>wine-devel/dbg-compiling.html</>
-<member>wine-devel/dbg-config.html</>
-<member>wine-devel/dbg-in-memory.html</>
-<member>wine-devel/dbg-limits.html</>
-<member>wine-devel/dbg-modes.html</>
-<member>wine-devel/dbg-notes.html</>
-<member>wine-devel/dbg-others.html</>
-<member>wine-devel/dbg-param.html</>
-<member>wine-devel/dbg-resource-ids.html</>
-<member>wine-devel/dbg-using.html</>
-<member>wine-devel/debugger.html</>
-<member>wine-devel/debugging.html</>
-<member>wine-devel/dlls.html</>
-<member>wine-devel/documentation.html</>
-<member>wine-devel/file-handles.html</>
-<member>wine-devel/hardware-trace.html</>
-<member>wine-devel/i18n.html</>
-<member>wine-devel/implementation.html</>
-<member>wine-devel/index.html</>
-<member>wine-devel/memory-addresses.html</>
-<member>wine-devel/module-overview.html</>
-<member>wine-devel/ole-binary.html</>
-<member>wine-devel/ole.html</>
-<member>wine-devel/opengl-configure.html</>
-<member>wine-devel/opengl-problems.html</>
-<member>wine-devel/opengl-works.html</>
-<member>wine-devel/opengl.html</>
-<member>wine-devel/os2-wine.html</>
-<member>wine-devel/part-one.html</>
-<member>wine-devel/part-three.html</>
-<member>wine-devel/part-two.html</>
-<member>wine-devel/patch-quality.html</>
-<member>wine-devel/patches.html</>
-<member>wine-devel/porting.html</>
-<member>wine-devel/tools.html</>
-<member>wine-devel/wine-debugger.html</>
-<member>wine-devel/wine-docbook.html</>
-<member>winelib-user/bindlls-building.html</>
-<member>winelib-user/bindlls-cxx-apis.html</>
-<member>winelib-user/bindlls-spec.html</>
-<member>winelib-user/bindlls-wrapper.html</>
-<member>winelib-user/bindlls.html</>
-<member>winelib-user/c-library.html</>
-<member>winelib-user/com-support.html</>
-<member>winelib-user/index.html</>
-<member>winelib-user/init-problems.html</>
-<member>winelib-user/linking.html</>
-<member>winelib-user/mfc-compiling.html</>
-<member>winelib-user/mfc-legal-issues.html</>
-<member>winelib-user/mfc-using.html</>
-<member>winelib-user/mfc.html</>
-<member>winelib-user/others.html</>
-<member>winelib-user/packaging.html</>
-<member>winelib-user/portability-issues.html</>
-<member>winelib-user/porting-compiling.html</>
-<member>winelib-user/seh.html</>
-<member>winelib-user/spec-file.html</>
-<member>winelib-user/unicode.html</>
-<member>winelib-user/winelib-getting-started.html</>
-<member>winelib-user/winelib-introduction.html</>
-<member>winelib-user/winelib-requirements.html</>
-<member>winelib-user/winelib-toolkit.html</>
-<member>winelib-user/wmc.html</>
-<member>winelib-user/wrc.html</>
- </simplelist>
-
- </listitem>
-
-
- </orderedlist>
-
- </sect1>
-
-
- <sect1 id="pkg-nonstatic"><title>Dynamic Wine Files</title>
-
- <para>
- Wine also generates and depends on a number of dynamic
- files, including user configuration files and registry files.
- </para>
-
- <para>
- At the time of this writing, there was not a clear
- consensus of where these files should be located, and how
- they should be handled. This section attempts
- to explain the alternatives clearly.
- </para>
-
- <orderedlist>
-
- <listitem>
- <variablelist><title>Configuration File</title>
- <varlistentry id=winerc><term><filename><link linkend=WINECONFDIR endterm=wineconfdir.id></link>/config</filename></term>
- <listitem>
- <para>
- This file is the user local Wine configuration file.
- At the time of this writing, if this file exists,
- then no other configuration file is loaded.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry><term>
- <filename><link linkend=ETCDIR endterm=etcdir.id></link>/wine.conf</filename></term>
- <listitem>
- <para>
- This is the global Wine configuration file. It
- is only used if the user running Wine has
- no local configuration file.
- Global wine configuration is currently not possible;
- this might get reenabled at some time.
- </para>
- <para>
- Some packagers feel that this file should not
- be supplied, and that only a wine.conf.default
- should be given here.
- </para>
- <para>
- Other packagers feel that this file should
- be the predominant file used, and that
- users should only shift to a local configuration
- file if they need to. An argument has been
- made that the local configuration file
- should inherit the global configuration file.
- At this time, Wine does not do this;
- please refer to the WineHQ discussion
- archives for the debate concerning this.
- </para>
- <para>
- This debate is addressed more completely
- below, in <link linkend=pkg-strategy endterm=strategy.id></link>.
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
-
- </listitem>
-
- <listitem>
-
- <para>Registry Files</para>
-
- <para>
- In order to replicate the Windows registry system,
- Wine stores registry entries in a series of files.
-
- For an excellent overview of this issue, read
- this
- <ulink url="http://www.winehq.com/News/2000-25.html#FTR">
- Wine Weekly News feature.</ulink>
-
- </para>
-
- <para>
- The bottom line is that, at Wine server startup,
- Wine loads all registry entries into memory
- to create an in memory image of the registry.
- The order of files which Wine uses to load
- registry entries is extremely important,
- as it affects what registry entries are
- actually present. The order is roughly that
- .dat files from a Windows partion are loaded,
- then global registry settings from <link linkend=ETCDIR endterm=etcdir.id></link>,
- and then finally local registry settings are
- loaded from <link linkend=WINECONFDIR endterm=wineconfdir.id></link>
- . As each set are loaded,
- they can override the prior entries. Thus,
- the local registry files take precedence.
- </para>
-
- <para>
- Then, at exit (or at periodic intervals),
- Wine will write either all registry entries
- (or, with the default setting) changed
- registry entries to files in the
- <link linkend=WINECONFDIR endterm=wineconfdir.id></link>.
- </para>
-
- <variablelist>
- <varlistentry><term><filename><link linkend=WINECONFDIR endterm=wineconfdir.id></link>/system.reg</filename></term>
- <listitem>
- <para>
- This file contains the user's local copy of
- the HKEY_LOCAL_MACHINE registry hive. In general
- use, it will contain only changes made to the
- default registry values.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry><term><filename><link linkend=WINECONFDIR endterm=wineconfdir.id></link>/user.reg</filename></term>
- <listitem>
- <para>
- This file contains the user's local copy of
- the HKEY_CURRENT_USER registry hive. In
- general use, it will contain only changes made to the
- default registry values.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry><term><filename><link linkend=WINECONFDIR endterm=wineconfdir.id></link>/userdef.reg</filename></term>
- <listitem>
- <para>
- This file contains the user's local copy of
- the HKEY_USERS\.Default registry hive. In
- general use, it will contain only changes made to the
- default registry values.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry><term><filename><link linkend=WINECONFDIR endterm=wineconfdir.id></link>/wine.userreg</filename></term>
- <listitem>
- <para>
- This file is being deprecated. It is only read
- if there is no user.reg or wine.userreg, and
- it supplied the contents of HKEY_USERS.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry><term><filename><link linkend=ETCDIR endterm=etcdir.id></link>/wine.systemreg</filename></term>
- <listitem>
- <para>
- This file contains the global values for
- HKEY_LOCAL_MACHINE. The values in this file
- can be overridden by the user's local settings.
- </para>
- <note>
- <para>
- The location of this directory is hardcoded within
- wine, generally to /etc. This will hopefully be
- fixed at some point in the future.
- </para>
- </note>
- </listitem>
- </varlistentry>
-
-
- <varlistentry><term><filename><link linkend=ETCDIR endterm=etcdir.id></link>/wine.userreg</filename></term>
- <listitem>
- <para>
- This file contains the global values for
- HKEY_USERS. The values in this file
- can be overridden by the user's local settings.
- This file is likely to be deprecated in
- favor of a global wine.userdef.reg that will
- only contain HKEY_USERS/.Default.
- </para>
- </listitem>
- </varlistentry>
-
- </variablelist>
-
-
- </listitem>
-
- <listitem>
- <variablelist><title>Other files in <link linkend=WINECONFDIR endterm=wineconfdir.id></link></title>
- <varlistentry><term><filename><link linkend=WINECONFDIR endterm=wineconfdir.id></link>/wineserver-[hostname]</filename></term>
- <listitem>
- <para>
- This directory contains files used by Wine and the Wineserver
- to communicate. A packager may want to have a facility for the user to erase files in this directory, as a crash in the
- wineserver resulting in a bogus lock file can render wine unusable.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry><term><filename><link linkend=WINECONFDIR endterm=wineconfdir.id></link>/cachedmetrics.[display]</filename></term>
- <listitem>
- <para>
- This file contains font metrics for the given X display.
- Generally, this cache is generated once at Wine start time.
- cachedmetrics can be generated if absent.You should note this can be long.
- </para>
- </listitem>
- </varlistentry>
-
- </variablelist>
- </listitem>
-
-
- </orderedlist>
-
-
- </sect1>
-
- <sect1 id="pkg-winpartition"><title>Important Files from a Windows Partition</title>
- <para>
- Wine has the ability to use files from an installation of the
- actual Microsoft Windows operating system. Generally these
- files are loaded on a VFAT partition that is mounted
- under Linux.
- </para>
- <para>
- This is probably the most important configuration detail.
- The use of Windows registry and DLL files dramatically
- alters the behaviour of Wine. If nothing else,
- pacakager have to make this distinction clear
- to the end user, so that they can intelligently
- choose their configuration.
- </para>
-
-
- <orderedlist>
-
- <listitem>
- <variablelist><title>Registry Files</title>
- <varlistentry><term><filename>[WINDOWSDIR]/system32/system.dat</filename></term>
- <listitem>
- <para>
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry><term><filename>[WINDOWSDIR]/system32/user.dat</filename></term>
- <listitem>
- <para>
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry><term><filename>[WINDOWSDIR]/win.ini</filename></term>
- <listitem>
- <para>
- </para>
- </listitem>
- </varlistentry>
-
- </variablelist>
-
- </listitem>
-
- <listitem>
- <para>
- Windows Dynamic Link Libraries ([WINDOWSDIR]/system32/*.dll)
- </para>
- <para>
- Wine has the ability to use the actual Windows DLL files
- when running an application. An end user can configure
- Wine so that Wine uses some or all of these DLL files
- when running a given application.
- </para>
- </listitem>
-
- </orderedlist>
-
- </sect1>
-
- </chapter>
-
- <chapter id="pkg-strategy"><title id=strategy.id>Packaging Strategies</title>
-
- <para>
- There has recently been a lot of discussion on the Wine
- development mailing list about the best way to
- build Wine packages.
- </para>
- <para>
- There was a lot of discussion, and several diverging
- points of view. This section of the document
- attempts to present the areas of common agreement,
- and also to present the different approaches
- advocated on the mailing list.
- </para>
-
- <sect1 id="pkg-whatfiles"><title>Distribution of Wine into packages</title>
- <para>
- The most basic question to ask is given the Wine CVS tree,
- what physical files are you, the packager, going to produce?
- Are you going to produce only a wine.rpm (as Marcus has done),
- or are you going to produce 6 Debian files
- (libwine, libwine-dev, wine, wine-doc, wine-utils and winesetuptk) as
- Ove has done?
- </para>
- <para>
- At this point, there is no consensus
- amongst the wine-devel community on this subject.
- </para>
- </sect1>
-
- <sect1 id="pkg-wherefiles"><title>Where to install files</title>
- <para>
- This question is not really contested. It will vary
- by distribution, and is really up to the packager.
- As a guideline, the current 'make install' process
- seems to behave such that
- if we pick a single <link linkend=PREFIX endterm=prefix.id></link>,
- then :
- </para>
- <orderedlist>
-
- <listitem>
- <para>
- all <link linkend=binfiles>binary files</link> go into
- <link linkend=PREFIX endterm=prefix.id></link>$PREFIX/bin,
- </para>
- </listitem>
-
- <listitem>
- <para>
- all <link linkend=libfiles>library files</link> go into
- <link linkend=PREFIX endterm=prefix.id></link>$PREFIX/lib/wine,
- </para>
- </listitem>
-
- <listitem>
- <para>
- all <link linkend=includefiles>include files</link> go into
- <link linkend=PREFIX endterm=prefix.id></link>$PREFIX/include/wine,
- </para>
- </listitem>
-
- <listitem>
- <para>
- all <link linkend=docfiles>documentation files</link> go into
- <link linkend=PREFIX endterm=prefix.id></link>$PREFIX/share/doc/wine-VERSION,
- </para>
- </listitem>
-
- <listitem>
- <para>
- and <link linkend=manfiles>man pages</link> go into
- <link linkend=PREFIX endterm=prefix.id></link>$PREFIX/share/man,
- </para>
- </listitem>
-
- </orderedlist>
-
- <para>
- Refer to the specific information on the Debian package
- and the OpenLinux package for specific details on how
- those packages are built.
- </para>
- <para>
- You might also want to use the wine wrapper script winelauncher
- that can be found in tools/ directory, as it has several important
- advantages over directly invoking the wine binary.
- See the <link linkend=binfiles>Executable Files</link> section
- for details.
- </para>
-
- <sect2 id=opt><title>The question of /opt/wine</title>
- <para>
- The FHS 2.2 specification suggests that Wine as a package
- should be installed to /opt/wine. None of the
- existing packages follow this guideline (today;
- check again tomorrow).
- </para>
- </sect2>
-
- </sect1>
-
- <sect1 id="pkg-whattomake"><title>What files to create</title>
- <para>
- After installing the static and shareable files, the next
- question the packager needs to ask is how much dynamic
- configuration will be done, and what configuration
- files should be created.
- </para>
- <para>
- There are several approaches to this:
- <orderedlist>
- <listitem>
- <para>
- Rely completely on user file space - install nothing
- </para>
- <para>
- This approach relies upon the new winesetup utility and
- the new ability of Wine to launch winesetup if no configuration file is found.
- The basic concept is that no global configuration files
- are created at install time.
- Instead, Wine configuration files are created on the
- fly by the winesetup program when Wine is invoked.
- Further, winesetup creates default Windows directories
- and paths that are stored completely in
- the user's <link linkend=WINECONFDIR endterm=wineconfdir.id></link>.
- </para>
- <para>
- This approach has the benefit of simplicity in that all
- Wine files are either stored under /opt/wine or under
- ~/.wine. Further, there is only ever one Wine
- configuration file.
- </para>
- <para>
- This approach, however, adds another level of complexity.
- It does not allow Wine to run Solitaire 'out of the box';
- the user must run the configuration program first. Further,
- winesetup requires Tcl/Tk, a requirement not beloved by some.
- Additionally, this approach closes the door on multi
- user configurations and presumes a single user approach.
- </para>
- </listitem>
-
-
- <listitem>
- <para>
- Build a reasonable set of defaults for the global wine.conf,
- facilitate creation of a user's local Wine configuration.
- </para>
- <para>
- This approach, best shown by Marcus, causes the
- installation process to auto scan the system,
- and generate a global wine.conf file with best
- guess defaults. The OpenLinux packages follow
- this behaviour.
- </para>
- <para>
- The keys to this approach are always putting
- an existing Windows partition into the
- path, and being able to run Solitaire
- right out of the box.
- Another good thing that Marcus does is he
- detects a first time installation and
- does some clever things to improve the
- user's Wine experience.
- </para>
- <para>
- A flaw with this approach, however, is it doesn't
- give the user an obvious way to choose not to
- use a Windows partition.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Build a reasonable set of defaults for the global wine.conf,
- and ask the user if possible
- </para>
- <para>
- This approach, demonstrated by Ove, causes the
- installation process to auto scan the system,
- and generate a global wine.conf file with best
- guess defaults. Because Ove built a Debian
- package, he was able to further query debconf and
- get permission to ask the user some questions,
- allowing the user to decide whether or not to
- use a Windows partition.
- </para>
- </listitem>
-
-
- </orderedlist>
- </para>
-
- </sect1>
-
-
- <sect1 id="pkg-wineconf"><title>What to put into the wine config file</title>
- <para>
- This is the sample config file provided with wine 20030115. You can edit this file
- to best suit the needs of your intended user.
- </para>
-
- <programlisting>
-
-WINE REGISTRY Version 2
-;; All keys relative to \\Machine\\Software\\Wine\\Wine\\Config
-
-;; If you think it is necessary to show others your complete config for a
-;; bug report, filter out empty lines and comments with
-;; grep -v "^;" ~/.wine/config | grep '.'
-;;
-;; 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)
-;;
-[Drive A]
-"Path" = "/mnt/fd0"
-"Type" = "floppy"
-"Label" = "Floppy"
-"Filesystem" = "win95"
-"Serial" = "87654321"
-"Device" = "/dev/fd0"
-
-[Drive C]
-"Path" = "/c"
-"Type" = "hd"
-"Label" = "MS-DOS"
-"Filesystem" = "win95"
-
-[Drive D]
-"Path" = "/cdrom"
-"Type" = "cdrom"
-"Label" = "CD-Rom"
-"Filesystem" = "win95"
-; make sure that device is correct and has proper permissions !
-"Device" = "/dev/cdrom"
-
-[Drive E]
-"Path" = "/tmp"
-"Type" = "hd"
-"Label" = "Tmp Drive"
-"Filesystem" = "win95"
-
-[Drive F]
-"Path" = "${HOME}"
-"Type" = "network"
-"Label" = "Home"
-"Filesystem" = "win95"
-
-[wine]
-"Windows" = "c:\\windows"
-"System" = "c:\\windows\\system"
-"Temp" = "e:\\"
-"Path" = "c:\\windows;c:\\windows\\system;e:\\;e:\\test;f:\\"
-"Profile" = "c:\\windows\\Profiles\\Administrator"
-"GraphicsDriver" = "x11drv"
-;"ShowDirSymlinks" = "1"
-;"ShowDotFiles" = "1"
-"ShellLinker" = "wineshelllink"
-
-# <wineconf>
-
-[Version]
-; Windows version to imitate (win95,win98,winme,nt351,nt40,win2k,winxp,win20,win30,win31)
-;"Windows" = "win98"
-; DOS version to imitate
-;"DOS" = "6.22"
-
-; Be careful here, wrong DllOverrides settings have the potential
-; to pretty much kill your setup.
-[DllOverrides]
-; some DLLs you may want to change
-"oleaut32" = "builtin, native"
-"ole32" = "builtin, native"
-"commdlg" = "builtin, native"
-"comdlg32" = "builtin, native"
-"shell" = "builtin, native"
-"shell32" = "builtin, native"
-"shfolder" = "builtin, native"
-"shlwapi" = "builtin, native"
-"shdocvw" = "builtin, native"
-"advapi32" = "builtin, native"
-"msvcrt" = "native, builtin"
-"mciavi.drv" = "native, builtin"
-"mcianim.drv" = "native, builtin"
-; you can specify applications too
-; this one will apply for all notepad.exe
-;"*notepad.exe" = "native, builtin"
-; this one will apply only for a particular file
-;"C:\\windows\\regedit.exe" = "native, builtin"
-; default for all other DLLs
-"*" = "builtin, native"
-
-[x11drv]
-; Number of colors to allocate from the system palette
-"AllocSystemColors" = "100"
-; Use a private color map
-"PrivateColorMap" = "N"
-; Favor correctness over speed in some graphics operations
-"PerfectGraphics" = "N"
-; Color depth to use on multi-depth screens
-;;"ScreenDepth" = "16"
-; Name of X11 display to use
-;;"Display" = ":0.0"
-; Allow the window manager to manage created windows
-"Managed" = "Y"
-; Use a desktop window of 640x480 for Wine
-;"Desktop" = "640x480"
-; Use XFree86 DGA extension if present
-; (make sure /dev/mem is accessible by you !)
-"UseDGA" = "Y"
-; Use XShm extension if present
-"UseXShm" = "Y"
-; Use XVidMode extension if present
-"UseXVidMode" = "Y"
-; Use the take focus protocol
-"UseTakeFocus" = "Y"
-; Enable DirectX mouse grab
-"DXGrab" = "N"
-; Create the desktop window with a double-buffered visual
-; (useful to play OpenGL games)
-"DesktopDoubleBuffered" = "N"
-; Code page used for captions in managed mode
-; 0 means default ANSI code page (CP_ACP == 0)
-"TextCP" = "0"
-; Use this if you have more than one port for video on your setup
-; (Wine uses for now the first 'input image' it finds).
-;; "XVideoPort" = "43"
-; Run in synchronous mode (useful for debugging X11 problems)
-;;"Synchronous" = "Y"
-;
-; Use the Render extension to render client side fonts (default "Y")
-;;"ClientSideWithRender" = "Y"
-; Fallback on X core requests to render client side fonts (default "Y")
-;;"ClientSideWithCore" = "Y"
-; Set both of the previous two to "N" in order to force X11 server side fonts
-;
-; Anti-alias fonts if using the Render extension (default "Y")
-;;"ClientSideAntiAliasWithRender" = "Y"
-; Anti-alias fonts if using core requests fallback (default "Y")
-;;"ClientSideAntiAliasWithCore" = "Y"
-;
-
-[fonts]
-;Read the Fonts topic in the Wine User Guide before adding aliases
-;See a couple of examples for russian users below
-"Resolution" = "96"
-"Default" = "-adobe-helvetica-"
-"DefaultFixed" = "fixed"
-"DefaultSerif" = "-adobe-times-"
-"DefaultSansSerif" = "-adobe-helvetica-"
-
-;; default TrueType fonts with russian koi8-r encoding
-;"Default" = "-monotype-arial-*-*-*--*-*-*-*-*-*-koi8-r"
-;"DefaultFixed" = "-monotype-courier new-*-*-*--*-*-*-*-*-*-koi8-r"
-;"DefaultSerif" = "-monotype-times new roman-*-*-*--*-*-*-*-*-*-koi8-r"
-;"DefaultSansSerif" = "-monotype-arial-*-*-*--*-*-*-*-*-*-koi8-r"
-;; default cyrillic bitmap X fonts
-;"Default" = "-cronyx-helvetica-"
-;"DefaultFixed" = "fixed"
-;"DefaultSerif" = "-cronyx-times-"
-;"DefaultSansSerif" = "-cronyx-helvetica-"
-
-; the TrueType font dirs you want to make accessible to wine
-[FontDirs]
-;"dir1" = "/usr/X11R6/lib/X11/fonts/TrueType"
-;"dir2" = "/usr/share/fonts/truetype"
-;"dir3" = "/usr/X11R6/lib/X11/fonts/TT"
-;"dir4" = "/usr/share/fonts/TT"
-
-[serialports]
-"Com1" = "/dev/ttyS0"
-"Com2" = "/dev/ttyS1"
-"Com3" = "/dev/ttyS2"
-"Com4" = "/dev/modem"
-
-[parallelports]
-"Lpt1" = "/dev/lp0"
-
-[ppdev]
-;; key: io-base of the emulated port
-;; value : parport-device{,timeout}
-;; timeout for auto closing an open device ( not yet implemented)
-;"378" = "/dev/parport0"
-;"278" = "/dev/parport1"
-;"3bc" = "/dev/parport2"
-
-[spooler]
-"FILE:" = "tmp.ps"
-"LPT1:" = "|lpr"
-"LPT2:" = "|gs -sDEVICE=bj200 -sOutputFile=/tmp/fred -q -"
-"LPT3:" = "/dev/lp3"
-
-[ports]
-;"read" = "0x779,0x379,0x280-0x2a0"
-;"write" = "0x779,0x379,0x280-0x2a0"
-
-[Debug]
-;"RelayExclude" = "RtlEnterCriticalSection;RtlLeaveCriticalSection"
-;"RelayInclude" = "user32.CreateWindowA"
-;"SnoopExclude" = "RtlEnterCriticalSection;RtlLeaveCriticalSection"
-;"SpyExclude" = "WM_SIZE;WM_TIMER;"
-
-[registry]
-;These are all booleans. Y/y/T/t/1 are true, N/n/F/f/0 are false.
-;Defaults are read all, write to Home
-; Where to find the global registries
-;"GlobalRegistryDir" = "/etc";
-; Global registries (stored in /etc)
-"LoadGlobalRegistryFiles" = "Y"
-; Home registries (stored in ~user/.wine/)
-"LoadHomeRegistryFiles" = "Y"
-; Load Windows registries from the Windows directory
-"LoadWindowsRegistryFiles" = "Y"
-; TRY to write all changes to home registries
-"WritetoHomeRegistryFiles" = "Y"
-; Registry periodic save timeout in seconds
-; "PeriodicSave" = "600"
-; Save only modified keys
-"SaveOnlyUpdatedKeys" = "Y"
-
-[Tweak.Layout]
-;; supported styles are 'Win31'(default), 'Win95', 'Win98'
-;; this has *nothing* to do with the windows version Wine returns:
-;; set the "Windows" value in the [Version] section if you want that.
-"WineLook" = "Win95"
-
-[Console]
-;"Drivers" = "tty"
-;"XtermProg" = "nxterm"
-;"InitialRows" = "25"
-;"InitialColumns" = "80"
-;"TerminalType" = "nxterm"
-
-[Clipboard]
-"ClearAllSelections" = "0"
-"PersistentSelection" = "1"
-
-; List of all directories directly contain .AFM files
-[afmdirs]
-"1" = "/usr/share/ghostscript/fonts"
-"2" = "/usr/share/a2ps/afm"
-"3" = "/usr/share/enscript"
-"4" = "/usr/X11R6/lib/X11/fonts/Type1"
-
-[WinMM]
-#"Drivers" = "winearts.drv"
-#"Drivers" = "winejack.drv"
-"Drivers" = "wineoss.drv"
-"WaveMapper" = "msacm.drv"
-"MidiMapper" = "midimap.drv"
-
-[dsound]
-;; HEL only: Number of waveOut fragments ahead to mix in new buffers.
-;"HELmargin" = "5"
-;; HEL only: Number of waveOut fragments ahead to queue to driver.
-;"HELqueue" = "5"
-;; Max number of fragments to prebuffer
-;"SndQueueMax" = "28"
-;; Min number of fragments to prebuffer
-;"SndQueueMin" = "12"
-
-[Network]
-;; Use the DNS (Unix) host name always as NetBIOS "ComputerName" (boolean, default "Y").
-;; Set to N if you need a persistent NetBIOS ComputerName that possibly differs
-;; from the Unix host name. You'll need to set ComputerName in
-;; HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\ComputerName\ComputerName, too.
-;"UseDnsComputerName" = "N"
-
-;; sample AppDefaults entries
-
-; 3 InstallShield versions who like to put their full screen window in front,
-; without any chance to switch to another X11 application.
-; So just catch them in a desktop window.
-
-[AppDefaults\\_INS5576._MP\\x11drv]
-"Desktop" = "640x480"
-
-[AppDefaults\\_INS5176._MP\\x11drv]
-"Desktop" = "640x480"
-
-[AppDefaults\\_INS0466._MP\\x11drv]
-"Desktop" = "640x480"
-
-;[AppDefaults\\iexplore.exe\\DllOverrides]
-;"shlwapi" = "native"
-;"rpcrt4" = "native"
-;"ole32" = "native"
-;"shdocvw" = "native"
-;"wininet" = "native"
-;"shfolder" = "native"
-;"shell32" = "native"
-;"shell" = "native"
-;"comctl32" = "native"
-;
-;[AppDefaults\\setup.exe\\x11drv]
-;"Desktop" = "800x600"
-;
-;[AppDefaults\\sol.exe\\Version]
-;"Windows" = "nt40"
-;
-;; Some games (Quake 2, UT) refuse to accept emulated dsound devices.
-;; You can add an AppDefault entry like this for such cases.
-;[AppDefaults\\pickygame.exe\\dsound]
-;"EmulDriver" = "N"
-
-# </wineconf>
-
- </programlisting>
- </sect1>
-
- </chapter>
-
-
-
-
- <chapter id="pkg-implementation"> <title>Implementation</title>
-
- <sect1 id="pkg-openlinux"><title>Red Hat 8.0 Sample</title>
-
- <orderedlist inheritnum="inherit">
- <listitem>
- <para>Building the package</para>
- <para>
- Wine is configured the usual way (depending on your
- build environment). The "prefix" is chosen using your
- application placement policy
- (<filename>/usr/</filename>,
- <filename>/usr/X11R6/</filename>,
- <filename>/opt/wine/</filename> or similar). The
- configuration files (<filename>wine.conf</filename>,
- <filename>wine.userreg</filename>,
- <filename>wine.systemreg</filename>) are targeted for
- <filename>/etc/wine/</filename> (rationale: FHS 2.2,
- multiple readonly configuration files of a package).
- </para>
- <para>
- Example (split this into <literal>%build</literal> and
- <literal>%install</literal> section for
- <command>rpm</command>):
- </para>
- <screen>
-CFLAGS=$RPM_OPT_FLAGS \
-./configure --prefix=/usr/X11R6 --sysconfdir=/etc/wine/ --enable-dll
-make
-BR=$RPM_BUILD_ROOT
-make install prefix=$BR/usr/X11R6/ sysconfdir=$BR/etc/wine/
-install -d $BR/etc/wine/
-install -m 644 wine.ini $BR/etc/wine/wine.conf
-
-# Put all our DLLs in a seperate directory. (this works only if
-# you have a buildroot)
-install -d $BR/usr/X11R6/lib/wine
-mv $BR/usr/X11R6/lib/lib* $BR/usr/X11R6/lib/wine/
-
-# the clipboard server is started on demand.
-install -m 755 dlls/x11drv/wineclipsrv $BR/usr/X11R6/bin/
-
-# The Wine server is needed.
-install -m 755 server/wineserver $BR/usr/X11R6/bin/
- </screen>
- <para>
- Here we unfortunately do need to create
- <filename>wineuser.reg</filename> and
- <filename>winesystem.reg</filename> from the Wine
- distributed <filename>winedefault.reg</filename>. This
- can be done using <command>./regedit</command> once for
- one example user and then reusing his
- <filename><link linkend=WINECONFDIR endterm=wineconfdir.id></link>/user.reg</filename> and
- <filename><link linkend=WINECONFDIR endterm=wineconfdir.id></link>/system.reg</filename> files.
- <note>
- <title>FIXME</title>
- <para>this needs to be done better</para>
- </note>
- </para>
- <screen>
-install -m 644 wine.sytemreg $BR/etc/wine/
-install -m 644 wine.userreg $BR/etc/wine/
- </screen>
- <para>
- There are now a lot of libraries generated by the
- build process, so a seperate library directory should
- be used.
- </para>
- <screen>
-install -d 755 $BR/usr/X11R6/lib/
-mv $BR/
- </screen>
- <para>
- You will need to package the files:
- </para>
- <screen>
-$prefix/bin/wine, $prefix/bin/dosmod, $prefix/lib/wine/*
-$prefix/man/man1/wine.1, $prefix/include/wine/*,
-$prefix/bin/wineserver, $prefix/bin/wineclipsrv
-
-%config /etc/wine/*
-%doc ... choose from the toplevel directory and documentation/
- </screen>
- <para>
- The post-install script:
- </para>
- <screen>
-if ! grep -q /usr/X11R6/lib/wine /etc/ld.so.conf; then
- echo "/usr/X11R6/lib/wine" >> /etc/ld.so.conf
-fi
-/sbin/ldconfig
- </screen>
- <para>
- The post-uninstall script:
- </para>
- <screen>
-if [ "$1" = 0 ]; then
- perl -ni -e 'print unless m:/usr/X11R6/lib/wine:;' /etc/ld.so.conf
-fi
-/sbin/ldconfig
- </screen>
- </listitem>
- <listitem>
- <para>Creating a good default configuration file</para>
- <para>
- 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:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- [Drive X]:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- A for the floppy. Specify your distribution's
- default floppy mountpoint here.
- </para>
- <programlisting>
-Path=/auto/floppy
- </programlisting>
- </listitem>
- <listitem>
- <para>
- C for the <filename>C:\</filename> directory.
- Here we use the user's home directory, for most
- applications do see <filename>C:\</filename>
- as root-writeable directory of every windows
- installation and this basically is it in the
- UNIX-user context.
- </para>
- <programlisting>
-Path=${HOME}
- </programlisting>
- </listitem>
- <listitem>
- <para>
- R for the CD-Rom drive. Specify your
- distribution's default CD-ROM drives mountpoint
- here.
- </para>
- <programlisting>
-Path=/auto/cdrom
- </programlisting>
- </listitem>
- <listitem>
- <para>
- T for temporary storage. We do use
- <filename>/tmp/</filename> (rationale: between
- process temporary data belongs to
- <filename>/tmp/</filename>, FHS 2.0)
- </para>
- </listitem>
- <listitem>
- <para>
- W for the original Windows installation. This
- drive points to the
- <filename>windows\</filename> subdirectory of
- the original windows installation. This avoids
- problems with renamed
- <filename>windows</filename> directories (as
- for instance <filename>lose95</filename>,
- <filename>win</filename> or
- <filename>sys\win95</filename>). During
- compile/package/install we leave this to be
- <filename>/</filename>, it has to be
- configured after the package install.
- </para>
- </listitem>
- <listitem>
- <para>
- Z for the UNIX Root directory. This avoids any
- problems with "could not find drive for
- current directory" users occasionally complain
- about in the newsgroup and the irc channel. It
- also makes the whole directory structure
- browseable. The type of Z should be network,
- so applications expect it to be readonly.
- </para>
- <programlisting>
-Path=/
- </programlisting>
- </listitem>
- </itemizedlist>
- </listitem>
- <listitem>
- <para>
- [wine]:
- </para>
- <screen>
- Windows=c:\windows\ (the windows/ subdirectory in the user's
- home directory)
- System=c:\windows\system\ (the windows/system subdirectory in the user's
- home directory)
- 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)
- </screen>
- </listitem>
- <listitem>
- <para>[Tweak.Layout]</para>
- <screen>
- WineLook=win95 (just the coolest look ;)
- </screen>
- </listitem>
- <listitem>
- <para>
- Possibly modify the [spooler], [serialports] and
- [parallelports] sections.
- </para>
- <note>
- <title>FIXME</title>
- <para>possibly more, including printer stuff.</para>
- </note>
- </listitem>
- </itemizedlist>
-
- <para>Add this prepared configuration file to the package.</para>
- </listitem>
- <listitem>
- <para>Installing Wine for the system administrator</para>
- <para>
- Install the package using the usual packager
- <command>rpm -i wine.rpm</command>. You may edit
- <filename>/etc/wine/wine.conf</filename>, [Drive W],
- to point to a possible windows installation right
- after the install. That's it.
- </para>
- <para>
- Note that on Linux you should somehow try to add the
- <option>unhide</option> mount option (see <command>man
- mount</command>) to the CD-ROM entry in
- <filename>/etc/fstab</filename> during package
- install, as several stupid Windows programs mark some
- setup (!) files as hidden (ISO9660) on CD-ROMs, which
- will greatly confuse users as they won't find their
- setup files on the CD-ROMs as they were used on
- Windows systems when <option>unhide</option> is not
- set ;-\ And of course the setup program will complain
- that <filename>setup.ins</filename> or some other mess
- is missing... If you choose to do so, then please make
- this change verbose to the admin.
- Also make sure that the kernel you use includes the Joliet
- CD-ROM support, for the very same reasons as given above
- (no long filenames due to missing Joliet, files not found).
- </para>
- </listitem>
- <listitem>
- <para>Installing Wine for the user</para>
- <para>
- The user will need to run a setup script before the
- first invocation of Wine. This script should:
- </para>
-
-
- <itemizedlist>
- <listitem>
- <para>
- Copy <filename>/etc/wine/wine.conf</filename> for
- user modification.
- </para>
- </listitem>
- <listitem>
- <para>
- Allow specification of the original windows
- installation to use (which modifies the copied
- <filename>wine.conf</filename> file).
- </para>
- </listitem>
- <listitem>
- <para>
- Create the windows directory structure
- (<filename>c:\windows</filename>,
- <filename>c:\windows\system</filename>,
- <filename>c:\windows\Start Menu\Programs</filename>,
- <filename>c:\Program Files</filename>,
- <filename>c:\Desktop</filename>, etc.)
- </para>
- </listitem>
- <listitem>
- <para>
- Symlink all <filename>.dll</filename> and
- <filename>.exe</filename> files from the original
- windows installation to the
- <filename>windows</filename> directory. Why? Some
- programs reference "%windowsdir%/file.dll" or
- "%systemdir%/file.dll" directly and fail if they
- are not present.
- </para>
- <para>
- This will give a huge number of symlinks, yes.
- However, if an installer later overwrites one of
- those files, it will overwrite the symlink (so
- that the file now lies in the
- <filename>windows/</filename> subdirectory).
- </para>
- <note>
- <title>FIXME</title>
- <para>Not sure this is needed for all files.</para>
- </note>
- </listitem>
- <listitem>
- <para>
- On later invocation the script might want to
- compare regular files in the user's windows
- directories and in the global windows directories
- and replace same files by symlinks (to avoid
- diskspace problems).
- </para>
- </listitem>
- </itemizedlist>
-
-
- </listitem>
- </orderedlist>
-
-
- <sect2 id=sample><title>Sample Red Hat 8.0 .spec file for review purposes</title>
-
-
-<programlisting>
-
-%define DATE 20030115
-Summary: A Windows 16/32 bit emulator.
-Name: wine
-Version: %{DATE}
-Release: 1rh8winehq
-Group: Applications/Emulators
-License: LGPL
-URL: http://www.winehq.com/
-Source: ftp://metalab.unc.edu/pub/Linux/ALPHA/wine/development/Wine-%{version}.tar.bz2
-Source1: wine.init
-Patch: wine-%{version}-initial.patch
-Patch1: wine-%{version}-kde2.patch
-Patch2: wine-%{version}-winelauncher.patch
-Patch3: wine-%{version}-defaultcfg.patch
-Patch4: wine-%{version}-stabs+.patch
-Buildroot: %{_tmppath}/%{name}-root
-ExclusiveArch: %{ix86}
-Prereq: shadow-utils
-Conflicts: kdebase < 2.0
-Requires: cups-libs >= 1.1.12
-BuildRequires: docbook-utils, cups-devel >= 1.1.12, autoconf253, perl
-
-%description
-While Wine is usually thought of as a Windows(TM) emulator, the Wine
-developers would prefer that users thought of Wine as a Windows
-compatibility layer for UNIX. This package includes a program loader,
-which allows unmodified Windows 3.1/95/NT binaries to run under Intel
-Unixes. Wine does not require MS Windows, but it can use native system
-.dll files if they are available.
-
-%package devel
-Summary: Wine development environment.
-Group: System Environment/Libraries
-Requires: wine = %{version}
-
-%description devel
-Header and include files for developing applications with the Wine
-Windows(TM) emulation libraries.
-
-%prep
-%setup -q -n wine-%{version}
-find . -type d -name CVS |xargs rm -rf
-%patch -p1 -b .initial
-%patch1 -p1 -b .kde2
-%patch2 -p1 -b .wl
-%patch3 -p1 -b .defcfg
-%patch4 -p1 -b .stabs+
-
-%build
-export CFLAGS="$RPM_OPT_FLAGS"
-autoconf || autoconf-2.53
-%configure \
- --with-x \
- --libdir=%{_libdir}/wine \
- --includedir=%{_includedir}/wine \
- --sysconfdir=%{_sysconfdir}/wine
-
-make depend
-make
-make -C documentation doc
-
-%install
-rm -rf $RPM_BUILD_ROOT
-
-%makeinstall \
- includedir=%{?buildroot:%{buildroot}}%{_includedir}/wine \
- libdir=%{?buildroot:%{buildroot}}%{_libdir}/wine \
- sysconfdir=%{?buildroot:%{buildroot}}%{_sysconfdir}/wine \
- dlldir=%{?buildroot:%{buildroot}}%{_libdir}/wine/wine \
- LDCONFIG=/bin/true
-
-for i in system "Start Menu/Programs/Startup" Profiles/Administrator Fonts \
- Desktop Favorites NetHood Recent SendTo ShellNew; do
- mkdir -p "$RPM_BUILD_ROOT%{_datadir}/wine-c/windows/$i"
-done
-mkdir -p "$RPM_BUILD_ROOT%{_datadir}/wine-c/My Documents"
-mkdir -p "$RPM_BUILD_ROOT%{_datadir}/wine-c/Program Files/Common Files"
-
-# Take care of wine and windows configuration files...
-mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/wine
-mv documentation/samples/config documentation/samples/config.orig
-sed "s/\"GraphicsDriver\" = .*/\"GraphicsDriver\" = \"ttydrv\"/" documentation/samples/config.orig |\
-sed "s|\"Path\" = \"/c\"\$|\"Path\" = \"$RPM_BUILD_ROOT%{_datadir}/wine-c\"|" |\
-sed "s|\"Path\" = \"\${HOME}\"$|\"Path\" = \"%{_builddir}/%{buildsubdir}\"|" -> documentation/samples/config
-WINEPREFIX=%{_builddir}/%{buildsubdir}/documentation/samples programs/regedit/regedit winedefault.reg > /dev/null
-# Wait until wineserver finishes and closes those files
-sleep 5
-install -c -m 0644 documentation/samples/system.reg $RPM_BUILD_ROOT%{_sysconfdir}/wine/system.reg
-install -c -m 0644 documentation/samples/user.reg $RPM_BUILD_ROOT%{_sysconfdir}/wine/user.reg
-install -c -m 0644 documentation/samples/userdef.reg $RPM_BUILD_ROOT%{_sysconfdir}/wine/userdef.reg
-rm -f documentation/samples/system.reg
-rm -f documentation/samples/user.reg
-rm -f documentation/samples/userdef.reg
-
-sed "s|\"Path\" = \"/c\"\$|\"Path\" = \"%{_datadir}/wine-c\"|" documentation/samples/config.orig > documentation/samples/config.rh
-install -c -m 0644 documentation/samples/config.rh $RPM_BUILD_ROOT%{_sysconfdir}/wine/wine.conf
-rm -f documentation/samples/config
-rm -f documentation/samples/config.rh
-mv documentation/samples/config.orig documentation/samples/config
-
-# Install link to windows applications replacements
-ln -sf %{_libdir}/wine/notepad.exe.so $RPM_BUILD_ROOT%{_datadir}/wine-c/windows/notepad.exe
-ln -sf %{_libdir}/wine/regedit.exe.so $RPM_BUILD_ROOT%{_datadir}/wine-c/windows/regedit.exe
-ln -sf %{_libdir}/wine/rundll32.exe.so $RPM_BUILD_ROOT%{_datadir}/wine-c/windows/rundll32.exe
-ln -sf %{_libdir}/wine/wcmd.exe.so $RPM_BUILD_ROOT%{_datadir}/wine-c/windows/system/cmd.exe
-ln -sf %{_libdir}/wine/control.exe.so $RPM_BUILD_ROOT%{_datadir}/wine-c/windows/system/control.exe
-ln -sf %{_libdir}/wine/winhelp.exe.so $RPM_BUILD_ROOT%{_datadir}/wine-c/windows/system/help.exe
-ln -sf %{_libdir}/wine/notepad.exe.so $RPM_BUILD_ROOT%{_datadir}/wine-c/windows/system/notepad.exe
-ln -sf %{_libdir}/wine/progman.exe.so $RPM_BUILD_ROOT%{_datadir}/wine-c/windows/system/progman.exe
-ln -sf %{_libdir}/wine/regsvr32.exe.so $RPM_BUILD_ROOT%{_datadir}/wine-c/windows/system/regsvr32.exe
-ln -sf %{_libdir}/wine/winemine.exe.so $RPM_BUILD_ROOT%{_datadir}/wine-c/windows/system/winmine.exe
-ln -sf %{_libdir}/wine/winver.exe.so $RPM_BUILD_ROOT%{_datadir}/wine-c/windows/system/winver.exe
-ln -sf %{_libdir}/wine/uninstaller.exe.so $RPM_BUILD_ROOT%{_datadir}/wine-c/windows/uninstaller.exe
-ln -sf %{_libdir}/wine/winhelp.exe.so $RPM_BUILD_ROOT%{_datadir}/wine-c/windows/winhelp.exe
-ln -sf %{_libdir}/wine/winhelp.exe.so $RPM_BUILD_ROOT%{_datadir}/wine-c/windows/winhlp32.exe
-
-for i in shell.dll shell32.dll winsock.dll wnsock32.dll; do
- touch $RPM_BUILD_ROOT%{_datadir}/wine-c/windows/system/$i
-done
-touch $RPM_BUILD_ROOT%{_datadir}/wine-c/autoexec.bat
-touch $RPM_BUILD_ROOT%{_datadir}/wine-c/config.sys
-touch $RPM_BUILD_ROOT%{_datadir}/wine-c/windows/win.ini
-install -c -m 0644 documentation/samples/system.ini $RPM_BUILD_ROOT%{_datadir}/wine-c/windows/system.ini
-
-cat >Red Hat <<EOF
-Wine directory structure used in Red Hat Linux:
-===============================================
-
-%{_datadir}/wine-c is the root directory (aka C: drive) wine looks for
-by default. It contains (empty) C:\windows and C:\windows\system
-directories, needed to operate Wine without an existing Windows installation.
-
-If you want to use Wine with an existing Windows installation that is mounted,
-for example, in /mnt/windows-c, edit /etc/wine.conf to say
-
-[Drive C]
-Path=/mnt/windows-c
-Type=hd
-Label=Whatever
-Filesystem=win95
-
-instead of the defaults set by installation.
-
-If you do this, you can safely remove %{_datadir}/wine-c.
-(Alternatively, just mount your Windows partition to %{_datadir}/wine-c.)
-EOF
-
-# Allow users to launch Windows programs by just clicking on the .exe file...
-mkdir -p $RPM_BUILD_ROOT%{_initrddir}
-install -c -m 755 %SOURCE1 $RPM_BUILD_ROOT%{_initrddir}/wine
-
-%clean
-rm -rf $RPM_BUILD_ROOT
-
-%pre
-/usr/sbin/groupadd -g 66 -r wine &>/dev/null || :
-
-%post
-if ! grep -q "^/usr/lib/wine$" /etc/ld.so.conf; then
- echo "/usr/lib/wine" >>/etc/ld.so.conf
-fi
-/sbin/ldconfig
-/sbin/chkconfig --add wine
-/sbin/chkconfig --level 2345 wine on
-/sbin/service wine start &>/dev/null || :
-
-%preun
-if test "$1" = "0"; then
- /sbin/chkconfig --del wine
-fi
-
-%postun
-if test "$1" = "0"; then
- perl -pi -e "s,^/usr/lib/wine$,,g" /etc/ld.so.conf
- /usr/sbin/groupdel wine &>/dev/null || :
-fi
-/sbin/ldconfig
-
-%files
-%defattr(-,root,root)
-%attr(0775, root, wine) %dir %{_datadir}/wine-c
-%attr(0775, root, wine) %dir %{_datadir}/wine-c/windows
-%attr(0775, root, wine) %dir %{_datadir}/wine-c/windows/system
-%attr(0775, root, wine) %dir "%{_datadir}/wine-c/windows/Start Menu"
-%attr(0775, root, wine) %dir "%{_datadir}/wine-c/windows/Start Menu/Programs"
-%attr(0775, root, wine) %dir "%{_datadir}/wine-c/windows/Start Menu/Programs/Startup"
-%attr(0775, root, wine) %dir %{_datadir}/wine-c/windows/Profiles
-%attr(0775, root, wine) %dir %{_datadir}/wine-c/windows/Profiles/Administrator
-%attr(0775, root, wine) %dir %{_datadir}/wine-c/windows/Fonts
-%attr(0775, root, wine) %dir %{_datadir}/wine-c/windows/Desktop
-%attr(0775, root, wine) %dir %{_datadir}/wine-c/windows/Favorites
-%attr(0775, root, wine) %dir %{_datadir}/wine-c/windows/NetHood
-%attr(0775, root, wine) %dir %{_datadir}/wine-c/windows/Recent
-%attr(0775, root, wine) %dir %{_datadir}/wine-c/windows/SendTo
-%attr(0775, root, wine) %dir %{_datadir}/wine-c/windows/ShellNew
-%attr(0775, root, wine) %dir "%{_datadir}/wine-c/My Documents"
-%attr(0775, root, wine) %dir "%{_datadir}/wine-c/Program Files"
-%attr(0775, root, wine) %dir "%{_datadir}/wine-c/Program Files/Common Files"
-%{_libdir}/wine
-%{_bindir}/*
-%{_mandir}/man?/*
-%{_datadir}/wine-c/windows/system/*.dll
-%{_datadir}/wine-c/windows/*.exe
-%config %{_datadir}/wine-c/autoexec.bat
-%config %{_datadir}/wine-c/config.sys
-%attr(0664, root, wine) %config %{_datadir}/wine-c/windows/win.ini
-%attr(0664, root, wine) %config %{_datadir}/wine-c/windows/system.ini
-%config %{_sysconfdir}/wine/*
-%config %{_initrddir}/*
-%doc ANNOUNCE BUGS COPYING.LIB ChangeLog DEVELOPERS-HINTS LICENSE LICENSE.OLD README VERSION
-%doc AUTHORS RedHat
-%doc documentation/ChangeLog.OLD documentation/HOWTO-winelib documentation/README.fr
-%doc documentation/wine-devel documentation/wine-user documentation/winelib-user documentation/samples
-
-%files devel
-%defattr(-,root,root)
-%{_includedir}/*
-
-
- </programlisting>
-
- </sect2>
- </sect1>
-
-</chapter>
-
-<chapter id="pkg-todo"><Title>Work to be done</title>
-
- <para>
- In preparing this document, it became clear that there were
- still a range of action items to be done in Wine
- that would improve this packaging process.
- For lack of a better place, I record them here.
- <emphasis>This list is almost certain to be obsolete;
- check bugzilla for a better list.</emphasis>
- </para>
-
- <orderedlist>
- <listitem>
- <para>
- Remove duplication of code between winesetup and
- wineconf/wineinstall.
- </para>
- <para>
- Currently, winesetup duplicates all of the code contained
- in wineconf.
- </para>
- <para>
- Instead, wineconf should be improved to generate
- the new style config file, and then winesetup should
- rely on wineconf to generate the default
- configuration file.
- </para>
- <para>
- Similarly, there is functionality such as creating
- the default registry files that is now done by
- both winesetup and wineinstall.
- </para>
- <para>
- At this time, it seems like the right thing to do
- is to break up or parameterize wineinstall, so that
- it can be used for single function actions,
- and then have winesetup call those functions.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Enhance winesetup to support W: drive generation.
- </para>
- <para>
- The best practices convention now seems to be
- to generate a set of drives from M: through W:.
- At this point, winesetup does not generate
- a default wine config file that follows
- these conventions. It should.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Enhance Wine to allow more dynamic switching
- between the use of a real Windows partition
- and an empty one.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Write a winelauncher utility application.
- </para>
- <para>
- Currently, Wine really requires a user to launch it
- from a command line, so that the user can look for
- error messages and warnings. However, eventually, we will
- want users to be able to launch Wine from a more
- friendly GUI launcher. The launcher should have the
- ability to allow the end user to turn on debugging
- messages and capture those traces for bug reporting
- purposes. Also, if we make it possible to
- switch between use of a Windows partition or not
- automatically, that option should be controlled here.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Get Marcus's winesetup facilities into CVS
- </para>
- <para>
- Along the lines of the changes to winesetup,
- and the consolidation of wineconf and wineinstall,
- we should extract the good stuff from Marcus's
- winesetup script, and get it into CVS.
- Again, perhaps we should have a set of scripts
- that perform discrete functions, or maybe
- one script with parameters.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Finish this document
- </para>
- <para>
- This document is pretty rough itself. Many hard
- things aren't addressed, and lots of stuff was missed.
- </para>
- </listitem>
- </orderedlist>
-</chapter>
-
-
-<!-- Keep this comment at the end of the file
-Local variables:
-mode: sgml
-sgml-parent-document:("wine-doc.sgml" "book" "part" "chapter" "")
-End:
--->
diff --git a/documentation/wine-doc.sgml b/documentation/wine-doc.sgml
index 5e710ac..81120e4 100644
--- a/documentation/wine-doc.sgml
+++ b/documentation/wine-doc.sgml
@@ -45,9 +45,6 @@
<!entity winelib-bindlls SYSTEM "winelib-bindlls.sgml">
<!entity winelib-packaging SYSTEM "winelib-pkg.sgml">
-<!-- *** Entities for Wine Packagers Guide *** -->
-<!entity packaging SYSTEM "packaging.sgml">
-
<!-- *** Entities for Wine FAQ *** -->
<!entity faq SYSTEM "faq.sgml">
@@ -141,14 +138,6 @@
</book>
- <!-- *** Wine Packager Guide *** -->
- <book id="index-pkg">
- <bookinfo>
- <title>Wine Packagers Guide</title>
- </bookinfo>
-
- &packaging;
-
</book>
<!-- *** Wine Faq *** -->
<book id="faq">
diff --git a/documentation/wine-pkg.sgml b/documentation/wine-pkg.sgml
deleted file mode 100644
index 3291b28..0000000
--- a/documentation/wine-pkg.sgml
+++ /dev/null
@@ -1,17 +0,0 @@
-<!doctype book PUBLIC "-//OASIS//DTD DocBook V3.1//EN" [
-
-<!-- *** Include list of authors *** -->
-<!entity % authors SYSTEM "authors.ent">
-%authors;
-
-<!entity packaging SYSTEM "packaging.sgml">
-]>
-
-<book id="index">
- <bookinfo>
- <title>Wine Packagers Guide</title>
- </bookinfo>
-
- &packaging;
-
-</book>