git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@21083 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
		
			
				
	
	
		
			133 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
			
		
		
	
	
			133 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Bash
		
	
	
	
	
	
#! /bin/sh
 | 
						|
# Make an Inno Setup distribution list, where files and dirs are represented by
 | 
						|
# sections like this:
 | 
						|
# [Dirs]
 | 
						|
#     Name: {app}\backgrounds
 | 
						|
# 
 | 
						|
# [Files]
 | 
						|
#     Source: C:\program\setup\about.htm; DestDir: {app}\; DestName: about.htm
 | 
						|
#
 | 
						|
#
 | 
						|
# Usage: makeinno.sh sourcedir inno-topfile inno-bottomfile destfile
 | 
						|
# For example: makeinno.sh c:/project/allfiles c:/project/innotop.txt c:/project/innobott.txt c:/project/project.iss
 | 
						|
#
 | 
						|
 | 
						|
PROGNAME=$0
 | 
						|
SOURCEDIR=$1
 | 
						|
TOPFILE=$2
 | 
						|
BOTTOMFILE=$3
 | 
						|
INNOFILE=$4
 | 
						|
TEMPDIR=/tmp
 | 
						|
 | 
						|
dochecks()
 | 
						|
{
 | 
						|
    if [ "$SOURCEDIR" = "" ] || [ "$TOPFILE" = "" ] || [ "$BOTTOMFILE" = "" ] || [ "$INNOFILE" = "" ] ; then
 | 
						|
        usage
 | 
						|
    fi
 | 
						|
 | 
						|
    if [ ! -d $SOURCEDIR ]; then
 | 
						|
        echo "Sorry, the source directory $SOURCEDIR does not exist."
 | 
						|
        usage
 | 
						|
    fi
 | 
						|
 | 
						|
    if [ ! -f $TOPFILE ]; then
 | 
						|
        echo "Sorry, the Inno Setup header $TOPFILE does not exist."
 | 
						|
        usage
 | 
						|
    fi
 | 
						|
 | 
						|
    if [ ! -f $BOTTOMFILE ]; then
 | 
						|
        echo "Sorry, the Inno Setup header $BOTTOMFILE does not exist."
 | 
						|
        usage
 | 
						|
    fi
 | 
						|
 | 
						|
    if [ ! -d $TEMPDIR ]; then
 | 
						|
        mkdir $TEMPDIR
 | 
						|
    fi
 | 
						|
}
 | 
						|
 | 
						|
doreplace()
 | 
						|
{
 | 
						|
    thefile=$1
 | 
						|
    theexpr=$2
 | 
						|
 | 
						|
    if [ -f $thefile ]; then
 | 
						|
      sed -e "$theexpr" < $thefile > $thefile.tmp
 | 
						|
      mv $thefile.tmp $thefile
 | 
						|
    else
 | 
						|
      echo "*** $thefile not found."
 | 
						|
    fi
 | 
						|
}
 | 
						|
 | 
						|
generateinno()
 | 
						|
{
 | 
						|
    # SRCDIR=`cygpath -u $SRCDIR`
 | 
						|
    # DESTDIR=`cygpath -u $DESTDIR`
 | 
						|
    # TEMPDIR=`cygpath -u $TEMP`
 | 
						|
 | 
						|
 | 
						|
    # Generate a list of all files in the distribution.
 | 
						|
    # We pass the output through sed in order to remove the preceding "./"
 | 
						|
    cd $SOURCEDIR
 | 
						|
    find . -print | sed -e "s/\.\\///g" > $TEMPDIR/files1.tmp
 | 
						|
 | 
						|
    echo "[Dirs]" > $TEMPDIR/files2.tmp
 | 
						|
 | 
						|
    for line in `cat $TEMPDIR/files1.tmp` ; do
 | 
						|
 | 
						|
        # If a directory, add to file
 | 
						|
        if [ -d $line ] ; then
 | 
						|
            # The relative path
 | 
						|
            # TODO: make into DOS filename form
 | 
						|
            #line2=`cygpath -w $line`
 | 
						|
            line2=$line
 | 
						|
 | 
						|
            echo "  Name: {app}\\"$line2 >> $TEMPDIR/files2.tmp
 | 
						|
        fi
 | 
						|
    done
 | 
						|
 | 
						|
    echo "" >> $TEMPDIR/files2.tmp
 | 
						|
    echo "[Files]" >> $TEMPDIR/files2.tmp
 | 
						|
 | 
						|
    for line in `cat $TEMPDIR/files1.tmp` ; do
 | 
						|
 | 
						|
        # If not a directory, add to file
 | 
						|
        if [ ! -d $line ] ; then
 | 
						|
            # The relative path
 | 
						|
            # TODO: make into DOS filename form
 | 
						|
            #line2=`cygpath -w $line`
 | 
						|
            line2=$line
 | 
						|
 | 
						|
            # The absolute path
 | 
						|
            # TODO: make into DOS filename form
 | 
						|
            #line1=`cygpath -w $SOURCEDIR`"\\"$line2
 | 
						|
            line1=$SOURCEDIR"\\"$line2
 | 
						|
            #pathonly=`find $line -printf "%h"`
 | 
						|
            pathonly=`dirname $line`
 | 
						|
 | 
						|
            echo "  Source: "$line1"; DestDir: {app}\\"$pathonly >> $TEMPDIR/files2.tmp
 | 
						|
        fi
 | 
						|
    done
 | 
						|
 | 
						|
    echo "" >> $TEMPDIR/files2.tmp
 | 
						|
 | 
						|
    doreplace $TEMPDIR/files2.tmp "s/\//\\\/g"
 | 
						|
 | 
						|
    # Concatenate the 3 sections
 | 
						|
    cat $TOPFILE $TEMPDIR/files2.tmp $BOTTOMFILE > $INNOFILE
 | 
						|
 | 
						|
    rm -f $TEMPDIR/files1.tmp
 | 
						|
}
 | 
						|
 | 
						|
usage()
 | 
						|
{
 | 
						|
    echo Usage: $PROGNAME sourcedir inno-topfile inno-bottomfile destfile
 | 
						|
    echo For example: $PROGNAME c:/project/allfiles c:/project/innotop.txt c:/project/innobott.txt c:/project/project.iss
 | 
						|
    echo Remember to use paths of the form c:/thing rather than /c/thing.
 | 
						|
    exit 1
 | 
						|
}
 | 
						|
 | 
						|
dochecks
 | 
						|
generateinno
 | 
						|
 | 
						|
 |