<!-- 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 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.  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>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 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"

# &lt;wineconf&gt;

[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"

# &lt;/wineconf&gt;

 </programlisting>      
        </sect1>

    </chapter>




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

    <sect1 id="pkg-openlinux"><title>RedHat 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" &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 RedHat 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 >RedHat &lt;&lt;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:
-->
