[makeself|shell] 使用makeself制作linux应用程序安装包

打包工具makeself安装

sudo apt install makeself

目录结构

.
├── bin
│   └── install.sh
├── resources
│   └── 应用程序压缩包
└── package.sh

安装脚本

install.sh

#!/bin/bash

_backup(){
    echo "备份数据"
}
_restore(){
	echo "还原数据"
}
_install(){
    #备份数据
    _backup
    #获取当前目录
    current_path=$(cd "$(dirname $0)";pwd)
    cd $current_path
    echo "安装升级"
}
# 病毒库升级无法回滚
_uninstall(){
    #恢复数据
    _restore
}

case "$1" in
install)
  _install
  ;;
uninstall)
  _uninstall
  ;;
*)
  echo "Usage: $0 {install|uninstall}" >&2
  exit 1
  ;;
esac
exit 0

打包脚本

package.sh

#!/bin/sh

APP_NAME=$1
APP_VERSION=$2
SCRIPTS_DIR=$(cd "$(dirname $0)";pwd)

APP_SRC_DIR=${SCRIPTS_DIR}
DIST_DIR=${APP_SRC_DIR}/target
DIST_BIN_DIR=${DIST_DIR}/${APP_NAME}-${APP_VERSION}/bin
DIST_RESOURCES_DIR=${DIST_DIR}/${APP_NAME}-${APP_VERSION}/resources

rm -rf ${APP_SRC_DIR}/target

mkdir -p ${DIST_BIN_DIR}
mkdir -p ${DIST_RESOURCES_DIR}

cp -f ${APP_SRC_DIR=}/install.sh ${DIST_BIN_DIR}
chmod +x ${DIST_BIN_DIR}/*.sh
cp -rf ${APP_SRC_DIR}/resources/* ${DIST_RESOURCES_DIR}

cd ${DIST_DIR}
makeself ${APP_NAME}-${APP_VERSION} ${APP_NAME}-installer-${APP_VERSION}.run "${APP_NAME}-${APP_VERSION}" sh ./bin/install.sh ${APP_VERSION}

制作安装包命令

./package.sh appname version
# 示例:执行下述命令后,在当前目录下生成一个target目录,里面的jdk-installer-1.8.run即所要制作的安装包
./package.sh jdk 1.8

制作的安装包安装卸载命令

# 安装
sh appname-installer-version.run install
# 卸载
sh appname-installer-version.run uninstall

你可能感兴趣的:(SHELL脚本,shell)