self extracting shell script

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.



转载于:https://my.oschina.net/u/158589/blog/137592

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值