<!-- 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>
          Updated by &name-jeremy-white; <email>&email-jeremy-white;</email>
          Updated by &name-andreas-mohr; <email>&email-andreas-mohr;</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 November 14, 2001.</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.
                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.1</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 /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 rpm -i wine.rpm or apt-get install wine
                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.  Further,
          no default is currently provided by Wine.  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 regapi tool
                against the 'winedefault.reg' file to generate
                a default registry.
                </para>
                <para>
                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>winebootup</filename></term>
                    <listitem>
                    <para>
		    Winelib app to be found in programs/.
		    It'll be called by the winelauncher wine wrapper startup
		    script for every first-time wine invocation.
		    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.
                    </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 is NOT necessarily current ! </para>

        <simplelist columns=5>
<member>advapi32.dll.so</>
<member>avicap32.dll.so</>
<member>avifil32.dll.so</>
<member>avifile.dll.so</>
<member>comctl32.dll.so</>
<member>comdlg32.dll.so</>
<member>comm.dll.so</>
<member>commdlg.dll.so</>
<member>compobj.dll.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>dispdib.dll.so</>
<member>display.dll.so</>
<member>dplay.dll.so</>
<member>dplayx.dll.so</>
<member>dsound.dll.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>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>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>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>psapi.dll.so</>
<member>qcap.dll.so</>
<member>quartz.dll.so</>
<member>rasapi16.dll.so</>
<member>rasapi32.dll.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>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>winearts.drv.so</>
<member>winedos.dll.so</>
<member>wineoss.drv.so</>
<member>wineps.dll.so</>
<member>wineps16.dll.so</>
<member>wing.dll.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.man</>
<member>wine.conf.man</>
<member>wmc.man</>
<member>wrc.man</>
        </simplelist>

        </listitem>


            <listitem id=includefiles>
            <para> Include Files</para>
	    <para> This list is NOT necessarily current ! </para>
                <simplelist columns=5>

<member>basetsd.h</>
<member>cderr.h</>
<member>cguid.h</>
<member>commctrl.h</>
<member>commdlg.h</>
<member>compobj.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>docobj.h</>
<member>dplay.h</>
<member>dplobby.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>mapidefs.h</>
<member>mcx.h</>
<member>mmreg.h</>
<member>mmsystem.h</>
<member>msacm.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>servprov.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>ver.h</>
<member>vfw.h</>
<member>winbase.h</>
<member>wincon.h</>
<member>wincrypt.h</>
<member>windef.h</>
<member>windows.h</>
<member>windowsx.h</>
<member>wine/exception.h</>
<member>wine/icmpapi.h</>
<member>wine/ipexport.h</>
<member>wine/obj_base.h</>
<member>wine/obj_cache.h</>
<member>wine/obj_channel.h</>
<member>wine/obj_clientserver.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_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_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/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>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>wtypes.h</>
<member>zmouse.h</>
        </simplelist>

        </listitem>

        <listitem id=docfiles>
        <para>
        Documentation files.
        </para>
        <para>
        At the time of this writing, I do not have a
        definitive list of documentation files to
        be installed.  However, they do include
        the HTML files generated from the SGML in the Wine CVS tree.
        </para>
        </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.
                    </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>/bin,
            </para>
            </listitem>

            <listitem>
            <para>
            all <link linkend=libfiles>library files</link> go into
            <link linkend=PREFIX endterm=prefix.id></link>/lib,
            </para>
            </listitem>

            <listitem>
            <para>
            all <link linkend=includefiles>include files</link> go into
            <link linkend=PREFIX endterm=prefix.id></link>/include,
            </para>
            </listitem>

            <listitem>
            <para>
            all <link linkend=docfiles>documentation files</link> go into
            <link linkend=PREFIX endterm=prefix.id></link>/doc/wine,
            </para>
            </listitem>

            <listitem>
            <para>
            and <link linkend=manfiles>man pages</link> go into
            <link linkend=PREFIX endterm=prefix.id></link>/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.1 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>
        The next hard question is what the Wine config should look like.
        The current best practices seems to involve using drives from M to Z.
        </para>
        <caution><para>This isn't done yet!  Fix it, Jer!</para></caution>
        </sect1>


    </chapter>




    <chapter id="pkg-implementation"> <title>Implementation</title>

    <sect1 id="pkg-openlinux"><title>OpenLinux 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.0,
                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>./regapi</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" &gt;&gt; /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 <filename>wine.ini</filename> for OpenLinux 2.x (outdated, for review purposes only !):</title>

<programlisting>


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

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

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


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

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

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

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

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

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

# &lt;wineconf&gt;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

# &lt;/wineconf&gt;
      </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:
-->
