【shell脚本打包安装应用,创建快捷方式】

shell脚本打包安装应用,创建快捷方式

  • 流程描述
  • 脚本代码
    • 打包脚本代码
    • 安装脚本代码

流程描述

打包脚本

打包脚本
创建应用压缩包
创建安装用的脚本
整合成一个.run
结束

安装脚本

安装脚本
参数判断
安装
检测目标文件夹是否存在
把应用的压缩包从.run文件中分离
解压应用指定目录
创建桌面快捷方式
卸载
检测目标文件夹是否存在
删除文件夹
删除快捷方式
结束

脚本代码

打包脚本代码

下面展示一些 内联代码片


###
 #  ┌───┐   ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐
 #  │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

你可能感兴趣的:(linux,ubuntu)