Difference between revisions of "Installation on Windows"

From GNUstepWiki
Jump to navigation Jump to search
Line 325: Line 325:
 
   -?      this help information
 
   -?      this help information
  
Common extensions:
+
<snip>
  .wxs    - Windows installer Xml Source file
 
  .wxi    - Windows installer Xml Include file
 
  .wxl    - Windows installer Xml Localization file
 
  .wixobj - Windows installer Xml Object file (in XML format)
 
  .wixlib - Windows installer Xml Library file (in XML format)
 
  .wixout - Windows installer Xml Output file (in XML format)
 
 
 
  .msm - Windows installer Merge Module
 
  .msi - Windows installer Product Database
 
  .mst - Windows installer Transform
 
  .pcp - Windows installer Patch Creation Package
 
  
 
For more information see: http://wix.sourceforge.net
 
For more information see: http://wix.sourceforge.net
Line 394: Line 383:
 
   -v<N>      sets the level of verbose output (0: most output, 3: none)
 
   -v<N>      sets the level of verbose output (0: most output, 3: none)
 
   -?        this help information
 
   -?        this help information
 
+
<snip>
Environment variables:
 
  WIX_TEMP  overrides the temporary directory used for cab creation, msm expl
 
ding, ...
 
 
 
Common extensions:
 
  .wxs    - Windows installer Xml Source file
 
  .wxi    - Windows installer Xml Include file
 
  .wxl    - Windows installer Xml Localization file
 
  .wixobj - Windows installer Xml Object file (in XML format)
 
  .wixlib - Windows installer Xml Library file (in XML format)
 
  .wixout - Windows installer Xml Output file (in XML format)
 
 
 
  .msm - Windows installer Merge Module
 
  .msi - Windows installer Product Database
 
  .mst - Windows installer Transform
 
  .pcp - Windows installer Patch Creation Package
 
  
 
For more information see: http://wix.sourceforge.net
 
For more information see: http://wix.sourceforge.net

Revision as of 13:19, 29 December 2006

Install Windows GNUstep manually

Install MinGW

Download MinGW-3.2.0-rc-3 or later from http://sourceforge.net/projects/mingw Install it into

C:/xxx/msys/1.0/mingw

