您的位置:首页 > 运维架构 > Shell

self extracting shell script

2013-06-14 00:00 246 查看
self extracting shell script

*) The payload

*) files (binaries, tarballs, text files, etc.)

*) installer

*) The builder script

*) The decompression script

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.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息