新增 ssinstall-local 以准备后续的ACE支持

This commit is contained in:
shenmo 2025-05-31 00:34:08 +08:00
parent dc28c2e9d1
commit bbc4d27d7a
4 changed files with 142 additions and 0 deletions

@ -0,0 +1,6 @@
#!/bin/bash
TRANSHELL_CONTENT_HASH_CHECK_FAILED="Failed in checking package hash! \nPossibly reason can be the package is broken, laggy in sync of Spark Store repository, or, there is a malware attempt to attack. \nIf you don't know what happend, please try install again after execute the command below\n sudo aptss update\n\nIf the problem still happen, please click APP Feedback button in the APP information page to feedback to us.\n\n If you are in the Audition GroupPlease use ssaudit instead of ssinstall to audit APPsfor ssinstall is used for password-free install now.\nIf you want to install an app that is removed from Spark Store repositoryyou can also use ssaudit."
TRANSHELL_CONTENT_PLEASE_RUN_AS_ROOT="Please run ssinstall as root"
TRANSHELL_CONTENT_FILE_NOT_EXIST="File not exist"
TRANSHELL_CONTENT_WILL_NOT_DELETE_DEB="No delete after install option given, will not delete the deb"
TRANSHELL_CONTENT_DEB_IS_DELETED="--delete-after-install option is given and the installation is succeeded, delete the deb file."

@ -0,0 +1,6 @@
#!/bin/bash
TRANSHELL_CONTENT_HASH_CHECK_FAILED="软件包校验失败!这不应该发生!\n可能是因为软件包已损坏星火仓库未同步或者最坏的情况恶意软件尝试利用自动安装来入侵系统\n如果你不清楚发生了什么请执行 sudo aptss update 后再尝试安装。\n如果问题仍然存在请在应用信息界面点击 应用反馈 来提交反馈给我们!\n\n 如果你是审核人员,请使用 ssaudit来替代ssinstall进行审核工作因为现在ssinstall已经被用于免密安装。\n如果你正在尝试安装已经下架的星火应用也可用ssaudit来替代ssinstall"
TRANSHELL_CONTENT_PLEASE_RUN_AS_ROOT="请使用root启动ssinstall"
TRANSHELL_CONTENT_FILE_NOT_EXIST="文件不存在"
TRANSHELL_CONTENT_WILL_NOT_DELETE_DEB="未指定安装后删除或安装出错不删除deb包"
TRANSHELL_CONTENT_DEB_IS_DELETED="使用了--delete-after-install选项且安装未出错删除deb包"

@ -144,6 +144,7 @@ fi
if [ ! -f "$1" ]; then
echo "${TRANSHELL_CONTENT_FILE_NOT_EXIST},Trying to redownload"
aptss update
FILEPATH=$(dirname "$1")
FILENAME=$(basename "$1")
PACKAGE_NAME=$(echo "$FILENAME" | sed -r 's/^([^_]+)_.*$/\1/')

129
tool/ssinstall-local Executable file

@ -0,0 +1,129 @@
#!/bin/bash
SPARK_DOWNLOAD_SERVER_URL="https://d.spark-app.store/"
SPARK_DOWNLOAD_SERVER_URL_NO_PROTOCOL="d.spark-app.store"
source /opt/durapps/spark-store/bin/bashimport/transhell.amber
load_transhell_debug
export DEBIAN_FRONTEND=noninteractive
help(){
echo "Spark Store 安装脚本使用说明:"
echo "用法: $0 [选项] <deb文件路径>"
echo ""
echo "选项:"
echo " -h, --help 显示此帮助信息"
echo " --delete-after-install 安装完成后删除deb文件"
echo ""
echo "示例:"
echo " $0 /path/to/package.deb"
echo " $0 --delete-after-install /path/to/package.deb"
}
parse_args() {
while [ $# -gt 0 ]; do
case "$1" in
-h | --help)
help
exit 0
;;
--delete-after-install)
DELETE_AFTER_INSTALL="1"
shift
;;
*)
DEBPATH="$1"
;;
esac
shift
done
}
parse_args "$@"
echo "Spark Store Install script. 星火商店安装脚本"
function create_desktop_file() {
local user=$(who | awk '{print $1}' | head -n 1)
if [ -e $(sudo -u "$user" xdg-user-dir)/.config/spark-union/spark-store/ssshell-config-do-not-create-desktop ];then
echo "It is configured that do not create desktop file. Give up"
else
exec_create_desktop_file
fi
}
function exec_create_desktop_file() {
local user=$(who | awk '{print $1}' | head -n 1)
for desktop_file_path in $(dpkg -L "$package_name" |grep /usr/share/applications/ | awk '/\.desktop$/ {print}'); do
if [ "$(cat $desktop_file_path | grep NoDisplay=true)" = "" ];then
echo "$desktop_file_path is checked and will be installed to desktop"
sudo -u "$user" cp "$desktop_file_path" "$(sudo -u "$user" xdg-user-dir DESKTOP)/"
fi
done
for desktop_file_path in $(dpkg -L "$package_name" |grep /opt/apps/$package_name/entries/applications | awk '/\.desktop$/ {print}'); do
if [ "$(cat $desktop_file_path | grep NoDisplay=true)" = "" ];then
echo "$desktop_file_path is checked and will be installed to desktop"
chmod +x "$desktop_file_path"
sudo -u "$user" cp "$desktop_file_path" "$(sudo -u "$user" xdg-user-dir DESKTOP)/"
fi
done
}
####################################
if [ $# -eq 0 ]; then
echo "没有接收到参数,退出"
help
echo "OMG-IT-GOES-WRONG"
exit 1
fi
if [ "$(id -u)" != "0" ]; then
echo "${TRANSHELL_CONTENT_PLEASE_RUN_AS_ROOT}"
echo "OMG-IT-GOES-WRONG"
exit 1
fi
package_name=$(dpkg-deb -f "$DEBPATH" Package)
echo "Package name is $package_name"
try_run_output=$(aptss --dry-run install "$DEBPATH")
try_run_ret="$?"
# 安装失败后进行 aptss 刷新,随后尝试安装
if [ "$try_run_ret" -ne 0 ]; then
aptss update
try_run_output=$(aptss --dry-run install "$DEBPATH")
try_run_ret="$?"
fi
if [ "$try_run_ret" = "0" ]; then ## 若安装检测成功
dpkg -i "$DEBPATH" || aptss install "$DEBPATH" -yfq
else
echo "Package manager quit with exit code.Here is the log"
echo "包管理器以错误代码退出.日志如下"
echo
echo -e "${try_run_output}"
echo "OMG-IT-GOES-WRONG"
exit 1
fi
### 退出阶段
if [ "$?" = "0" ]; then
if dpkg -s "$package_name" >/dev/null 2>&1; then
echo "软件包已安装:$package_name"
create_desktop_file
if [ "$DELETE_AFTER_INSTALL" = "1" ];then
rm "$DEBPATH"
echo "${TRANSHELL_CONTENT_DEB_IS_DELETED}"
else
echo "${TRANSHELL_CONTENT_WILL_NOT_DELETE_DEB}"
fi
else
echo "软件包未安装:$package_name"
echo "安装异常!抛出错误"
echo "OMG-IT-GOES-WRONG"
exit 1
fi
else
echo "安装异常!抛出错误"
echo "OMG-IT-GOES-WRONG"
exit 1
fi