| 安装脚本 |
程序文件压缩包 |
----------------- |
文件的前N行是安装脚本install.sh,安装脚本后面紧跟着的是程序文件的压缩包。
### 打包脚本
通过打包脚本,我们可以将.run安装包的程序文件和安装脚本打包到一起生成.run文件。
package.sh
#!/bin/bash
#将源文件打包成压缩包
tar czvf package.tar.gz package
#创建.run的输出目录
mkdir -p output
#从外界获取输入的版本号
echo “请输入版本号,回车结束, 示例(1.0.0)”
read -p “请输入:” version
if [ ! -n “$version” ]; then
version=1.0.0.1
fi
打包生成.run文件
cat install.sh package.tar.gz > output/test_“$version”.run
删除之前的文件压缩包
rm -f package.tar.gz
### 安装脚本
安装脚本在安装的时候被调用,负责对程序包进行解压缩,并把对应的程序文件拷贝到相应的安装目录下。最后执行一些安装处理操作。
install.sh
#!/bin/bash
#跳转行数,负责定位到压缩包所在的位置
lines=63
#检查系统的架构是否符合
if [[ “x86_64” =~ “
(
a
r
c
h
)
"
]
]
t
h
e
n
e
c
h
o
"
架构相同
"
e
l
s
e
e
c
h
o
"
架构不同
,
本机架构为
(arch)" ]] then echo "架构相同" else echo "架构不同, 本机架构为
(arch)"]]thenecho"架构相同"elseecho"架构不同,本机架构为(arch)”
exit 0
fi
homepath=~
#获取安装路径
echo “输入安装路径, 按下回车确认,默认路径(
h
o
m
e
p
a
t
h
)
"
r
e
a
d
−
p
"
请输入:
"
i
n
s
t
a
l
l
p
a
t
h
i
f
[
!
−
n
"
{homepath})" read -p "请输入:" installpath if [ ! -n "
homepath)"read−p"请输入:"installpathif[!−n"installpath” ]; then
installpath=$homepath
fi
#解压对应的程序包
#根据安装脚本的行数,跳转到压缩包所在的位置
tail -n +$lines $0 > package.tar.gz
#解压缩
tar zxvf package.tar.gz
#将解压缩之后文件拷贝到对应的安装目录
mkdir -p $installpath/install/test
cp -r package $installpath/install/test
#检查用户路径,获取桌面路径
test -f ~/.config/user-dirs.dirs && . ~/.config/user-dirs.dirs
desktopDir=~/${XDG_DESKTOP_DIR##*/}
#生成快捷方式,替换快捷方式中的安装路径
sed -i “s#INSTALLPATH#${installpath}#g” $installpath/install/test/test.desktop
#applications文件夹如果不存在则创建
if [ ! -d ~/.local/share/applications ];then
mkdir -p ~/.local/share/applications
fi
#拷贝桌面快捷方式
cp $installpath/install/test/test.desktop ~/.local/share/applications
#自定义协议启动
xdg-mime default test.desktop x-scheme-handler/clerk
#快捷方式发送到桌面,并修改可执行权限
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!