查看: 124|回覆: 1

国产化麒麟系统编译程序打run包脚本和说明

[複製鏈接]

1

主題

0

回帖

0

積分

热心网友

金币
0
閲讀權限
220
精華
0
威望
0
贡献
0
在線時間
0 小時
註冊時間
2010-4-24
發表於 2023-6-3 16:12:00 | 顯示全部樓層 |閲讀模式

1.打包脚本

package文件夹下放一个程序文件夹OvitFrame文件夹、package.sh脚本、install.sh脚本;执行package.sh脚本将OvitFrame文件夹压缩成一个压缩包,然后将install.sh和压缩包用cat命令生成一个run包;然后就

#!/bin/bash
#将源文件打包成压缩包
tar czvf OvitFrame.tar.gz OvitFrame
#创建.run的输出目录
mkdir -p output

#从外界获取输入的版本号
version=5.0.300
datetime=$(date "+%Y%m%d%H%M%S")
# 打包生成.run文件
cat install.sh OvitFrame.tar.gz > output/OvitFrame"$datetime"_"$version".run
# 删除之前的文件压缩包
rm  -f OvitFrame.tar.gz

 

 

安装脚本

#!/bin/bash

#跳转行数,负责定位到压缩包所在的位置,这个值是指这个脚本的行数加1,这个脚本共有72行
lines=76

#检查系统的架构是否符合
if [[ "x86_64" =~ "$(arch)" ]]
then
    echo "架构相同"
else
    echo "架构不同, 本机架构为$(arch)"
    exit 0
fi

homepath=~
#获取安装路径
echo "输入安装路径, 按下回车确认,默认路径(${homepath})"
read -p "请输入:" installpath
if [ ! -n "$installpath" ]; then
    installpath=$homepath
fi


#解压对应的程序包
#根据安装脚本的行数,跳转到压缩包所在的位置
tail -n +$lines $0 > OvitFrame.tar.gz

#解压缩
tar zxvf OvitFrame.tar.gz

#将解压缩之后文件拷贝到对应的安装目录
mkdir -p $installpath/install/
cp -r OvitFrame $installpath/install/

#检查用户路径,获取桌面路径
test -f ~/.config/user-dirs.dirs && . ~/.config/user-dirs.dirs
desktopDir=~/${XDG_DESKTOP_DIR##*/}
echo $desktopDir
#要在可执行程序同路径下创建OvitFrame.desktop快捷方式
sed -i "s#INSTALLPATH#${installpath}#g" $installpath/install/OvitFrame/OvitFrame.desktop

#applications文件夹如果不存在则创建
if [ ! -d ~/.local/share/applications ];then
    mkdir -p ~/.local/share/applications
fi

#拷贝桌面快捷方式
echo " $installpath/install/OvitFrame/OvitFrame.desktop"
cp $installpath/install/OvitFrame/OvitFrame.desktop ~/.local/share/applications

#自定义协议启动
xdg-mime default OvitFrame.desktop x-scheme-handler/clerk

#快捷方式发送到桌面,并修改可执行权限
cp $installpath/install/OvitFrame/OvitFrame.desktop ${desktopDir}
chmod +x ${desktopDir}/OvitFrame.desktop
chmod 777 $installpath/install/OvitFrame/*
chmod 777 $installpath/install/OvitFrame/components/AnalysisCenter/*
chmod 777 $installpath/install/OvitFrame/components/LicenseVerify/*
chmod 777 $installpath/install/OvitFrame/components/ls/*
chmod 777 $installpath/install/OvitFrame/components/ls/script/*
chmod 777 $installpath/install/OvitFrame/components/videoPlayer/*






#移除无用文件
rm -rf $installpath/install/OvitFrame/OvitFrame.desktop
rm -rf OvitFrame
rm -rf OvitFrame.tar.gz
#echo " we need root to excuate the script install.sh"
#sudo -s $installpath/install/OvitFrame/install.sh
exit 0

 

回覆

使用道具 舉報

0

主題

1227

回帖

7483

積分

琼殿精英

金币
6256
閲讀權限
220
精華
0
威望
0
贡献
0
在線時間
0 小時
註冊時間
2011-10-11
發表於 4 天前 | 顯示全部樓層
热心回复:

看到楼主的分享,感觉这个打包思路非常实用!国产化麒麟系统确实需要这样的自动化打包方案。

[quote]简单总结一下这个方案的优点:

1. 一键式打包:通过shell脚本自动完成压缩和合并
2. 自解压安装:利用cat命令将安装脚本和压缩包合并成单一.run文件
3. 架构检查:安装时自动检测系统架构,避免安装错误
4. 桌面快捷方式:自动创建.desktop文件并部署到桌面和应用菜单

有个小建议:

- 打包脚本中的版本号目前是写死的,可以考虑通过命令行参数传入,这样更灵活
- install.sh里的lines变量需要手动维护,如果脚本有修改需要同步更新,建议加上注释说明

另外请教一下,麒麟系统下.desktop文件的格式和Ubuntu有区别吗?之前在统信UOS上遇到过兼容性问题。

感谢楼主的无私分享!顺便问一下,这个方案对DEB/RPM包也适用吗?

原文链接
回覆

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 立即注册

本版積分規則

相关侵权、举报、投诉及建议等,请发 E-mail:qiongdian@foxmail.com

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部