Information about the installation program for Subversion for Windows
=====================================================================

$LastChangedDate$

CONTENTS:
=========
  * Introduction (read first!)
  * Directory structure
  * Programs used for the Subversion installer and instructions
    - Inno Setup
    - ISTool
    - 7-zip
    - Perl
    - Packages for converting XML documentation
    - MS HTML Help Workshop
  * Making a distro


Introduction
============

  This document describes the packages\win32-innosetup directory of the
  Subversion repository and tells you how you can roll out your own
  Windows installer for Subversion.
  
  If you haven't done it already:  -Please, Check out the subversion
  sources to a place you like and download the programs and packages
  from the links below. Reading the "Directory structure" part should
  be the next.


  Inno Setup
  ----------
  Inno Setup (IS) 3.0.6.2 with "My Inno Setup Extentions"
  (ISX) and "Inno Setup Pre Processor" (ISPP) included:
    http://www.wintax.nl/isx/

  ISTool
  ------
  ISTool 3.0.6.2:
    http://www.bhenden.org/istool/

  7-zip
  -----
  7-Zip 2.30 Beta 28:
    http://www.7-zip.org/

  Perl
  ----
  Perl 5.8.0 or better with the libwin32 bundle (included in
  ActivePerl):
  	http://www.activestate.com/ActivePerl/
  or make your own (and get the module libwin32):
    http://www.perl.com/
    http://www.cpan.org/modules/by-module/Win32/ (libwin32-X.XXX.zip)

  libxml
  ------
  Point your browser to:
    http://www.zlatkovic.com/projects/libxml/binaries.html
  and grab the following packages:
    - libxml
    - libxslt
    - iconv
    - xsldbg (if you want to write XML docs).

  docbook-xsl
  -----------
  Point your browser to:
     http://sourceforge.net/project/showfiles.php?group_id=21935
  and grab the most recent docbook-xsl-*.**.*.zip file

  MS HTML Help Workshop
  ---------------------
  Point your browser to:
    http://msdn.microsoft.com/library/tools/htmlhelp/chm/hh1start.htm


  Read in the section named "Programs used for the Subversion Windows
  installer" below about the packages for notes and info on installing
  and using the downloaded packages.

Directory structure
===================

  The Inno setup file lives under the packages\win32-innosetup directory
  of the Subversion repository and are using folders which are both visible
  and "hidden". The hidden folders have the svn property svn:ignore and only
  exists on your machine.

  The setup system gets its files (and have files) from two kinds of places:
  * Static:  This files are allways somwhere in the reposistry.
  * Dynamic: This files can be picked up anywhere from your computer (even from
             the repository). All the paths here are determined by the file
             paths_inno_src.iss wich is variables that is proccessed by Inno
             Setup Pre Proccessor (ISPP) during the compiling of the setup.
             A template of this file can be found in the 
             packages\win32-innosetup\templates directory. Copy this file to
             the packages\win32-innosetup directory and edit it according to
             the documentation inside it. This file is not under version
             control (the template is) since the contents will vary from user
             to user.

  Visible folders looks like this: [ ] and hidden folders like this: [h].
  
  Do you think that is looks complicated? -Dont worry! The programs in the
  tools folder takes care of copying and preparing files when your 
  paths_inno_src.iss file are edited and set correctly.

  Static paths (in the Subversion repository):
  -------------  
  [ ] win32-innosetup                     (svn.iss, main folder for Inno Setup)
   +->[ ] images                             (Various images used by the setup)
   +->[h] in    (you can set your path_setup_in here if you want to, see below)
   +->[h] out  (you can set your path_setup_out here if you want to, see below)
   +->[ ] templates        (misc templates used by various tools and the setup)
   +->[ ] tools            (misc. stuff for making and helping to make a setup)
   |   +->[ ] svnpath                   (C sources for the svnpath.exe program)

  Dynamic paths (files from anywhere on your machine)
  ---------------------------------------------------

  This paths are detemined by values in the file paths_inno_src.iss. The value
  names of this path variabless is:
  
  Path variables:     Setup files:
  ---------------     ---------------------------------------------------------
  path_setup_out      Where svn-X.XX.X-rXXXX-setup.exe is to find after
                      compiling the setup
  path_setup_in       Contains misc. files to include in the setup
  path_isx            Path to ISX
  path_svnclient      svn.exe
  path_svnadmin       svnadmin.exe
  path_svnlook        svnlook.exe
  path_svnserve       svnserve.exe
  path_svnversion     svnversion.exe
  path_davsvn         mod_dav_svn.so
  path_svnpath        svnpath.exe
  path_iconv          *.so
  path_brkdb_bin      db_*.exe, ex_*.exe, excxx_*.exe, libdb4*.dll, libdb4*.exp
  path_brkdb_lib      libdb4*.lib
  path_brkdb_inc      db.h, db_cxx.h)
  path_brkdb_inc2     cxx_common.h, cxx_except.h
  path_ssl            libeay32.dll, ssleay32.dll



