流程描述
打包脚本
安装脚本
脚本代码
打包脚本代码
下面展示一些 内联代码片
。
###
# ┌───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐
# │Esc│ │ F1│ F2│ F3│ F4│ │ F5│ F6│ F7│ F8│ │ F9│F10│F11│F12│ │P/S│S L│P/B│ ┌┐ ┌┐ ┌┐
# └───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘ └┘ └┘ └┘
# ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┬───┐ ┌───┬───┬───┬───┐
# │~ `│! 1│@ 2│# 3│$ 4│% 5│^ 6│& 7│* 8│( 9│) 0│_ -│+ =│ BacSp │ │Ins│Hom│PUp│ │N L│ / │ * │ - │
# ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤ ├───┼───┼───┼───┤
# │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │{ [│} ]│ | \ │ │Del│End│PDn│ │ 7 │ 8 │ 9 │ │
# ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘ ├───┼───┼───┤ + │
# │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │: ;│" '│ Enter │ │ 4 │ 5 │ 6 │ │
# ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ ┌───┐ ├───┼───┼───┼───┤
# │ Shift │ Z │ X │ C │ V │ B │ N │ M │< ,│> .│? /│ Shift │ │ ↑ │ │ 1 │ 2 │ 3 │ │
# ├─────┬──┴─┬─┴──┬┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ ┌───┼───┼───┐ ├───┴───┼───┤ E││
# │ Ctrl│ │Alt │ Space │ Alt│ │ │Ctrl│ │ ← │ ↓ │ → │ │ 0 │ . │←─┘│
# └─────┴────┴────┴───────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘ └───────┴───┴───┘
###
#!/bin/bash
#项目名称
project_name=BHD-D703
#项目版本号
project_ver=2.0.0.4
#可执行文件名称,该文件应在安装目录下
app_launcher_name=packTest
#快捷方式图标名称,该文件应在安装目录下
app_icon_name=main.ico
#*.run文件输出文件夹路径 与此脚本的相对路径
run_output_dir=wnsis
#以下无需关心
default__=_Setup_
default1__=_
current_dir=$(cd $(dirname $0); pwd)/
temp_sh_path=install_temp.sh
temp_gz_path=$project_name$default__$project_ver.tar.gz
output_run_path=$current_dir$run_output_dir/$project_name$default__$project_ver.run
#历史文件删除
if [ -f "$temp_gz_path" ]; then
rm $temp_gz_path
fi
if [ -f "$output_run_path" ]; then
rm $output_run_path
fi
if [ -f "$temp_sh_path" ]; then
rm $temp_sh_path
fi
if [ ! -d "$run_output_dir" ]; then
mkdir -p $run_output_dir
fi
#创建压缩包
tar -zcvf $temp_gz_path *
#构建解压脚本
echo "#!/bin/bash" >> $temp_sh_path
##解压脚本:参数判断 *.run -install /opt *.run -remove /opt
echo "if [ \$# -eq 0 ]; then" >> $temp_sh_path
echo " echo \"no argument\"" >> $temp_sh_path
echo " exit -1" >> $temp_sh_path
echo "fi" >> $temp_sh_path
##解压脚本:脚本与数据
echo "lines=33 " >> $temp_sh_path
##解压脚本:删除旧的快捷方式
echo "desk=\`cat \$HOME/.config/user-dirs.dirs | grep DESKTOP_DIR | tail -1 |cut -d '=' -f 2 | sed 's/\\\"//g'\`" >> $temp_sh_path
echo "var=\`eval echo \$desk\`" >> $temp_sh_path
echo "if [ -f \$var/$project_name.desktop ];then" >> $temp_sh_path
echo "rm \$var/$project_name.desktop" >> $temp_sh_path
echo "fi" >> $temp_sh_path
##解压脚本:卸载
echo "if [ \$1 = \"-remove\" -a -d \"\$2/$project_name$default1__$project_ver\" ];then" >> $temp_sh_path
echo " rm \"\$2/$project_name$default1__$project_ver\" -r" >> $temp_sh_path
echo "elif [ \$1 = \"-install\" -a -d \$2 ];then" >> $temp_sh_path
##解压脚本:安装
echo " echo \"[Desktop Entry]\" >> \$var/$project_name.desktop" >> $temp_sh_path
echo " echo \"Version=$project_ver\" >> \$var/$project_name.desktop" >> $temp_sh_path
echo " echo \"Type=Application\" >> \$var/$project_name.desktop" >> $temp_sh_path
echo " echo \"Name=$project_name\" >> \$var/$project_name.desktop" >> $temp_sh_path
echo " echo \"Icon=\$2/$project_name$default1__$project_ver/$app_icon_name\" >> \$var/$project_name.desktop" >> $temp_sh_path
echo " echo \"Exec=\$2/$project_name$default1__$project_ver/$app_launcher_name\" >> \$var/$project_name.desktop" >> $temp_sh_path
echo " echo \"Comment=\\\"bylh app\\\"\" >> \$var/$project_name.desktop" >> $temp_sh_path
echo " echo \"Terminal=true\" >> \$var/$project_name.desktop" >> $temp_sh_path
echo " echo \"Categories=IDE\" >> \$var/$project_name.desktop" >> $temp_sh_path
echo " chmod +777 \$var/$project_name.desktop" >> $temp_sh_path
echo " tail -n +\$lines \$0 >temp.tar.gz" >> $temp_sh_path
echo " mkdir -p \$2/$project_name$default1__$project_ver/" >> $temp_sh_path
echo " tar -zxvf temp.tar.gz -C \$2/$project_name$default1__$project_ver" >> $temp_sh_path
echo " rm temp.tar.gz" >> $temp_sh_path
echo "else" >> $temp_sh_path
echo " echo \"error: Argument error OR the installation directory does not exist\"" >> $temp_sh_path
echo "fi" >> $temp_sh_path
echo "exit 0" >> $temp_sh_path
chmod +777 $temp_sh_path
cat $temp_sh_path $temp_gz_path> $output_run_path
mv $temp_sh_path $current_dir$run_output_dir/tmp.sh
rm $temp_gz_path
chmod +777 $output_run_path
zenity --title="Finish" \
--info \
--text \
"install:\n./$project_name$default__$project_ver.run -install /opt\n\n\
remove:\n./$project_name$default__$project_ver.run -remove /opt\n"
echo "OUTPUT: $output_run_path"
安装脚本代码
#!/bin/bash
if [ $# -eq 0 ]; then
echo "no argument"
exit -1
fi
lines=33
desk=`cat $HOME/.config/user-dirs.dirs | grep DESKTOP_DIR | tail -1 |cut -d '=' -f 2 | sed 's/\"//g'`
var=`eval echo $desk`
if [ -f $var/BHD-D703.desktop ];then
rm $var/BHD-D703.desktop
fi
if [ $1 = "-remove" -a -d "$2/BHD-D703_2.0.0.4" ];then
rm "$2/BHD-D703_2.0.0.4" -r
elif [ $1 = "-install" -a -d $2 ];then
echo "[Desktop Entry]" >> $var/BHD-D703.desktop
echo "Version=2.0.0.4" >> $var/BHD-D703.desktop
echo "Type=Application" >> $var/BHD-D703.desktop
echo "Name=BHD-D703" >> $var/BHD-D703.desktop
echo "Icon=$2/BHD-D703_2.0.0.4/main.ico" >> $var/BHD-D703.desktop
echo "Exec=$2/BHD-D703_2.0.0.4/packTest" >> $var/BHD-D703.desktop
echo "Comment=\"bylh app\"" >> $var/BHD-D703.desktop
echo "Terminal=true" >> $var/BHD-D703.desktop
echo "Categories=IDE" >> $var/BHD-D703.desktop
chmod +777 $var/BHD-D703.desktop
tail -n +$lines $0 >temp.tar.gz
mkdir -p $2/BHD-D703_2.0.0.4/
tar -zxvf temp.tar.gz -C $2/BHD-D703_2.0.0.4
rm temp.tar.gz
else
echo "error: Argument error OR the installation directory does not exist"
fi
exit 0