mirror of
https://gitee.com/spark-store-project/spark-store
synced 2025-07-10 15:46:00 +08:00
143 lines
4.6 KiB
Bash
Executable File
143 lines
4.6 KiB
Bash
Executable File
#!/bin/bash
|
||
|
||
reset
|
||
|
||
echo "Copyright (c) 2019-2021 The Spark Project"
|
||
|
||
if [ -x "/usr/bin/deepin-deb-installer" ] ; then
|
||
echo "深度软件包安装器已安装,开始检测证书"
|
||
else
|
||
echo "未安装深度软件包安装器,拒绝执行"
|
||
echo "UOS需要深度软件包安装器来认证签名"
|
||
echo "如果你用的是UOS,你能卸载这玩意说明你已经开了开发者模式......悄悄告诉你,放屁是不用脱裤子的!"
|
||
echo "如果你用的不是统信系发行版......所以你为什么要打开这个脚本?"
|
||
exit 1
|
||
fi
|
||
|
||
if [ -f "/usr/share/ca-certificates/deepin/private/priv.crt" ] ; then
|
||
echo "检测到已经生成过证书,直接跳过询问"
|
||
else
|
||
until [ -f "/usr/bin/cert-tool" ] ; do
|
||
#强制未安装证书工具的不通过
|
||
echo "该工具的原理是利用UOS的自签名安装包免开发者的特性,需要您的UOS ID账号和密码,请在使用工具前确保在应用商店中已安装过“证书工具”这个应用"
|
||
echo "如果没有安装,则无法使用。请确认安装后再进行下一步操作"
|
||
echo "如果你确认已经安装了该应用,请按回车"
|
||
read renyijian
|
||
|
||
#检测是否在说谎签名文件
|
||
if [ -f "/usr/bin/cert-tool" ] ; then
|
||
echo "成功检测到cert-tool存在,开始检测证书\n"
|
||
else
|
||
echo "没有检测到该应用,请您再次确认“证书工具”已经安装!"
|
||
sleep 3
|
||
clear
|
||
fi
|
||
done
|
||
|
||
until [ -f "/usr/share/ca-certificates/deepin/private/priv.crt" ] ; do
|
||
echo "没有检测到证书,准备调用证书工具生成证书,请输入您的UOS账号/密码。本脚本不会上传任何信息"
|
||
echo "请在此行输入您的UOS账号用户名/电话号/邮箱"
|
||
read account
|
||
echo "请在此行输入您的UOS账号密码"
|
||
read passwd
|
||
echo "即将安装证书,请在弹出的窗口安装"
|
||
cert-tool -username="$account" -password="$passwd"
|
||
done
|
||
echo "检测到已经生成过证书,准备签名"
|
||
fi
|
||
#这个if是判断是否已经有证书
|
||
|
||
unset account
|
||
unset passwd
|
||
unset renyijian
|
||
|
||
mkdir -p /tmp/spark-store-appremover
|
||
cd /tmp/spark-store-appremover
|
||
#工作目录应当为 /tmp/spark-store-appremover
|
||
|
||
while [ ! $pkgname ] ; do
|
||
if [ ! $1 ] ; then
|
||
echo "没有检测到包名,以交互式模式运行"
|
||
echo "请输入你要卸载的软件包名,输入结束后回车"
|
||
read pkgname
|
||
else
|
||
echo "检测到包名,跳过获取"
|
||
pkgname="$1"
|
||
echo "读取到的包名为:$pkgname"
|
||
fi
|
||
|
||
if [ ! $pkgname ] ; then
|
||
echo "没有检测到包名,请重新输入!"
|
||
sleep 3
|
||
clear
|
||
else
|
||
echo "包名读取成功,进入下一步"
|
||
fi
|
||
done
|
||
|
||
#while [ ! $version ] ; do
|
||
# if [ ! $2 ] ; then
|
||
# echo "没有检测到版本号,以交互式模式运行"
|
||
# echo "请输入你要卸载的软件包版本号,输入结束后回车"
|
||
# read version
|
||
# else
|
||
# echo "检测到包名,跳过获取"
|
||
# version="$2"
|
||
# echo "读取到的版本号为:$version"
|
||
# fi
|
||
#
|
||
# if [ ! $version ] ; then
|
||
# echo "没有检测到版本号,请重新输入!"
|
||
# sleep 3
|
||
# clear
|
||
# else
|
||
# echo "版本号读取成功,进入下一步"
|
||
# fi
|
||
#done
|
||
|
||
#发现版本号不一定一致也可以卸载
|
||
version="1.0"
|
||
echo "开始生成deb包"
|
||
echo "输出的control文件为"
|
||
echo ""
|
||
echo "Package: $pkgname"
|
||
echo "Version: $version"
|
||
echo "Depends: "
|
||
echo "Maintainer: spark-store"
|
||
echo "Description: 这是一个假软件包,请点击卸载"
|
||
echo "Architecture: $(arch)"
|
||
echo "-----------------------开始生成-----------------------"
|
||
workdir=$(pwd)
|
||
echo "工作目录为$workdir"
|
||
mkdir DEBIAN
|
||
cd DEBIAN
|
||
touch control
|
||
echo "Package: $pkgname" >> ./control
|
||
echo "Version: $version" >> ./control
|
||
echo "Depends: " >> ./control
|
||
echo "Maintainer: spark-store" >> ./control
|
||
echo "Description: 这是一个假软件包,请点击卸载" >> ./control
|
||
echo "Architecture: $(arch)" >> ./control
|
||
|
||
echo "-----------------------开始打包-----------------------"
|
||
cd ..
|
||
workdir=$(pwd)
|
||
echo "回退到工作目录,当前目录位于$workdir"
|
||
fakeroot dpkg -b . ./uninstall.deb
|
||
echo "-----------------------打包结束-----------------------"
|
||
|
||
cd /tmp
|
||
|
||
echo "-----------------------开始签名-----------------------"
|
||
deepin-elf-sign-deb "/tmp/spark-store-appremover/uninstall.deb"
|
||
echo "-----------------------签名结束-----------------------"
|
||
echo "-----------------启动深度软件包管理器-------------------"
|
||
|
||
deepin-deb-installer "/tmp/signed_deb/uninstall.deb"
|
||
|
||
file_name=$(basename "/tmp/signed_deb/uninstall.deb")
|
||
echo "---------------以上为深度软件包管理器输出----------------"
|
||
echo "删除临时包"
|
||
rm "/tmp/signed_deb/$file_name"
|
||
rm -r /tmp/spark-store-appremover
|