(where /xxx/ is the top-level path you want to use, I use Nicola/GNUstep so I install it into C:/Nicola/GNUstep/msys/1.0/mingw) (earlier versions of MinGW won't work)

Install msys

Download MSYS-1.0.10 or later from the same site. Install it into C:/xxx/msys/1.0 The postinstall script should ask you for the mingw location, then detect it and be happy that it's there and all is setup properly.

Install msys developer toolkit

Download msysDTK-1.0.1 or later from the same site. Install it into

C:/xxx/msys/1.0

Now your MSYS/MinGW system should be setup! Go around and make sure you know how to use the Unix-like shell. Log into it and work in it.

Download gnustep using cvs

In windows, go to

Start -> All Programs -> mingw -> MSYS ->Msys

The MINGW32 window appears.

Type the following:

mkdir install
cd install
export CVS_RSH="ssh"
cvs -z3 -d:ext:anoncvs@savanah.gnu.org:/cvsroot/gnustep co gnustep

The following message appears:

   The authenticity of host 'savanah.gnu.org (199.232.41.3)' can't be established.
   RSA key fingerprint is 80:5a:b0:0c:ec:93:66:29:49:7e:04:2b:fd:ba:2c:d5.
   Are you sure you want to continue connecting (yes/no)? 

Type the following:

yes

The latest and greatest gnustep library will download into your home directory/installs/gnustep. It took about 10 minutes with a cable modem connection.

Install GNUstep make

cd gnustep/core/make
./configure --prefix=/C/xxx/GNUstep
make
make install

Setup your GNUstep environment

(you will need to do the same every time you start up your MSYS shell to do development)

. /C/xxx/GNUstep/System/Library/Makefiles/GNUstep.sh

Also, set HOMEPATH, HOMEDRIVE and HOME ... add the following lines to your ~/.profile:

export HOMEDRIVE=C:
export HOMEPATH=/home/Nicola
export HOME=/C/xxx/msys/1.0/home/Nicola
. /C/xxx/GNUstep/System/Library/Makefiles/GNUstep.sh

(obviously replacing 'Nicola' with your Login name) (not sure if this setting of HOMEDRIVE etc is really required, will investigate)

Install the ObjC runtime

Actually, recent versions of gcc (3.2+) have a working libobjc on Windows. Nevertheless this step is necessary (at least on Windows 2000) unless you want some strange errors concerning NSAutoreleasePool etc.

First make sure to delete the old libobjc files

find /C/xxx/GNUstep/ -iname "libobjc*" -exec rm -i {} \;

Then cd to dev-libs/libobjc in your cvs checkout directory and install it.

cd ~/install/gnustep/dev-libs/libobjc 
make
make install

Reinstall GNUstep make (with ObjC this time)

go in core/make and reconfigure/recompile again so that gnustep-objc is detected:

cd ~/install/gnustep/core/make
make distclean
./configure
make 
make install

gnustep-make should have detected your custom libobjc.

Install ffcall

Download ffcall from the GNUstep website into c:/xxx/msys/1.0/home/Nicola/install or from here: ftp://ftp.santafe.edu/pub/gnu/ffcall-1.10.tar.gz, and type:

cd ~/install
tar -zxvf ffcall-1.10.tar.gz
cd ffcall-1.10
./configure --prefix=$GNUSTEP_SYSTEM_ROOT
   A windows prompt will appear stating that conftest.exe has encountered a problem and needs to close.

Click the [Don't Send] button.

   A second windows prompt will appear stating that conftest.exe has encountered a problem and needs to close.

Click the [Don't Send] button.

   A third windows prompt will appear stating that conftest.exe has encountered a problem and needs to close.

Click the [Don't Send] button.

   After much output,  the following will be displayed:
   
   configure: creating ./config.status
   config.status: creating Makefile
   config.status: creating config.h

Type the following:

make
make install

Note: The configure script of ffcall-1.10 is broken for Windows 2000. You have to apply a patch: http://lists.gnu.org/archive/html/discuss-gnustep/2005-03/msg00258.html


Alternatively, a zip containing a precompiled copy of ffcall-1.9 is availabe here: ftp://ftp.gnustep.org/pub/gnustep/binaries/windows/mingw-libs/ffcall-1.9-gnustep.zip

Unzip it into $GNUSTEP_SYSTEM_ROOT/Library.

Install additional libs

Download the following packages:

Download libintl

libintl-0.11.5-2-bin.zip
libintl-0.11.5-2-lib.zip

Download libiconv

libiconv-1.8.1-bin.zip 
libiconv-1.8.1-lib.zip 

Download zlib

zlib-1.2.2-bin.zip
zlib-1.2.2-lib.zip

from http://gnuwin32.sourceforge.net, and install them. To install them, simply unzip them into

/C/xxx/msys/1.0/mingw.

Install XML support

You will have to make some changes to libiconv for libxml to work properly.

cd /mingw/lib
mkdir backup-libiconv
mv libiconv.la backup-libiconv
mv libiconv.lib backup-libiconv
dlltool -D libiconv-2.dll -C -l libiconvlib --export-all-symbols -A ../bin/libiconv-2.dll

If there are no errors:

rm -r backup-libiconv

I had to compile libiconv from source for this to work (the binaries didn't work with my computer for some reason, and I'm not sure if it normally works.)

Download the latest version of libxml from [[1]].

cd libxml2-...
vim include/libxml/xmlexports.h

There is a chunk of code in this file you will have to change.

Search for:

Windows platform with GNU compiler

in the code. Replace the code below it up to the comment about Cygwin:

#if defined(_WIN32) && defined(__MINGW32__)
  #undef XMLPUBFUN
  #undef XMLPUBVAR
  #undef XMLCALL
  #if !defined(LIBXML_STATIC)
    #define XMLPUBFUN __declspec(dllexport)
    #define XMLPUBVAR __declspec(dllexport) extern
  #else
    #define XMLPUBFUN
    #if !defined(LIBXML_STATIC)
      #define XMLPUBVAR __declspec(dllimport) extern
    #else
      #define XMLPUBVAR extern
    #endif
  #endif
  #define XMLCALL __cdecl
  #if !defined _REENTRANT
    #define _REENTRANT
  #endif
#endif

Save the file, then quit. Then compile normally.

./configure
make
make install

I never installed to the end with this method (halfway through I just decided to use the installer) but it worked well for me.

Install GNUstep base

go in gnustep-base, and type

cd ~/install/gnustep/core/base
./configure
make
make install

If you didn't install libxml,

./configure --disable-xml
make
make install

Install additional GUI libs

for the gui, download and install the following packages:

Download jpeg

 jpeg-6b-3-bin.zip
 jpeg-6b-3-dep.zip
 jpeg-6b-3-lib.zip

Download tiff

 tiff-3.7.1-bin.zip
 tiff-3.7.1-dep.zip
 tiff-3.7.1-lib.zip

Download libpng

 libpng-1.2.8-bin.zip
 libpng-1.2.8-dep.zip
 libpng-1.2.8-lib.zip

The process is always the same: download the zip file from the gnuwin32 website, then unzip them into

/C/xxx/msys/1.0/mingw.

Install GNUstep gui

Type the following:

 cd ~/install/gnustep/core/gui
 ./configure
 make
 make install

Install GNUstep back

go in back, and type:

 ./configure
 make
 make install

Check the installation

go in a simple gui application (examples/gui a very good starting point), compile and run it. :-)

based on a mail from Nicola Pero

GNUstep .exe installer created by Nullsoft's NSIS

install instruction

There are three versions of exe installer for gnustep.


  • Download and compile gnustep examples tar ball.
  • "openapp GSTest.app" will bring up a screen with GNUstep interface.

GNUstep MSI installer created by WiX

There are three sub packages

  • user : To minimize the footprint of gnustep system on Windows machines.
  • developer : include WiX,gcc and package sources.
  • gnustep applications : include a broad suite of GNUstep applications.

Prepare your gnustep win32 development environment

List of depended software

  • WiX Win32 PMS.
    • candle.exe
C:\tmp>candle
Microsoft (R) Windows Installer Xml Compiler version 2.0.4221.0
Copyright (C) Microsoft Corporation 2003. All rights reserved.

 usage:  candle.exe [-?] [-nologo] [-out outputFile] sourceFile [sourceFile ...]


   -d<name>=<value>  define a parameter for the preprocessor
   -p<file>  preprocess to a file (or stdout if no file supplied)
   -I<dir>  add to include search path
   -nologo  skip printing candle logo information
   -out     specify output file (default: write to current directory)
   -pedantic:<level>  pedantic checks (levels: easy, heroic, legendary)
   -ss      suppress schema validation of documents (performance boost)
   -ust     use small table definitions (for backwards compatiblity)
   -trace   show source trace for errors, warnings, and verbose messages
   -ext     extension (class, assembly), should extend CompilerExtension
   -zs      only do validation of documents (no output)
   -wx      treat warnings as errors
   -w<N>    set the warning level (0: show all, 3: show none)
   -sw      suppress all warnings (same as -w3)
   -sw<N>   suppress warning with specific message ID
   -v       verbose output (same as -v2)
   -v<N>    sets the level of verbose output (0: most output, 3: none)
   -?       this help information

<snip>

For more information see: http://wix.sourceforge.net

C:\tmp>
    • light.exe
C:\tmp>light
Microsoft (R) Windows Installer Xml Linker version 2.0.4221.0
Copyright (C) Microsoft Corporation 2003. All rights reserved.

 usage:  light.exe [-?] [-b basePath] [-nologo] [-out outputFile] objectFile [o
jectFile ...]

   -ai        allow identical rows, identical rows will be treated as a warning
   -au        (experimental) allow unresolved references, will not create a val
d output
   -b         base path to locate all files (default: current directory)
   -cc        path to cache built cabinets (will not be deleted after linking)
   -ext       extension (class, assembly), should extend SchemaExtension or Bin
erExtension
   -fv        add a 'fileVersion' entry to the MsiAssemblyName table (rarely ne
ded)
   -i         specify the base output path for uncompressed images (default: -o
t parameter)
   -loc       read localization string sfrom .wxl file
   -nologo    skip printing light logo information
   -notidy    do not delete temporary files (useful for debugging)
   -reusecab  reuse cabinets from cabinet cache
   -out       specify output file (default: write to current directory)
   -xo        output xml instead of MSI format
   -pedantic:<level>  pedantic checks (levels: easy, heroic, legendary)
   -reusecab  reuse cabinets from cabinet cache
   -sa        suppress assemblies: do not get assembly name information for ass
mblies
   -sacl      suppress resetting ACLs (useful when laying out image to a networ
 share)
   -sadmin    suppress default admin sequence actions
   -sadv      suppress default adv sequence actions
   -sa        suppress assemblys: do not get assembly name information for asse
blies
   -sf        suppress files: do not get any file information (equivalent to -s
 and -sh)
   -sh        suppress file info: do not get hash, version, language, etc
   -sl        suppress layout
   -ss        suppress schema validation of documents (performance boost)
   -sui       suppress default UI sequence actions
   -sv        suppress intermediate file version mismatch checking
   -ts        tag sectionId attribute on tuples (ignored if not used with -xo)
   -ust       use small table definitions (for backwards compatiblity)
   -wx        treat warnings as errors
   -w<N>      set the warning level (0: show all, 3: show none)
   -sw        suppress all warnings (same as -w3)
   -sw<N>     suppress warning with specific message ID
   -v         verbose output (same as -v2)
   -v<N>      sets the level of verbose output (0: most output, 3: none)
   -?         this help information
<snip>

For more information see: http://wix.sourceforge.net

C:\tmp>
  • gcc win32 compiler from MingW.

Checkout gnustep.wxs

overview of gnustep.wxs