self extracting shell script node
*) The payload linux
*) files (binaries, tarballs, text files, etc.) shell
*) installer bash
*) The builder script ui
*) The decompression script code
chenqi@pek-qchen1-d1:~/Test/installer$ find . . ./decompress ./build ./payload ./payload/installer ./payload/display.tar chenqi@pek-qchen1-d1:~/Test/installer$ cat decompress #!/bin/bash echo "" echo "Self Extracting Installer" echo "" export TMPDIR=`mktemp -d /tmp/selfextract.XXXXXX` ARCHIVE=`awk '/^__ARCHIVE_BELOW__/ {print NR + 1; exit 0; }' $0` tail -n+$ARCHIVE $0 | tar xzv -C $TMPDIR CDIR=`pwd` cd $TMPDIR ./installer cd $CDIR rm -rf $TMPDIR exit 0 __ARCHIVE_BELOW__ chenqi@pek-qchen1-d1:~/Test/installer$ cat build #!/bin/bash cd payload tar cf ../payload.tar ./* cd .. if [ -e "payload.tar" ]; then gzip payload.tar if [ -e "payload.tar.gz" ]; then cat decompress payload.tar.gz > selfextract.bsx else echo "payload.tar.gz does not exist" exit 1 fi else echo "payload.tar does not exist" exit 1 fi chmod a+x selfextract.bsx echo "selfextract.bsx created" exit 0chenqi@pek-qchen1-d1:~/Test/installer$ cat payload/installer #!/bin/bash echo "Running Installer ... " DEST=$HOME/Test/dest echo "Installing files into $DEST ... " mkdir -p $DEST tar -xf ./display.tar -C $DEST echo "Installation Finished"chenqi@pek-qchen1-d1:~/Test/installer$ ./build selfextract.bsx created chenqi@pek-qchen1-d1:~/Test/installer$ ./selfextract.bsx Self Extracting Installer ./display.tar ./installer Running Installer ... Installing files into /home/chenqi/Test/dest ... Installation Finished chenqi@pek-qchen1-d1:~/Test/installer$ find . . ./selfextract.bsx ./payload.tar.gz ./decompress ./build ./payload ./payload/installer ./payload/display.tar chenqi@pek-qchen1-d1:~/Test/installer$ ls ../dest/ display2.c display.c
See http://www.linuxjournal.com/node/1005818 for more info. ip