Programs used for the Subversion Windows installer
==================================================

  Inno Setup
  ----------
  The installation program is the exellent Inno Setup made by Jordan Russell.
  IS and friends are probably all you need for 99% of any Windows installer
  needs made for the various flavors of Windows and has proven to be extremely
  reliable and stable.

  The Inno Setup used by Subversion are extended with "My Inno Setup
  Extentions" made by Martijn Laan and "Inno Setup Pre Proccessor"
  made by Alex Yackimoff. ISX includes IS and ISPP so all you need to
  do, is to install "My Inno Setup Extentions"

  Oh, you should visit Jordan Russell's (the Inno Setup creater) homepage at:
    http://www.jrsoftware.org/
  He are doing more than Inno Setup and you can get lot of info from his
  homepage.

  Installation notes: None

  ISTool
  ------
  A good installation script for any installation programs are
  usually very complicated and requires good script editing software.
  The program used for this is ISTool and it's syntax high-lightning
  makes it the perfect companion to IS and friends.
  
  The author - Bjrnar Henden are doing a great job by updating his
  program each time Inno Setup are updated.
  It's also includes full support for "My Inno Setup Extentions" (see
  above).

  Installation notes: None

  7-zip
  -----
  7-zip offers a very high compression ratio. Usually, one use the
  compression Inno offers (gzip or bzip2) but 7-zip are compressing
  about 25% better than bzip2!
  In practice this means that the Inno Setup installation itself are
  uncompressed and a 7-zip SFX archive are triggering the Inno Setup
  installation after extracting the SFX.

  Installation notes: None

  svnpath
  -------
  Inno Setup does not currently edit the systems PATH environment so
  we need svnpath.
  This C program are used for updating the user's path to include/
  exclude the Subversion path after installing/un-installing
  Subversion.
  You can find the sources for this program in the Subversion source
  tree under packages\win32-innosetup\tools\svnpath
  
  Have a look in the file main.c for info on how to compile the
  program.
 
  libxml, libxslt and iconv
  -------------------------
  We need to include some documentation and this tools will help us to convert
  the XML files in the doc directory in the repository to a Windows HTML help
  file.
  
  Installation notes:
    Unpack the zip-files and place the contents of the 'lib' and 'util' folders
    from each unzipped packages in a folder which is mentioned in your PATH
    environment variable.
    
  docbook-xsl
  -----------
  This package is needed for making documentation.
  
  Unzip the files inside docbook-xsl-*.**.*.zip to a folder named xsl which
  resides under doc\book\tools in your working copy of the subversion
  repository. The result should be like this: 
    doc\book\tools\xsl

  Perl
  ----
  Use a (native Windows) Perl 5.8.0 or better with the libwin32 bundle for
  automating the setup.

  Installation notes:
    If you don't want to use Active Perl, then it's trivial to compile Perl by
    yourself if you have MS VC5 or better. Just remember to compile the Perl
    modules included in libwin32 when Perl itself is done.

Making a distro
===============

  The programs/scripts in the packages\win32-innosetup\tools folder will take
  care of making the Subversion documentation (a Windows HTML help file) from
  the sources in the doc directory of the subversion repository and setting
  version info on the setup. Just follow the steps below and you're set:

  1. Make sure that all the programs needed by INNO are installed as described
     earlier in this file.
  2. If you haven't done it already: Copy the file "paths_inno_src.iss" from
     the packages\win32-innosetup\templates folder to packages\win32-innosetup
     in your WC and edit it according to the documentation inside it.
  3. Make sure that all the files to include in the setup are where they are
     supposed to be according to the paths_inno_src.iss file.
  4. Now, you have two diffrent ways of making the documentation and the setup:

     A. Change directory (cd) to the packages\win32-innosetup\tools folder on
        your working Subversion repository and run the following command and
        follow the instructions:
            mk_distro
         
     B. You may want to make a automatic setup (nightly build, anything else),
        just run the packages\win32-innosetup\tools\mk_distro file as:
            path\to\packages\win32-innosetup\tools\mk_distro -a

  A shiny new svn-X.XX.X-rXXXX-setup.exe should now be in your path_setup_out
  folder if you have done everything right.

Good luck!

