git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@37782 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
 | |
| 
 | |
| 
 |