summary refs log tree commit diff stats
path: root/doc/niminst.txt
diff options
context:
space:
mode:
authorAraq <rumpf_a@web.de>2010-10-21 00:12:14 +0200
committerAraq <rumpf_a@web.de>2010-10-21 00:12:14 +0200
commit765366c1f377fbd9507e942385170b546d9d34d0 (patch)
treebffec904c5b980aa7b9c0961cda18d5dd30638ae /doc/niminst.txt
parent53cd61546dc798fc0f08baf0813f579a90d7e766 (diff)
downloadNim-765366c1f377fbd9507e942385170b546d9d34d0.tar.gz
version 0.8.10
Diffstat (limited to 'doc/niminst.txt')
-rwxr-xr-xdoc/niminst.txt191
1 files changed, 191 insertions, 0 deletions
diff --git a/doc/niminst.txt b/doc/niminst.txt
new file mode 100755
index 000000000..450732cd3
--- /dev/null
+++ b/doc/niminst.txt
@@ -0,0 +1,191 @@
+=================================
+  niminst  User's manual
+=================================
+
+:Author: Andreas Rumpf
+:Version: |nimrodversion|
+
+.. contents::
+
+Introduction
+============
+
+niminst is a tool to generate an installer for a Nimrod program. Currently
+it can create an installer for Windows via `Inno Setup <>`_ as well as
+installation/deinstallation scripts for UNIX. Later versions will support 
+Linux' package management systems.
+
+niminst works by reading a configuration file that contains all the 
+information that it needs to generate an installer for the different operating
+systems.
+
+
+Configuration file
+==================
+
+niminst uses the Nimrod `parsecfg <parsecfg.html>`_ module to parse the 
+configuration file. Here's an example of how the syntax looks like:
+
+.. include:: doc/mytest.cfg
+     :literal:
+
+The value of a key-value pair can reference user-defined variables via
+the ``$variable`` notation: They can be defined in the command line with the
+``--var:name=value`` switch. This is useful to not hard-coding the
+program's version number into the configuration file, for instance.
+
+It follows a description of each possible section and how it affects the
+generated installers.
+
+
+Project section
+---------------
+The project section gathers general information about your project. It must
+contain the following key-value pairs:
+
+====================   =======================================================
+Key                    description
+====================   =======================================================
+``Name``               the project's name; this needs to be a single word
+``DisplayName``        the project's long name; this can contain spaces. If
+                       not specified, this is the same as ``Name``.
+``Version``            the project's version
+``OS``                 the OSes to generate C code for; for example:
+                       ``"windows;linux;macosx"``
+``CPU``                the CPUs to generate C code for; for example:
+                       ``"i386;amd64;powerpc"`` 
+``Authors``            the project's authors
+``Description``        the project's description
+``App``                the application's type: "Console" or "GUI". If 
+                       "Console", niminst generates a special batch file
+                       for Windows to open up the command line shell.
+``License``            the filename of the application's license
+====================   =======================================================
+
+
+``files`` key
+-------------
+
+Many sections support the ``files`` key. Listed filenames
+can be separated by semicolon or the ``files`` key can be repeated. Wildcards
+in filenames are supported. If it is a directory name, all files in the 
+directory are used::
+
+  [Config]
+  Files: "configDir"
+  Files: "otherconfig/*.conf;otherconfig/*.cfg"
+
+
+Config section
+--------------
+
+The ``config`` section currently only supports the ``files`` key. Listed files
+will be installed into the OS's configuration directory.
+
+
+Documentation section
+---------------------
+
+The ``documentation`` section currently only supports the ``files`` key. 
+Listed files will be installed into the OS's native documentation directory 
+(which might be ``$appdir/doc``).
+
+
+Other section
+-------------
+
+The ``other`` section currently only supports the ``files`` key. 
+Listed files will be installed into the application installation directory 
+(``$appdir``).
+
+
+Lib section
+-----------
+
+The ``lib`` section currently only supports the ``files`` key. 
+Listed files will be installed into the OS's native library directory 
+(which might be ``$appdir/lib``).
+
+
+Windows section
+---------------
+
+The ``windows`` section supports the ``files`` key for Windows specific files. 
+Listed files will be installed into the application installation directory 
+(``$appdir``).
+
+Other possible options are:
+
+====================   =======================================================
+Key                    description
+====================   =======================================================
+``BinPath``            paths to add to the Windows ``%PATH%`` environment
+                       variable. Example: ``BinPath: r"bin;dist\mingw\bin"``
+``InnoSetup``          boolean flag whether an Inno Setup installer should be
+                       generated for Windows. Example: ``InnoSetup: "Yes"``
+====================   =======================================================
+
+
+UnixBin section
+---------------
+
+The ``UnixBin`` section currently only supports the ``files`` key. 
+Listed files will be installed into the OS's native bin directory 
+(e.g. ``/usr/local/bin``). The exact location depends on the
+installation path the user specifies when running the ``install.sh`` script.
+
+
+Unix section
+------------
+
+Possible options are:
+
+====================   =======================================================
+Key                    description
+====================   =======================================================
+``InstallScript``      boolean flag whether an installation shell script
+                       should be generated. Example: ``InstallScript: "Yes"``
+``UninstallScript``    boolean flag whether a deinstallation shell script
+                       should be generated. 
+                       Example: ``UninstallScript: "Yes"``
+====================   =======================================================
+
+
+InnoSetup section
+-----------------
+
+Possible options are:
+
+====================   =======================================================
+Key                    description
+====================   =======================================================
+``path``               Path to Inno Setup. 
+                       Example: ``path = r"c:\inno setup 5\iscc.exe"``
+``flags``              Flags to pass to Inno Setup.
+                       Example: ``flags = "/Q"``
+====================   =======================================================
+
+
+C_Compiler section
+------------------
+
+Possible options are:
+
+====================   =======================================================
+Key                    description
+====================   =======================================================
+``path``               Path to the C compiler. 
+``flags``              Flags to pass to the C Compiler.
+                       Example: ``flags = "-w"``
+====================   =======================================================
+
+
+Real world example
+==================
+
+The installers for the Nimrod compiler itself are generated by niminst. Have a
+look at its configuration file:
+
+.. include:: rod/nimrod.ini
+     :literal:
+