Compare commits
34 Commits
4.7.1test1
...
4.8.0
| Author | SHA1 | Date | |
|---|---|---|---|
| 88a157dd45 | |||
| 34b8670a40 | |||
| d5b2d4ddf4 | |||
| 01bb90879b | |||
| 1c64278723 | |||
| 17c90c5d07 | |||
| 539607553d | |||
| 85daec6428 | |||
| e38d23dba0 | |||
| 9593ebb813 | |||
| fd1f13f59d | |||
| c5b5b6d3ba | |||
| ef4b21fb8c | |||
| 72e3d54f8d | |||
| 50fd18fbe4 | |||
| e98def4839 | |||
| da65d3b90e | |||
| 33c892b39d | |||
| ca6e47e9a3 | |||
| 0ca73a2a28 | |||
| 9493f0738a | |||
| 688ed679b5 | |||
| 233b5e8c76 | |||
| 4fc8ef3f48 | |||
| cd4f104e1a | |||
| 9b92894e4f | |||
| 05a5b89464 | |||
| fb6446292c | |||
| 5bc65827b2 | |||
| c0b2edf1b0 | |||
| f08366a3d5 | |||
| 8cb92d9972 | |||
| 6640dc9bba | |||
| 3c2a6ac635 |
2
.gitignore
vendored
@@ -53,4 +53,4 @@ debian/*.substvars
|
|||||||
debian/spark-store
|
debian/spark-store
|
||||||
|
|
||||||
.vscode/*
|
.vscode/*
|
||||||
src/spark-store
|
obj-*
|
||||||
|
|||||||
6
debian/changelog
vendored
@@ -1,6 +1,8 @@
|
|||||||
spark-store (4.7.1~test1) UNRELEASED; urgency=medium
|
spark-store (4.8.0) UNRELEASED; urgency=medium
|
||||||
|
|
||||||
* ssinstall升级,支持安装到ACE和自动安装到ACE
|
* ssinstall重写,支持安装到ACE和自动安装到ACE,支持只允许安装到本地
|
||||||
|
* 商店支持展示ACE标识,支持识别 native amber-ce-bookworm amber-ce-trixie amber-ce-sid amber-ce-deepin23
|
||||||
|
* 投稿器支持新版spec
|
||||||
|
|
||||||
-- shenmo <shenmo@spark-app.store> Tue, 24 Sep 2024 11:27:08 +0800
|
-- shenmo <shenmo@spark-app.store> Tue, 24 Sep 2024 11:27:08 +0800
|
||||||
|
|
||||||
|
|||||||
@@ -35,14 +35,13 @@ Application::Application(int &argc, char **argv)
|
|||||||
setApplicationName("spark-store"); // 影响 ~/.config/spark-union ~/.local/share/spark-union 下文件夹名称
|
setApplicationName("spark-store"); // 影响 ~/.config/spark-union ~/.local/share/spark-union 下文件夹名称
|
||||||
setApplicationDisplayName(QObject::tr("Spark Store")); // 设置窗口显示标题 (Wayland 下会显示 Qt 原生标题栏)
|
setApplicationDisplayName(QObject::tr("Spark Store")); // 设置窗口显示标题 (Wayland 下会显示 Qt 原生标题栏)
|
||||||
setProductName(QObject::tr("Spark Store"));
|
setProductName(QObject::tr("Spark Store"));
|
||||||
setProductIcon(QIcon::fromTheme("spark-store"));
|
setProductIcon(QIcon(":/icon/sparky.png"));
|
||||||
setApplicationHomePage("https://gitee.com/spark-store-project");
|
setApplicationHomePage("https://gitee.com/spark-store-project");
|
||||||
setApplicationDescription(
|
setApplicationDescription(
|
||||||
QObject::tr(
|
QObject::tr(
|
||||||
"<span style=' font-size:10pt;font-weight:60;'>An appstore powered by community</span><br/>"
|
"<span style=' font-size:10pt;font-weight:60;'>An appstore powered by community</span><br/>"
|
||||||
"<a href='https://www.spark-app.store/'>https://www.spark-app.store</a><br/>"
|
"<span style=' font-size:10pt;font-weight:60;'>Sparky is our mascot, designed by <a href='https://tai3.cn/'>Tyson Tan</a></span><br/>"));
|
||||||
"<span style=' font-size:12pt;'>Spark developers</span>"));
|
setApplicationLicense(" <a href='https://gitee.com/spark-store-project/spark-store/blob/Flamescion/LICENSE'>GPL V3</a> ");
|
||||||
setApplicationLicense(" <a href='https://gitee.com/spark-store-project/spark-store/blob/Flamescion/LICENSE'>Spark Opensource License</a> ");
|
|
||||||
|
|
||||||
// 检查 ~/.config/spark-union/spark-store 文件夹是否存在
|
// 检查 ~/.config/spark-union/spark-store 文件夹是否存在
|
||||||
checkAppConfigLocation();
|
checkAppConfigLocation();
|
||||||
|
|||||||
@@ -44,6 +44,7 @@
|
|||||||
<file>icon/light/text.svg</file>
|
<file>icon/light/text.svg</file>
|
||||||
<file>icon/light/update.svg</file>
|
<file>icon/light/update.svg</file>
|
||||||
<file>icon/logo.svg</file>
|
<file>icon/logo.svg</file>
|
||||||
|
<file>icon/sparky.png</file>
|
||||||
<file>json/features.json</file>
|
<file>json/features.json</file>
|
||||||
<file>tags/a2d_full.svg</file>
|
<file>tags/a2d_full.svg</file>
|
||||||
<file>tags/a2d.png</file>
|
<file>tags/a2d.png</file>
|
||||||
@@ -72,6 +73,21 @@
|
|||||||
<file>tags/uos_full.svg</file>
|
<file>tags/uos_full.svg</file>
|
||||||
<file>tags/uos.png</file>
|
<file>tags/uos.png</file>
|
||||||
<file>tags/uos.svg</file>
|
<file>tags/uos.svg</file>
|
||||||
|
<file>tags/amber-ce-bookworm_full.svg</file>
|
||||||
|
<file>tags/amber-ce-bookworm.png</file>
|
||||||
|
<file>tags/amber-ce-bookworm.svg</file>
|
||||||
|
<file>tags/amber-ce-sid_full.svg</file>
|
||||||
|
<file>tags/amber-ce-sid.png</file>
|
||||||
|
<file>tags/amber-ce-sid.svg</file>
|
||||||
|
<file>tags/amber-ce-trixie_full.svg</file>
|
||||||
|
<file>tags/amber-ce-trixie.png</file>
|
||||||
|
<file>tags/amber-ce-trixie.svg</file>
|
||||||
|
<file>tags/native_full.svg</file>
|
||||||
|
<file>tags/native.png</file>
|
||||||
|
<file>tags/native.svg</file>
|
||||||
<file>translations/qtwebengine_zh.qm</file>
|
<file>translations/qtwebengine_zh.qm</file>
|
||||||
|
<file>tags/amber-ce-deepin_full.svg</file>
|
||||||
|
<file>tags/amber-ce-deepin.svg</file>
|
||||||
|
<file>tags/amber-ce-deepin.png</file>
|
||||||
</qresource>
|
</qresource>
|
||||||
</RCC>
|
</RCC>
|
||||||
|
|||||||
BIN
src/assets/icon/sparky.png
Normal file
|
After Width: | Height: | Size: 401 KiB |
|
Before Width: | Height: | Size: 4.7 KiB After Width: | Height: | Size: 7.3 KiB |
BIN
src/assets/tags/amber-ce-bookworm.png
Normal file
|
After Width: | Height: | Size: 8.6 KiB |
1
src/assets/tags/amber-ce-bookworm.svg
Normal file
|
After Width: | Height: | Size: 22 KiB |
1
src/assets/tags/amber-ce-bookworm_full.svg
Normal file
|
After Width: | Height: | Size: 22 KiB |
BIN
src/assets/tags/amber-ce-deepin.png
Normal file
|
After Width: | Height: | Size: 8.1 KiB |
1
src/assets/tags/amber-ce-deepin.svg
Normal file
|
After Width: | Height: | Size: 18 KiB |
1
src/assets/tags/amber-ce-deepin_full.svg
Normal file
|
After Width: | Height: | Size: 19 KiB |
BIN
src/assets/tags/amber-ce-sid.png
Normal file
|
After Width: | Height: | Size: 7.9 KiB |
1
src/assets/tags/amber-ce-sid.svg
Normal file
|
After Width: | Height: | Size: 18 KiB |
1
src/assets/tags/amber-ce-sid_full.svg
Normal file
|
After Width: | Height: | Size: 18 KiB |
BIN
src/assets/tags/amber-ce-trixie.png
Normal file
|
After Width: | Height: | Size: 8.2 KiB |
1
src/assets/tags/amber-ce-trixie.svg
Normal file
|
After Width: | Height: | Size: 18 KiB |
1
src/assets/tags/amber-ce-trixie_full.svg
Normal file
|
After Width: | Height: | Size: 18 KiB |
|
Before Width: | Height: | Size: 5.7 KiB After Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 4.8 KiB After Width: | Height: | Size: 7.9 KiB |
|
Before Width: | Height: | Size: 5.0 KiB After Width: | Height: | Size: 9.2 KiB |
|
Before Width: | Height: | Size: 4.9 KiB After Width: | Height: | Size: 6.9 KiB |
|
Before Width: | Height: | Size: 4.7 KiB After Width: | Height: | Size: 6.3 KiB |
|
Before Width: | Height: | Size: 4.5 KiB After Width: | Height: | Size: 6.0 KiB |
BIN
src/assets/tags/native.png
Normal file
|
After Width: | Height: | Size: 6.7 KiB |
1
src/assets/tags/native.svg
Normal file
|
After Width: | Height: | Size: 11 KiB |
1
src/assets/tags/native_full.svg
Normal file
|
After Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 5.0 KiB After Width: | Height: | Size: 7.7 KiB |
|
Before Width: | Height: | Size: 4.7 KiB After Width: | Height: | Size: 6.6 KiB |
@@ -8,6 +8,8 @@
|
|||||||
#include <QSettings>
|
#include <QSettings>
|
||||||
#include <QProcess>
|
#include <QProcess>
|
||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
|
#include <QFile>
|
||||||
|
#include <QTextStream>
|
||||||
|
|
||||||
DataCollectorAndUploader::DataCollectorAndUploader(QObject *parent) : QObject(parent)
|
DataCollectorAndUploader::DataCollectorAndUploader(QObject *parent) : QObject(parent)
|
||||||
{
|
{
|
||||||
@@ -23,25 +25,26 @@ void DataCollectorAndUploader::collectData()
|
|||||||
QString distributor_id;
|
QString distributor_id;
|
||||||
QString release;
|
QString release;
|
||||||
QString architecture;
|
QString architecture;
|
||||||
|
|
||||||
QSettings config(QStandardPaths::writableLocation(QStandardPaths::AppConfigLocation) + "/config.ini", QSettings::IniFormat);
|
QSettings config(QStandardPaths::writableLocation(QStandardPaths::AppConfigLocation) + "/config.ini", QSettings::IniFormat);
|
||||||
QString version = config.value("build/version").toString();
|
QString version = config.value("build/version").toString();
|
||||||
QString uuid = config.value("info/uuid").toString();
|
QString uuid = config.value("info/uuid").toString();
|
||||||
|
|
||||||
|
// Read /etc/os-release file
|
||||||
// Execute lsb_release --all and capture the output
|
QFile osReleaseFile("/etc/os-release");
|
||||||
QProcess lsbProcess;
|
if (osReleaseFile.open(QIODevice::ReadOnly | QIODevice::Text)) {
|
||||||
lsbProcess.start("lsb_release", QStringList() << "--all");
|
QTextStream in(&osReleaseFile);
|
||||||
lsbProcess.waitForFinished();
|
while (!in.atEnd()) {
|
||||||
QString lsbOutput = lsbProcess.readAllStandardOutput();
|
QString line = in.readLine();
|
||||||
|
if (line.startsWith("ID=")) {
|
||||||
QStringList lines = lsbOutput.split('\n');
|
distributor_id = line.mid(3).remove('"').trimmed();
|
||||||
for (const QString &line : lines) {
|
} else if (line.startsWith("VERSION_ID=")) {
|
||||||
if (line.contains("Distributor ID:")) {
|
release = line.mid(11).remove('"').trimmed();
|
||||||
distributor_id = line.split(":").last().trimmed();
|
}
|
||||||
} else if (line.contains("Release:")) {
|
|
||||||
release = line.split(":").last().trimmed();
|
|
||||||
}
|
}
|
||||||
|
osReleaseFile.close();
|
||||||
|
} else {
|
||||||
|
qWarning() << "Could not open /etc/os-release file";
|
||||||
}
|
}
|
||||||
|
|
||||||
// Execute uname -m to get the architecture
|
// Execute uname -m to get the architecture
|
||||||
@@ -58,8 +61,6 @@ void DataCollectorAndUploader::collectData()
|
|||||||
json.insert("Store_Version", version);
|
json.insert("Store_Version", version);
|
||||||
json.insert("UUID", uuid);
|
json.insert("UUID", uuid);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// Convert to byte array
|
// Convert to byte array
|
||||||
QJsonDocument doc(json);
|
QJsonDocument doc(json);
|
||||||
QByteArray jsonData = doc.toJson();
|
QByteArray jsonData = doc.toJson();
|
||||||
|
|||||||
@@ -151,24 +151,25 @@ void AppIntoPage::openUrl(const QUrl &url)
|
|||||||
{
|
{
|
||||||
isInstalled = true;
|
isInstalled = true;
|
||||||
|
|
||||||
QProcess isUpdate;
|
// QProcess isUpdate;
|
||||||
isUpdate.start("dpkg-query", QStringList() << "--showformat='${Version}'"
|
// isUpdate.start("dpkg-query", QStringList() << "--showformat='${Version}'"
|
||||||
<< "--show" << info["Pkgname"].toString());
|
// << "--show" << info["Pkgname"].toString());
|
||||||
isUpdate.waitForFinished(180 * 1000); // 默认超时 3 分钟
|
// isUpdate.waitForFinished(180 * 1000); // 默认超时 3 分钟
|
||||||
QString localVersion = isUpdate.readAllStandardOutput();
|
// QString localVersion = isUpdate.readAllStandardOutput();
|
||||||
localVersion.replace("'", "");
|
// localVersion.replace("'", "");
|
||||||
|
|
||||||
isUpdate.start("dpkg", QStringList() << "--compare-versions" << localVersion << "ge" << info["Version"].toString());
|
// isUpdate.start("dpkg", QStringList() << "--compare-versions" << localVersion << "ge" << info["Version"].toString());
|
||||||
isUpdate.waitForFinished(180 * 1000); // 默认超时 3 分钟
|
// isUpdate.waitForFinished(180 * 1000); // 默认超时 3 分钟
|
||||||
if (isUpdate.exitCode() == 0 && isUpdate.exitStatus() == QProcess::NormalExit)
|
// if (isUpdate.exitCode() == 0 && isUpdate.exitStatus() == QProcess::NormalExit)
|
||||||
{
|
// {
|
||||||
isUpdated = true;
|
// isUpdated = true;
|
||||||
}
|
// }
|
||||||
else
|
// else
|
||||||
{
|
// {
|
||||||
isUpdated = false;
|
// isUpdated = false;
|
||||||
}
|
// }
|
||||||
isUpdate.close();
|
// isUpdate.close();
|
||||||
|
isUpdated = true; //去掉直接点击升级的功能
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -234,6 +235,12 @@ void AppIntoPage::clear()
|
|||||||
ui->tag_debian->hide();
|
ui->tag_debian->hide();
|
||||||
ui->tag_ubuntu->hide();
|
ui->tag_ubuntu->hide();
|
||||||
ui->tag_community->hide();
|
ui->tag_community->hide();
|
||||||
|
ui->tag_native->hide();
|
||||||
|
ui->tag_amber_ce_bookworm->hide();
|
||||||
|
ui->tag_amber_ce_trixie->hide();
|
||||||
|
ui->tag_amber_ce_sid->hide();
|
||||||
|
ui->tag_amber_ce_deepin23->hide();
|
||||||
|
|
||||||
ui->icon->clear();
|
ui->icon->clear();
|
||||||
ui->title->clear();
|
ui->title->clear();
|
||||||
ui->version->clear();
|
ui->version->clear();
|
||||||
@@ -404,53 +411,87 @@ void AppIntoPage::setAppinfoTags(const QStringList &tagList)
|
|||||||
bool deepinSupport = false;
|
bool deepinSupport = false;
|
||||||
bool uosSupport = false;
|
bool uosSupport = false;
|
||||||
bool debianSupport = false;
|
bool debianSupport = false;
|
||||||
|
bool hasAmberTag = false;
|
||||||
|
|
||||||
|
// First pass: Check if any Amber tags exist
|
||||||
foreach (const QString &tag, tagList)
|
foreach (const QString &tag, tagList)
|
||||||
{
|
{
|
||||||
if (tag == "community")
|
if (tag.startsWith("amber-ce-"))
|
||||||
{
|
{
|
||||||
ui->tag_community->show();
|
hasAmberTag = true;
|
||||||
}
|
break; // No need to continue checking
|
||||||
else if (tag == "debian")
|
|
||||||
{
|
|
||||||
ui->tag_debian->show();
|
|
||||||
debianSupport = true;
|
|
||||||
}
|
|
||||||
else if (tag == "ubuntu")
|
|
||||||
{
|
|
||||||
ui->tag_ubuntu->show();
|
|
||||||
ubuntuSupport = true;
|
|
||||||
}
|
|
||||||
else if (tag == "deepin")
|
|
||||||
{
|
|
||||||
ui->tag_deepin->show();
|
|
||||||
deepinSupport = true;
|
|
||||||
}
|
|
||||||
else if (tag == "uos")
|
|
||||||
{
|
|
||||||
ui->tag_uos->show();
|
|
||||||
uosSupport = true;
|
|
||||||
|
|
||||||
}
|
|
||||||
else if (tag == "dtk5")
|
|
||||||
{
|
|
||||||
ui->tag_dtk5->show();
|
|
||||||
}
|
|
||||||
else if (tag == "dwine2")
|
|
||||||
{
|
|
||||||
ui->tag_dwine2->show();
|
|
||||||
}
|
|
||||||
else if (tag == "dwine5")
|
|
||||||
{
|
|
||||||
ui->tag_dwine5->show();
|
|
||||||
}
|
|
||||||
else if (tag == "a2d")
|
|
||||||
{
|
|
||||||
ui->tag_a2d->show();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
notifyUserUnsupportedTags(ubuntuSupport, deepinSupport, uosSupport ,debianSupport);
|
|
||||||
|
|
||||||
|
// Second pass: Apply tags based on whether we have Amber tags
|
||||||
|
foreach (const QString &tag, tagList)
|
||||||
|
{
|
||||||
|
if (tag.isEmpty())
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (tag == "native")
|
||||||
|
ui->tag_native->show();
|
||||||
|
|
||||||
|
else if (tag == "community")
|
||||||
|
ui->tag_community->show();
|
||||||
|
|
||||||
|
else if (tag == "dtk5")
|
||||||
|
ui->tag_dtk5->show();
|
||||||
|
|
||||||
|
else if (tag == "dwine2")
|
||||||
|
ui->tag_dwine2->show();
|
||||||
|
|
||||||
|
else if (tag == "dwine5")
|
||||||
|
ui->tag_dwine5->show();
|
||||||
|
|
||||||
|
else if (tag == "a2d")
|
||||||
|
ui->tag_a2d->show();
|
||||||
|
|
||||||
|
else if (tag == "amber-ce-bookworm")
|
||||||
|
ui->tag_amber_ce_bookworm->show();
|
||||||
|
|
||||||
|
else if (tag == "amber-ce-trixie")
|
||||||
|
ui->tag_amber_ce_trixie->show();
|
||||||
|
|
||||||
|
else if (tag == "amber-ce-deepin23")
|
||||||
|
ui->tag_amber_ce_deepin23->show();
|
||||||
|
|
||||||
|
else if (tag == "amber-ce-sid")
|
||||||
|
ui->tag_amber_ce_sid->show();
|
||||||
|
|
||||||
|
// Only process distro tags if there are no Amber tags
|
||||||
|
else if (!hasAmberTag)
|
||||||
|
{
|
||||||
|
if (tag == "debian")
|
||||||
|
{
|
||||||
|
ui->tag_debian->show();
|
||||||
|
debianSupport = true;
|
||||||
|
}
|
||||||
|
else if (tag == "ubuntu")
|
||||||
|
{
|
||||||
|
ui->tag_ubuntu->show();
|
||||||
|
ubuntuSupport = true;
|
||||||
|
}
|
||||||
|
else if (tag == "deepin")
|
||||||
|
{
|
||||||
|
ui->tag_deepin->show();
|
||||||
|
deepinSupport = true;
|
||||||
|
}
|
||||||
|
else if (tag == "uos")
|
||||||
|
{
|
||||||
|
ui->tag_uos->show();
|
||||||
|
uosSupport = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!hasAmberTag)
|
||||||
|
notifyUserUnsupportedTags(ubuntuSupport, deepinSupport, uosSupport, debianSupport);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void AppIntoPage::notifyUserUnsupportedTags(bool ubuntuSupport, bool deepinSupport, bool uosSupport, bool debianSupport)
|
void AppIntoPage::notifyUserUnsupportedTags(bool ubuntuSupport, bool deepinSupport, bool uosSupport, bool debianSupport)
|
||||||
{
|
{
|
||||||
if (!SettingsPage::needUncompatibleNotification) {
|
if (!SettingsPage::needUncompatibleNotification) {
|
||||||
@@ -536,7 +577,27 @@ void AppIntoPage::on_downloadButton_clicked()
|
|||||||
|
|
||||||
emit clickedDownloadBtn();
|
emit clickedDownloadBtn();
|
||||||
|
|
||||||
DownloadItem *item = dw->addItem(info["Name"].toString(), info["Filename"].toString(), info["Pkgname"].toString(), iconpixmap, downloadUrl);
|
// 处理 tags,设置 installExtraArg
|
||||||
|
QString installExtraArg;
|
||||||
|
#if QT_VERSION >= QT_VERSION_CHECK(5, 15, 0)
|
||||||
|
QStringList taglist = info["Tags"].toString().split(";", Qt::SkipEmptyParts);
|
||||||
|
#else
|
||||||
|
QStringList taglist = info["Tags"].toString().split(";", QString::SkipEmptyParts);
|
||||||
|
#endif
|
||||||
|
if (taglist.contains("native")) {
|
||||||
|
installExtraArg = "--native";
|
||||||
|
} else if (taglist.contains("amber-ce-bookworm")) {
|
||||||
|
installExtraArg = "--amber-ce-bookworm";
|
||||||
|
} else if (taglist.contains("amber-ce-trixie")) {
|
||||||
|
installExtraArg = "--amber-ce-trixie";
|
||||||
|
} else if (taglist.contains("amber-ce-sid")) {
|
||||||
|
installExtraArg = "--amber-ce-sid";
|
||||||
|
} else if (taglist.contains("amber-ce-deepin23")) {
|
||||||
|
installExtraArg = "--amber-ce-deepin23";
|
||||||
|
}
|
||||||
|
|
||||||
|
DownloadItem *item = dw->addItem(info["Name"].toString(), info["Filename"].toString(), info["Pkgname"].toString(),
|
||||||
|
iconpixmap, downloadUrl, installExtraArg);
|
||||||
if (item == nullptr)
|
if (item == nullptr)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
@@ -566,11 +627,11 @@ void AppIntoPage::on_pushButton_3_clicked()
|
|||||||
uninstall.waitForFinished(-1);
|
uninstall.waitForFinished(-1);
|
||||||
uninstall.close();
|
uninstall.close();
|
||||||
|
|
||||||
QProcess check;
|
// QProcess check;
|
||||||
check.start("dpkg", QStringList() << "-s" << info["Pkgname"].toString().toLower());
|
// check.start("dpkg", QStringList() << "-s" << info["Pkgname"].toString().toLower());
|
||||||
check.waitForFinished(-1);
|
// check.waitForFinished(-1);
|
||||||
|
|
||||||
if (check.exitCode() != 0 || check.exitStatus() != QProcess::NormalExit)
|
if (uninstall.exitCode() != 0 || uninstall.exitStatus() != QProcess::NormalExit)
|
||||||
{
|
{
|
||||||
ui->downloadButton->setText(tr("Download and Install"));
|
ui->downloadButton->setText(tr("Download and Install"));
|
||||||
ui->pushButton_3->hide();
|
ui->pushButton_3->hide();
|
||||||
@@ -581,7 +642,7 @@ void AppIntoPage::on_pushButton_3_clicked()
|
|||||||
ui->downloadButton->setEnabled(true);
|
ui->downloadButton->setEnabled(true);
|
||||||
ui->pushButton_3->setEnabled(true);
|
ui->pushButton_3->setEnabled(true);
|
||||||
|
|
||||||
check.close();
|
// check.close();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -597,4 +658,4 @@ void AppIntoPage::on_updateButton_clicked()
|
|||||||
{
|
{
|
||||||
QString feedbackURL = "https://bbs.spark-app.store/";
|
QString feedbackURL = "https://bbs.spark-app.store/";
|
||||||
QProcess::startDetached("xdg-open", QStringList{feedbackURL});
|
QProcess::startDetached("xdg-open", QStringList{feedbackURL});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -385,14 +385,20 @@
|
|||||||
</property>
|
</property>
|
||||||
<property name="sizeHint" stdset="0">
|
<property name="sizeHint" stdset="0">
|
||||||
<size>
|
<size>
|
||||||
<width>184</width>
|
<width>13</width>
|
||||||
<height>20</height>
|
<height>37</height>
|
||||||
</size>
|
</size>
|
||||||
</property>
|
</property>
|
||||||
</spacer>
|
</spacer>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QLabel" name="tag_ubuntu">
|
<widget class="CustomLabel" name="tag_ubuntu">
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>40</width>
|
||||||
|
<height>40</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
<property name="maximumSize">
|
<property name="maximumSize">
|
||||||
<size>
|
<size>
|
||||||
<width>40</width>
|
<width>40</width>
|
||||||
@@ -411,7 +417,13 @@
|
|||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QLabel" name="tag_uos">
|
<widget class="CustomLabel" name="tag_uos">
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>40</width>
|
||||||
|
<height>40</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
<property name="maximumSize">
|
<property name="maximumSize">
|
||||||
<size>
|
<size>
|
||||||
<width>40</width>
|
<width>40</width>
|
||||||
@@ -430,7 +442,13 @@
|
|||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QLabel" name="tag_deepin">
|
<widget class="CustomLabel" name="tag_deepin">
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>40</width>
|
||||||
|
<height>40</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
<property name="maximumSize">
|
<property name="maximumSize">
|
||||||
<size>
|
<size>
|
||||||
<width>40</width>
|
<width>40</width>
|
||||||
@@ -449,7 +467,13 @@
|
|||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QLabel" name="tag_debian">
|
<widget class="CustomLabel" name="tag_debian">
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>40</width>
|
||||||
|
<height>40</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
<property name="maximumSize">
|
<property name="maximumSize">
|
||||||
<size>
|
<size>
|
||||||
<width>40</width>
|
<width>40</width>
|
||||||
@@ -467,6 +491,131 @@
|
|||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="CustomLabel" name="tag_native">
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>40</width>
|
||||||
|
<height>40</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="maximumSize">
|
||||||
|
<size>
|
||||||
|
<width>40</width>
|
||||||
|
<height>40</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="toolTip">
|
||||||
|
<string><html><head/><body><p>This app can only be installed natively</p></body></html></string>
|
||||||
|
</property>
|
||||||
|
<property name="whatsThis">
|
||||||
|
<string><html><head/><body><p>This app can only be installed natively</p></body></html></string>
|
||||||
|
</property>
|
||||||
|
<property name="pixmap">
|
||||||
|
<pixmap resource="../assets/assets.qrc">:/tags/native.png</pixmap>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="CustomLabel" name="tag_amber_ce_bookworm">
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>40</width>
|
||||||
|
<height>40</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="maximumSize">
|
||||||
|
<size>
|
||||||
|
<width>40</width>
|
||||||
|
<height>40</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="toolTip">
|
||||||
|
<string><html><head/><body><p>This app will be installed to debian12 ACE</p></body></html></string>
|
||||||
|
</property>
|
||||||
|
<property name="whatsThis">
|
||||||
|
<string><html><head/><body><p>This app will be installed to debian12 ACE</p></body></html></string>
|
||||||
|
</property>
|
||||||
|
<property name="pixmap">
|
||||||
|
<pixmap resource="../assets/assets.qrc">:/tags/amber-ce-bookworm.png</pixmap>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="CustomLabel" name="tag_amber_ce_trixie">
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>40</width>
|
||||||
|
<height>40</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="maximumSize">
|
||||||
|
<size>
|
||||||
|
<width>40</width>
|
||||||
|
<height>40</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="toolTip">
|
||||||
|
<string><html><head/><body><p>This app will be installed to debian13 ACE</p></body></html></string>
|
||||||
|
</property>
|
||||||
|
<property name="whatsThis">
|
||||||
|
<string><html><head/><body><p>This app will be installed to debian13 ACE</p></body></html></string>
|
||||||
|
</property>
|
||||||
|
<property name="pixmap">
|
||||||
|
<pixmap resource="../assets/assets.qrc">:/tags/amber-ce-trixie.png</pixmap>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="CustomLabel" name="tag_amber_ce_sid">
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>40</width>
|
||||||
|
<height>40</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="maximumSize">
|
||||||
|
<size>
|
||||||
|
<width>40</width>
|
||||||
|
<height>40</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="toolTip">
|
||||||
|
<string><html><head/><body><p>This app will be installed to debian SID ACE</p></body></html></string>
|
||||||
|
</property>
|
||||||
|
<property name="whatsThis">
|
||||||
|
<string><html><head/><body><p>This app will be installed to debian SID ACE</p></body></html></string>
|
||||||
|
</property>
|
||||||
|
<property name="pixmap">
|
||||||
|
<pixmap resource="../assets/assets.qrc">:/tags/amber-ce-sid.png</pixmap>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="CustomLabel" name="tag_amber_ce_deepin23">
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>40</width>
|
||||||
|
<height>40</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="maximumSize">
|
||||||
|
<size>
|
||||||
|
<width>40</width>
|
||||||
|
<height>40</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
<property name="toolTip">
|
||||||
|
<string><html><head/><body><p>This app will be installed to deepin23 ACE</p></body></html></string>
|
||||||
|
</property>
|
||||||
|
<property name="whatsThis">
|
||||||
|
<string><html><head/><body><p>This app will be installed to deepin23 ACE</p></body></html></string>
|
||||||
|
</property>
|
||||||
|
<property name="pixmap">
|
||||||
|
<pixmap resource="../assets/assets.qrc">:/tags/amber-ce-deepin.png</pixmap>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<spacer name="horizontalSpacer_5">
|
<spacer name="horizontalSpacer_5">
|
||||||
<property name="orientation">
|
<property name="orientation">
|
||||||
@@ -474,8 +623,8 @@
|
|||||||
</property>
|
</property>
|
||||||
<property name="sizeHint" stdset="0">
|
<property name="sizeHint" stdset="0">
|
||||||
<size>
|
<size>
|
||||||
<width>184</width>
|
<width>18</width>
|
||||||
<height>20</height>
|
<height>37</height>
|
||||||
</size>
|
</size>
|
||||||
</property>
|
</property>
|
||||||
</spacer>
|
</spacer>
|
||||||
@@ -498,7 +647,13 @@
|
|||||||
</spacer>
|
</spacer>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QLabel" name="tag_a2d">
|
<widget class="CustomLabel" name="tag_a2d">
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>40</width>
|
||||||
|
<height>40</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
<property name="maximumSize">
|
<property name="maximumSize">
|
||||||
<size>
|
<size>
|
||||||
<width>40</width>
|
<width>40</width>
|
||||||
@@ -517,7 +672,13 @@
|
|||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QLabel" name="tag_community">
|
<widget class="CustomLabel" name="tag_community">
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>40</width>
|
||||||
|
<height>40</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
<property name="maximumSize">
|
<property name="maximumSize">
|
||||||
<size>
|
<size>
|
||||||
<width>40</width>
|
<width>40</width>
|
||||||
@@ -536,7 +697,13 @@
|
|||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QLabel" name="tag_dtk5">
|
<widget class="CustomLabel" name="tag_dtk5">
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>40</width>
|
||||||
|
<height>40</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
<property name="maximumSize">
|
<property name="maximumSize">
|
||||||
<size>
|
<size>
|
||||||
<width>40</width>
|
<width>40</width>
|
||||||
@@ -555,7 +722,13 @@
|
|||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QLabel" name="tag_dwine2">
|
<widget class="CustomLabel" name="tag_dwine2">
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>40</width>
|
||||||
|
<height>40</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
<property name="maximumSize">
|
<property name="maximumSize">
|
||||||
<size>
|
<size>
|
||||||
<width>40</width>
|
<width>40</width>
|
||||||
@@ -574,7 +747,13 @@
|
|||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
<item>
|
<item>
|
||||||
<widget class="QLabel" name="tag_dwine5">
|
<widget class="CustomLabel" name="tag_dwine5">
|
||||||
|
<property name="minimumSize">
|
||||||
|
<size>
|
||||||
|
<width>40</width>
|
||||||
|
<height>40</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
<property name="maximumSize">
|
<property name="maximumSize">
|
||||||
<size>
|
<size>
|
||||||
<width>40</width>
|
<width>40</width>
|
||||||
@@ -718,7 +897,7 @@
|
|||||||
<rect>
|
<rect>
|
||||||
<x>0</x>
|
<x>0</x>
|
||||||
<y>0</y>
|
<y>0</y>
|
||||||
<width>524</width>
|
<width>482</width>
|
||||||
<height>601</height>
|
<height>601</height>
|
||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
@@ -1452,6 +1631,13 @@ QListWidget::item::selected
|
|||||||
</item>
|
</item>
|
||||||
</layout>
|
</layout>
|
||||||
</widget>
|
</widget>
|
||||||
|
<customwidgets>
|
||||||
|
<customwidget>
|
||||||
|
<class>CustomLabel</class>
|
||||||
|
<extends>QLabel</extends>
|
||||||
|
<header>widgets/common/customlabel.h</header>
|
||||||
|
</customwidget>
|
||||||
|
</customwidgets>
|
||||||
<resources>
|
<resources>
|
||||||
<include location="../assets/assets.qrc"/>
|
<include location="../assets/assets.qrc"/>
|
||||||
</resources>
|
</resources>
|
||||||
|
|||||||
@@ -47,6 +47,7 @@ SOURCES += \
|
|||||||
utils/utils.cpp \
|
utils/utils.cpp \
|
||||||
utils/widgetanimation.cpp \
|
utils/widgetanimation.cpp \
|
||||||
widgets/base/basewidgetopacity.cpp \
|
widgets/base/basewidgetopacity.cpp \
|
||||||
|
widgets/common/customlabel.cpp \
|
||||||
widgets/common/downloaditem.cpp \
|
widgets/common/downloaditem.cpp \
|
||||||
widgets/common/progressbutton.cpp \
|
widgets/common/progressbutton.cpp \
|
||||||
widgets/common/smoothlistwidget.cpp \
|
widgets/common/smoothlistwidget.cpp \
|
||||||
@@ -73,6 +74,7 @@ HEADERS += \
|
|||||||
utils/utils.h \
|
utils/utils.h \
|
||||||
utils/widgetanimation.h \
|
utils/widgetanimation.h \
|
||||||
widgets/base/basewidgetopacity.h \
|
widgets/base/basewidgetopacity.h \
|
||||||
|
widgets/common/customlabel.h \
|
||||||
widgets/common/downloaditem.h \
|
widgets/common/downloaditem.h \
|
||||||
widgets/common/progressbutton.h \
|
widgets/common/progressbutton.h \
|
||||||
widgets/common/smoothlistwidget.h \
|
widgets/common/smoothlistwidget.h \
|
||||||
|
|||||||
24
src/widgets/common/customlabel.cpp
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
#include "customlabel.h"
|
||||||
|
#include <QGuiApplication>
|
||||||
|
|
||||||
|
CustomLabel::CustomLabel(QWidget *parent, Qt::WindowFlags f)
|
||||||
|
: QLabel(parent, f)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
QPixmap CustomLabel::pixmap() const
|
||||||
|
{
|
||||||
|
const QPixmap *p = QLabel::pixmap();
|
||||||
|
return p ? *p : QPixmap();
|
||||||
|
}
|
||||||
|
|
||||||
|
void CustomLabel::setPixmap(const QPixmap &pixmap)
|
||||||
|
{
|
||||||
|
QPixmap _pixmap = pixmap;
|
||||||
|
_pixmap.setDevicePixelRatio(qApp->devicePixelRatio());
|
||||||
|
_pixmap = _pixmap.scaled(size() * _pixmap.devicePixelRatio(),
|
||||||
|
Qt::KeepAspectRatio,
|
||||||
|
Qt::SmoothTransformation);
|
||||||
|
|
||||||
|
QLabel::setPixmap(_pixmap);
|
||||||
|
}
|
||||||
19
src/widgets/common/customlabel.h
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
#ifndef CUSTOMLABEL_H
|
||||||
|
#define CUSTOMLABEL_H
|
||||||
|
|
||||||
|
#include <QLabel>
|
||||||
|
|
||||||
|
class CustomLabel : public QLabel
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
Q_PROPERTY(QPixmap pixmap READ pixmap WRITE setPixmap)
|
||||||
|
|
||||||
|
public:
|
||||||
|
explicit CustomLabel(QWidget *parent = nullptr,
|
||||||
|
Qt::WindowFlags f = Qt::WindowFlags());
|
||||||
|
|
||||||
|
virtual QPixmap pixmap() const;
|
||||||
|
virtual void setPixmap(const QPixmap &pixmap);
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // CUSTOMLABEL_H
|
||||||
@@ -175,8 +175,16 @@ void DownloadItem::slotAsyncInstall(int t)
|
|||||||
switch (t)
|
switch (t)
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
installer.start("pkexec", QStringList() << "/usr/local/bin/ssinstall"
|
{
|
||||||
<< "/tmp/spark-store/" + ui->label_filename->text().toUtf8() << "--delete-after-install");
|
QStringList args;
|
||||||
|
args << "/usr/local/bin/ssinstall"
|
||||||
|
<< "/tmp/spark-store/" + ui->label_filename->text().toUtf8();
|
||||||
|
if (!installExtraArg.isEmpty()) {
|
||||||
|
args << installExtraArg;
|
||||||
|
}
|
||||||
|
args << "--delete-after-install";
|
||||||
|
installer.start("pkexec", args);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
installer.start("deepin-deb-installer", QStringList() << "/tmp/spark-store/" + ui->label_filename->text().toUtf8());
|
installer.start("deepin-deb-installer", QStringList() << "/tmp/spark-store/" + ui->label_filename->text().toUtf8());
|
||||||
@@ -208,11 +216,11 @@ void DownloadItem::slotAsyncInstall(int t)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
QProcess isInstall;
|
// QProcess isInstall;
|
||||||
isInstall.start("dpkg", QStringList() << "-s" << pkgName);
|
// isInstall.start("dpkg", QStringList() << "-s" << pkgName);
|
||||||
isInstall.waitForFinished(180 * 1000); // 默认超时 3 分钟
|
// isInstall.waitForFinished(180 * 1000); // 默认超时 3 分钟
|
||||||
int error = QString::fromStdString(isInstall.readAllStandardError().toStdString()).length();
|
// int error = QString::fromStdString(isInstall.readAllStandardError().toStdString()).length();
|
||||||
if (error == 0 && !haveError)
|
if ( !haveError)
|
||||||
{
|
{
|
||||||
ui->pushButton_install->hide();
|
ui->pushButton_install->hide();
|
||||||
Utils::sendNotification("spark-store", tr("Spark Store"), ui->label->text() + " " + tr("Installation complete."));
|
Utils::sendNotification("spark-store", tr("Spark Store"), ui->label->text() + " " + tr("Installation complete."));
|
||||||
@@ -244,8 +252,5 @@ void DownloadItem::slotAsyncInstall(int t)
|
|||||||
ui->widget_spinner->hide();
|
ui->widget_spinner->hide();
|
||||||
DownloadItem::isInstall = false;
|
DownloadItem::isInstall = false;
|
||||||
|
|
||||||
installer.deleteLater();
|
emit finished(!haveError && !notRoot);
|
||||||
isInstall.deleteLater();
|
|
||||||
|
|
||||||
emit finished(error == 0 && !haveError && !notRoot);
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -43,6 +43,9 @@ public:
|
|||||||
|
|
||||||
void install(int);
|
void install(int);
|
||||||
|
|
||||||
|
// 新增:安装时额外参数
|
||||||
|
QString installExtraArg;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Ui::DownloadItem *ui;
|
Ui::DownloadItem *ui;
|
||||||
|
|
||||||
|
|||||||
@@ -85,7 +85,9 @@ void DownloadListWidget::clearItem()
|
|||||||
ui->listWidget->clear();
|
ui->listWidget->clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
DownloadItem* DownloadListWidget::addItem(QString name, QString fileName, QString pkgName, const QPixmap icon, QString downloadurl)
|
DownloadItem* DownloadListWidget::addItem(QString name, QString fileName, QString pkgName,
|
||||||
|
const QPixmap icon, QString downloadurl,
|
||||||
|
const QString &installExtraArg)
|
||||||
{
|
{
|
||||||
if (fileName.isEmpty())
|
if (fileName.isEmpty())
|
||||||
{
|
{
|
||||||
@@ -104,6 +106,7 @@ DownloadItem* DownloadListWidget::addItem(QString name, QString fileName, QStrin
|
|||||||
di->setName(name);
|
di->setName(name);
|
||||||
di->setFileName(fileName);
|
di->setFileName(fileName);
|
||||||
di->pkgName = pkgName;
|
di->pkgName = pkgName;
|
||||||
|
di->installExtraArg = installExtraArg;
|
||||||
di->seticon(icon);
|
di->seticon(icon);
|
||||||
QListWidgetItem *pItem = new QListWidgetItem();
|
QListWidgetItem *pItem = new QListWidgetItem();
|
||||||
pItem->setSizeHint(QSize(240, 56)); // ui 中单个 downloaditem 高度固定 56px(上下 margin 8px,图片固定 48x48)
|
pItem->setSizeHint(QSize(240, 56)); // ui 中单个 downloaditem 高度固定 56px(上下 margin 8px,图片固定 48x48)
|
||||||
|
|||||||
@@ -19,7 +19,9 @@ class DownloadListWidget : public DBlurEffectWidget
|
|||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
DownloadItem *addItem(QString name, QString fileName, QString pkgName, const QPixmap icon, QString downloadurl);
|
DownloadItem *addItem(QString name, QString fileName, QString pkgName,
|
||||||
|
const QPixmap icon, QString downloadurl,
|
||||||
|
const QString &installExtraArg);
|
||||||
int nowDownload = 0;
|
int nowDownload = 0;
|
||||||
int allDownload = 0;
|
int allDownload = 0;
|
||||||
int toDownload = 0;
|
int toDownload = 0;
|
||||||
|
|||||||
282
tool/ssaudit
@@ -2,7 +2,7 @@
|
|||||||
# 初始化常量和全局变量
|
# 初始化常量和全局变量
|
||||||
readonly SPARK_DOWNLOAD_SERVER_URL="https://d.spark-app.store/"
|
readonly SPARK_DOWNLOAD_SERVER_URL="https://d.spark-app.store/"
|
||||||
readonly SPARK_DOWNLOAD_SERVER_URL_NO_PROTOCOL="d.spark-app.store"
|
readonly SPARK_DOWNLOAD_SERVER_URL_NO_PROTOCOL="d.spark-app.store"
|
||||||
# ACE环境配置 - 修改此数组即可添加或删除支持的环境
|
# ACE环境配置 - 修改此数组即可添加或删除支持的环境——记得修改 store-helper 里的 uninstaller check-is-installed 和 ss-launcher
|
||||||
readonly ACE_ENVIRONMENTS=(
|
readonly ACE_ENVIRONMENTS=(
|
||||||
"bookworm-run:amber-ce-bookworm"
|
"bookworm-run:amber-ce-bookworm"
|
||||||
"trixie-run:amber-ce-trixie"
|
"trixie-run:amber-ce-trixie"
|
||||||
@@ -13,6 +13,30 @@ readonly ACE_ENVIRONMENTS_FOR_AUTOINSTALL=(
|
|||||||
"bookworm-run:amber-ce-bookworm"
|
"bookworm-run:amber-ce-bookworm"
|
||||||
"trixie-run:amber-ce-trixie"
|
"trixie-run:amber-ce-trixie"
|
||||||
)
|
)
|
||||||
|
function get_current_user() {
|
||||||
|
# 优先通过 who 命令获取用户
|
||||||
|
local user
|
||||||
|
user=$(who | awk '{print $1}' | head -n 1 2>/dev/null)
|
||||||
|
|
||||||
|
# 如果 who 无输出,则通过 loginctl 获取
|
||||||
|
if [[ -z "$user" ]]; then
|
||||||
|
user=$(loginctl list-sessions --no-legend 2>/dev/null | awk '{print $3}' | head -n 1)
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 返回最终结果(可能为空)
|
||||||
|
echo "${user}"
|
||||||
|
}
|
||||||
|
|
||||||
|
function zenity() {
|
||||||
|
local user=$(get_current_user)
|
||||||
|
local uid=$(id -u "$user")
|
||||||
|
sudo -u "$user" DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/"$uid"/bus zenity "$@"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# 全局变量初始化(位于 parse_args 前)
|
||||||
|
ACE_PARAMS=()
|
||||||
|
|
||||||
# 生成ACE环境参数帮助信息
|
# 生成ACE环境参数帮助信息
|
||||||
function generate_ace_help() {
|
function generate_ace_help() {
|
||||||
local help_text=""
|
local help_text=""
|
||||||
@@ -42,7 +66,7 @@ case $(arch) in
|
|||||||
esac
|
esac
|
||||||
# 帮助函数
|
# 帮助函数
|
||||||
function show_help() {
|
function show_help() {
|
||||||
echo "Spark Store Audit script. 星火商店审核脚本"
|
echo "Spark Store Anstall script. 星火商店审核脚本"
|
||||||
echo "用法: $0 [选项] <deb路径>"
|
echo "用法: $0 [选项] <deb路径>"
|
||||||
echo "选项:"
|
echo "选项:"
|
||||||
echo " -h, --help 显示帮助信息"
|
echo " -h, --help 显示帮助信息"
|
||||||
@@ -54,51 +78,53 @@ function show_help() {
|
|||||||
}
|
}
|
||||||
# 参数解析
|
# 参数解析
|
||||||
function parse_args() {
|
function parse_args() {
|
||||||
while [ $# -gt 0 ]; do
|
while [ $# -gt 0 ]; do
|
||||||
case "$1" in
|
case "$1" in
|
||||||
-h|--help)
|
-h|--help)
|
||||||
show_help
|
show_help
|
||||||
exit 0
|
exit 0
|
||||||
;;
|
;;
|
||||||
--delete-after-install)
|
--delete-after-install)
|
||||||
DELETE_AFTER_INSTALL="1"
|
DELETE_AFTER_INSTALL="1"
|
||||||
shift
|
shift
|
||||||
;;
|
;;
|
||||||
--native)
|
--native)
|
||||||
FORCE_NATIVE="1"
|
FORCE_NATIVE="1"
|
||||||
shift
|
shift
|
||||||
;;
|
;;
|
||||||
--no-create-desktop-entry)
|
--no-create-desktop-entry)
|
||||||
NO_CREATE_DESKTOP="1"
|
NO_CREATE_DESKTOP="1"
|
||||||
shift
|
shift
|
||||||
;;
|
;;
|
||||||
--force-create-desktop-entry)
|
--force-create-desktop-entry)
|
||||||
FORCE_CREATE_DESKTOP="1"
|
FORCE_CREATE_DESKTOP="1"
|
||||||
shift
|
shift
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
# 检查是否为ACE环境参数
|
# 检查是否为ACE环境参数
|
||||||
local is_ace_param=0
|
local is_ace_param=0
|
||||||
for ace_entry in "${ACE_ENVIRONMENTS[@]}"; do
|
for ace_entry in "${ACE_ENVIRONMENTS[@]}"; do
|
||||||
local ace_param="--${ace_entry#*:}"
|
local ace_param="--${ace_entry#*:}"
|
||||||
if [ "$1" = "$ace_param" ]; then
|
if [ "$1" = "$ace_param" ]; then
|
||||||
FORCE_ACE_ENV="${ace_entry%%:*}"
|
# 将ACE环境命令名加入数组
|
||||||
is_ace_param=1
|
ACE_PARAMS+=("${ace_entry%%:*}")
|
||||||
shift
|
is_ace_param=1
|
||||||
break
|
shift
|
||||||
fi
|
break
|
||||||
done
|
fi
|
||||||
|
done
|
||||||
# 如果不是ACE参数,则视为DEB路径
|
|
||||||
if [ "$is_ace_param" -eq 0 ]; then
|
# 如果不是ACE环境参数,则视为DEB路径
|
||||||
DEBPATH="$1"
|
if [ "$is_ace_param" -eq 0 ]; then
|
||||||
shift
|
DEBPATH="$1"
|
||||||
fi
|
shift
|
||||||
;;
|
fi
|
||||||
esac
|
;;
|
||||||
done
|
esac
|
||||||
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
# 验证当前用户
|
# 验证当前用户
|
||||||
function validate_user() {
|
function validate_user() {
|
||||||
if [ "$(id -u)" != "0" ]; then
|
if [ "$(id -u)" != "0" ]; then
|
||||||
@@ -253,6 +279,10 @@ function install_in_ace_env() {
|
|||||||
local deb_path="$2"
|
local deb_path="$2"
|
||||||
local ace_env_pkg="${3#*:}"
|
local ace_env_pkg="${3#*:}"
|
||||||
|
|
||||||
|
if [ "$IS_ACE_ENV" != "" ] || command -v termux-chroot; then
|
||||||
|
echo "无法在ACE/termux/小小电脑中安装ACE包"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
if ! ensure_ace_env "$ace_env_pkg"; then
|
if ! ensure_ace_env "$ace_env_pkg"; then
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
@@ -260,37 +290,47 @@ function install_in_ace_env() {
|
|||||||
echo "----------------------------------------"
|
echo "----------------------------------------"
|
||||||
echo "正在尝试使用 $ace_cmd 环境安装..."
|
echo "正在尝试使用 $ace_cmd 环境安装..."
|
||||||
echo "----------------------------------------"
|
echo "----------------------------------------"
|
||||||
|
$ace_cmd "ensure_aptss_exist"
|
||||||
# 在ACE环境中执行安装
|
|
||||||
if $ace_cmd "ensure_aptss_exist && { dpkg -i '$deb_path' || aptss install '$deb_path' -yfq; }"; then
|
# 首先尝试dry-run测试
|
||||||
return 0
|
if ! $ace_cmd "aptss install --dry-run '$deb_path'"; then
|
||||||
else
|
echo "初始dry-run测试失败,尝试更新后重试..."
|
||||||
# 如果第一次安装失败,执行aptss update后再试一次
|
|
||||||
echo "第一次安装失败,正在更新仓库信息后重试..."
|
|
||||||
$ace_cmd "aptss update"
|
$ace_cmd "aptss update"
|
||||||
if $ace_cmd "dpkg -i '$deb_path' || aptss install '$deb_path' -yfq"; then
|
if ! $ace_cmd "aptss install --dry-run '$deb_path'"; then
|
||||||
return 0
|
echo "dry-run测试仍然失败,放弃安装"
|
||||||
else
|
echo "OMG_IT_GOES_WRONG"
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# dry-run成功后执行实际安装
|
||||||
|
$ace_cmd "aptss install store.spark-app.app-runtime-base --no-install-recommends -yfq"
|
||||||
|
if $ace_cmd "dpkg -i '$deb_path' || aptss install '$deb_path' -yfq"; then
|
||||||
|
return 0
|
||||||
|
else
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# 在主机安装
|
# 在主机安装
|
||||||
function install_in_host() {
|
function install_in_host() {
|
||||||
local deb_path="$1"
|
local deb_path="$1"
|
||||||
|
|
||||||
|
# 首先尝试dry-run测试
|
||||||
|
if ! aptss install --dry-run "$deb_path"; then
|
||||||
|
echo "初始dry-run测试失败,尝试更新后重试..."
|
||||||
|
aptss update
|
||||||
|
if ! aptss install --dry-run "$deb_path"; then
|
||||||
|
echo "dry-run测试仍然失败,放弃安装"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# dry-run成功后执行实际安装
|
||||||
if dpkg -i "$deb_path" || aptss install "$deb_path" -yfq; then
|
if dpkg -i "$deb_path" || aptss install "$deb_path" -yfq; then
|
||||||
return 0
|
return 0
|
||||||
else
|
else
|
||||||
# 如果第一次安装失败,执行aptss update后再试一次
|
return 1
|
||||||
echo "第一次安装失败,正在更新仓库信息后重试..."
|
|
||||||
aptss update
|
|
||||||
if dpkg -i "$deb_path" || aptss install "$deb_path" -yfq; then
|
|
||||||
return 0
|
|
||||||
else
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -300,11 +340,12 @@ function auto_try_install() {
|
|||||||
|
|
||||||
# 首先尝试在主机安装
|
# 首先尝试在主机安装
|
||||||
if install_in_host "$deb_path"; then
|
if install_in_host "$deb_path"; then
|
||||||
|
create_desktop_file
|
||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# 如果主机安装失败且不在强制本地模式,尝试ACE环境
|
# 如果主机安装失败,并非在ACE内运行且不在强制本地模式,尝试ACE环境
|
||||||
if [ "$FORCE_NATIVE" -eq 0 ]; then
|
if [ "$FORCE_NATIVE" -eq 0 ] && [ "$IS_ACE_ENV" = "" ] && ! command -v termux-chroot; then
|
||||||
for ace_entry in "${ACE_ENVIRONMENTS_FOR_AUTOINSTALL[@]}"; do
|
for ace_entry in "${ACE_ENVIRONMENTS_FOR_AUTOINSTALL[@]}"; do
|
||||||
local ace_cmd=${ace_entry%%:*}
|
local ace_cmd=${ace_entry%%:*}
|
||||||
local ace_env_pkg=${ace_entry#*:}
|
local ace_env_pkg=${ace_entry#*:}
|
||||||
@@ -322,7 +363,6 @@ function auto_try_install() {
|
|||||||
|
|
||||||
return 1
|
return 1
|
||||||
}
|
}
|
||||||
|
|
||||||
# 清理安装后的文件
|
# 清理安装后的文件
|
||||||
function post_install_cleanup() {
|
function post_install_cleanup() {
|
||||||
local success=$1
|
local success=$1
|
||||||
@@ -380,7 +420,9 @@ function lock_file() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function unlock_file() {
|
function unlock_file() {
|
||||||
|
if [ -e "$1" ];then
|
||||||
chattr -i "$1"
|
chattr -i "$1"
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# 主安装流程
|
# 主安装流程
|
||||||
@@ -402,52 +444,76 @@ function main_install() {
|
|||||||
DEBPATH=$(realpath "$DEBPATH")
|
DEBPATH=$(realpath "$DEBPATH")
|
||||||
lock_file "$DEBPATH"
|
lock_file "$DEBPATH"
|
||||||
|
|
||||||
# hash_check "$DEBPATH"
|
|
||||||
#
|
|
||||||
# if [ -z "$IS_SHA512SUM_CHECKED" ]; then
|
|
||||||
# echo "尝试更新仓库信息重新校验"
|
|
||||||
# aptss ssupdate
|
|
||||||
# hash_check "$DEBPATH"
|
|
||||||
# if [ -z "$IS_SHA512SUM_CHECKED" ]; then
|
|
||||||
# echo -e "$TRANSHELL_CONTENT_HASH_CHECK_FAILED"
|
|
||||||
# zenity --info --icon-name=spark-store --height 270 --width 500 --text "$TRANSHELL_CONTENT_HASH_CHECK_FAILED"
|
|
||||||
# echo "OMG-IT-GOES-WRONG"
|
|
||||||
# exit 1
|
|
||||||
# fi
|
|
||||||
# fi
|
|
||||||
|
|
||||||
package_name=$(dpkg-deb -f "$DEBPATH" Package)
|
package_name=$(dpkg-deb -f "$DEBPATH" Package)
|
||||||
local install_success=1
|
local install_success=1
|
||||||
|
if [ "$FORCE_NATIVE" -eq 1 ] || [ "$IS_ACE_ENV" = "1" ]; then
|
||||||
if [ -n "$FORCE_ACE_ENV" ]; then
|
# 优先使用主机安装,忽略所有ACE参数
|
||||||
# 查找对应的ACE环境包名
|
echo "忽略ACE,使用主机安装 $package_name"
|
||||||
local ace_env_pkg=""
|
install_in_host "$DEBPATH"
|
||||||
for ace_entry in "${ACE_ENVIRONMENTS[@]}"; do
|
install_success=$?
|
||||||
if [ "${ace_entry%%:*}" = "$FORCE_ACE_ENV" ]; then
|
# 安装成功后在主机创建桌面快捷方式
|
||||||
ace_env_pkg="${ace_entry#*:}"
|
if [ "$install_success" -eq 0 ]; then
|
||||||
break
|
create_desktop_file
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
# 强制使用指定的ACE环境安装
|
|
||||||
if command -v "$FORCE_ACE_ENV" >/dev/null 2>&1; then
|
|
||||||
install_in_ace_env "$FORCE_ACE_ENV" "$DEBPATH" "$ace_env_pkg"
|
|
||||||
install_success=$?
|
|
||||||
if [ "$install_success" -eq 0 ]; then
|
|
||||||
create_desktop_in_ace "$FORCE_ACE_ENV" "$package_name"
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
echo "指定的ACE环境 $FORCE_ACE_ENV 不可用"
|
|
||||||
echo "OMG-IT-GOES-WRONG"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
# 自动选择安装方式
|
|
||||||
auto_try_install "$DEBPATH"
|
|
||||||
install_success=$?
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
post_install_cleanup "$install_success" "$DEBPATH" "$package_name"
|
elif [ ${#ACE_PARAMS[@]} -gt 0 ] && [ "$IS_ACE_ENV" = "" ]; then
|
||||||
|
# 用户指定了一个或多个ACE环境,且未要求原生安装
|
||||||
|
echo "使用ACE环境安装,已指定环境: ${ACE_PARAMS[*]}"
|
||||||
|
|
||||||
|
# 查找第一个已安装的ACE环境
|
||||||
|
chosen_env=""
|
||||||
|
for env_cmd in "${ACE_PARAMS[@]}"; do
|
||||||
|
if command -v "$env_cmd" >/dev/null 2>&1; then
|
||||||
|
chosen_env="$env_cmd"
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
# 如果没有安装任何环境,则使用第一个指定的环境
|
||||||
|
if [ -z "$chosen_env" ]; then
|
||||||
|
chosen_env="${ACE_PARAMS[0]}"
|
||||||
|
echo "未发现已安装的ACE环境,准备安装 $chosen_env..."
|
||||||
|
# 查找对应的ACE环境软件包名
|
||||||
|
for ace_entry in "${ACE_ENVIRONMENTS[@]}"; do
|
||||||
|
if [ "${ace_entry%%:*}" = "$chosen_env" ]; then
|
||||||
|
ace_pkg="${ace_entry#*:}"
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
# 安装ACE环境(示例使用aptss工具,可根据实际情况调整)
|
||||||
|
ensure_ace_env "$ace_pkg" -y
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 再次确认ACE环境命令是否可用
|
||||||
|
if command -v "$chosen_env" >/dev/null 2>&1; then
|
||||||
|
# 查找软件包名(仅首次查找即可)
|
||||||
|
for ace_entry in "${ACE_ENVIRONMENTS[@]}"; do
|
||||||
|
if [ "${ace_entry%%:*}" = "$chosen_env" ]; then
|
||||||
|
ace_pkg="${ace_entry#*:}"
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
echo "在 ACE 环境 $chosen_env 中安装 $package_name"
|
||||||
|
install_in_ace_env "$chosen_env" "$DEBPATH" "$ace_pkg"
|
||||||
|
install_success=$?
|
||||||
|
if [ "$install_success" -eq 0 ]; then
|
||||||
|
create_desktop_in_ace "$chosen_env" "$package_name"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "指定的ACE环境 $chosen_env 不可用"
|
||||||
|
echo "OMG-IT-GOES-WRONG"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
else
|
||||||
|
# 未指定ACE环境和--native,使用自动安装逻辑(先主机再ACE)
|
||||||
|
echo "自动选择安装方式"
|
||||||
|
auto_try_install "$DEBPATH"
|
||||||
|
install_success=$?
|
||||||
|
fi
|
||||||
|
|
||||||
|
post_install_cleanup "$install_success" "$DEBPATH" "$package_name"
|
||||||
}
|
}
|
||||||
|
|
||||||
# 执行主函数
|
# 执行主函数
|
||||||
|
|||||||
266
tool/ssinstall
@@ -2,7 +2,7 @@
|
|||||||
# 初始化常量和全局变量
|
# 初始化常量和全局变量
|
||||||
readonly SPARK_DOWNLOAD_SERVER_URL="https://d.spark-app.store/"
|
readonly SPARK_DOWNLOAD_SERVER_URL="https://d.spark-app.store/"
|
||||||
readonly SPARK_DOWNLOAD_SERVER_URL_NO_PROTOCOL="d.spark-app.store"
|
readonly SPARK_DOWNLOAD_SERVER_URL_NO_PROTOCOL="d.spark-app.store"
|
||||||
# ACE环境配置 - 修改此数组即可添加或删除支持的环境
|
# ACE环境配置 - 修改此数组即可添加或删除支持的环境——记得修改 store-helper 里的 uninstaller check-is-installed 和 ss-launcher
|
||||||
readonly ACE_ENVIRONMENTS=(
|
readonly ACE_ENVIRONMENTS=(
|
||||||
"bookworm-run:amber-ce-bookworm"
|
"bookworm-run:amber-ce-bookworm"
|
||||||
"trixie-run:amber-ce-trixie"
|
"trixie-run:amber-ce-trixie"
|
||||||
@@ -13,6 +13,30 @@ readonly ACE_ENVIRONMENTS_FOR_AUTOINSTALL=(
|
|||||||
"bookworm-run:amber-ce-bookworm"
|
"bookworm-run:amber-ce-bookworm"
|
||||||
"trixie-run:amber-ce-trixie"
|
"trixie-run:amber-ce-trixie"
|
||||||
)
|
)
|
||||||
|
function get_current_user() {
|
||||||
|
# 优先通过 who 命令获取用户
|
||||||
|
local user
|
||||||
|
user=$(who | awk '{print $1}' | head -n 1 2>/dev/null)
|
||||||
|
|
||||||
|
# 如果 who 无输出,则通过 loginctl 获取
|
||||||
|
if [[ -z "$user" ]]; then
|
||||||
|
user=$(loginctl list-sessions --no-legend 2>/dev/null | awk '{print $3}' | head -n 1)
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 返回最终结果(可能为空)
|
||||||
|
echo "${user}"
|
||||||
|
}
|
||||||
|
|
||||||
|
function zenity() {
|
||||||
|
local user=$(get_current_user)
|
||||||
|
local uid=$(id -u "$user")
|
||||||
|
sudo -u "$user" DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/"$uid"/bus zenity "$@"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# 全局变量初始化(位于 parse_args 前)
|
||||||
|
ACE_PARAMS=()
|
||||||
|
|
||||||
# 生成ACE环境参数帮助信息
|
# 生成ACE环境参数帮助信息
|
||||||
function generate_ace_help() {
|
function generate_ace_help() {
|
||||||
local help_text=""
|
local help_text=""
|
||||||
@@ -54,51 +78,53 @@ function show_help() {
|
|||||||
}
|
}
|
||||||
# 参数解析
|
# 参数解析
|
||||||
function parse_args() {
|
function parse_args() {
|
||||||
while [ $# -gt 0 ]; do
|
while [ $# -gt 0 ]; do
|
||||||
case "$1" in
|
case "$1" in
|
||||||
-h|--help)
|
-h|--help)
|
||||||
show_help
|
show_help
|
||||||
exit 0
|
exit 0
|
||||||
;;
|
;;
|
||||||
--delete-after-install)
|
--delete-after-install)
|
||||||
DELETE_AFTER_INSTALL="1"
|
DELETE_AFTER_INSTALL="1"
|
||||||
shift
|
shift
|
||||||
;;
|
;;
|
||||||
--native)
|
--native)
|
||||||
FORCE_NATIVE="1"
|
FORCE_NATIVE="1"
|
||||||
shift
|
shift
|
||||||
;;
|
;;
|
||||||
--no-create-desktop-entry)
|
--no-create-desktop-entry)
|
||||||
NO_CREATE_DESKTOP="1"
|
NO_CREATE_DESKTOP="1"
|
||||||
shift
|
shift
|
||||||
;;
|
;;
|
||||||
--force-create-desktop-entry)
|
--force-create-desktop-entry)
|
||||||
FORCE_CREATE_DESKTOP="1"
|
FORCE_CREATE_DESKTOP="1"
|
||||||
shift
|
shift
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
# 检查是否为ACE环境参数
|
# 检查是否为ACE环境参数
|
||||||
local is_ace_param=0
|
local is_ace_param=0
|
||||||
for ace_entry in "${ACE_ENVIRONMENTS[@]}"; do
|
for ace_entry in "${ACE_ENVIRONMENTS[@]}"; do
|
||||||
local ace_param="--${ace_entry#*:}"
|
local ace_param="--${ace_entry#*:}"
|
||||||
if [ "$1" = "$ace_param" ]; then
|
if [ "$1" = "$ace_param" ]; then
|
||||||
FORCE_ACE_ENV="${ace_entry%%:*}"
|
# 将ACE环境命令名加入数组
|
||||||
is_ace_param=1
|
ACE_PARAMS+=("${ace_entry%%:*}")
|
||||||
shift
|
is_ace_param=1
|
||||||
break
|
shift
|
||||||
fi
|
break
|
||||||
done
|
fi
|
||||||
|
done
|
||||||
# 如果不是ACE参数,则视为DEB路径
|
|
||||||
if [ "$is_ace_param" -eq 0 ]; then
|
# 如果不是ACE环境参数,则视为DEB路径
|
||||||
DEBPATH="$1"
|
if [ "$is_ace_param" -eq 0 ]; then
|
||||||
shift
|
DEBPATH="$1"
|
||||||
fi
|
shift
|
||||||
;;
|
fi
|
||||||
esac
|
;;
|
||||||
done
|
esac
|
||||||
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
# 验证当前用户
|
# 验证当前用户
|
||||||
function validate_user() {
|
function validate_user() {
|
||||||
if [ "$(id -u)" != "0" ]; then
|
if [ "$(id -u)" != "0" ]; then
|
||||||
@@ -253,6 +279,10 @@ function install_in_ace_env() {
|
|||||||
local deb_path="$2"
|
local deb_path="$2"
|
||||||
local ace_env_pkg="${3#*:}"
|
local ace_env_pkg="${3#*:}"
|
||||||
|
|
||||||
|
if [ "$IS_ACE_ENV" != "" ] || command -v termux-chroot; then
|
||||||
|
echo "无法在ACE/termux/小小电脑中安装ACE包"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
if ! ensure_ace_env "$ace_env_pkg"; then
|
if ! ensure_ace_env "$ace_env_pkg"; then
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
@@ -260,37 +290,47 @@ function install_in_ace_env() {
|
|||||||
echo "----------------------------------------"
|
echo "----------------------------------------"
|
||||||
echo "正在尝试使用 $ace_cmd 环境安装..."
|
echo "正在尝试使用 $ace_cmd 环境安装..."
|
||||||
echo "----------------------------------------"
|
echo "----------------------------------------"
|
||||||
|
$ace_cmd "ensure_aptss_exist"
|
||||||
# 在ACE环境中执行安装
|
|
||||||
if $ace_cmd "ensure_aptss_exist && { dpkg -i '$deb_path' || aptss install '$deb_path' -yfq; }"; then
|
# 首先尝试dry-run测试
|
||||||
return 0
|
if ! $ace_cmd "aptss install --dry-run '$deb_path'"; then
|
||||||
else
|
echo "初始dry-run测试失败,尝试更新后重试..."
|
||||||
# 如果第一次安装失败,执行aptss update后再试一次
|
|
||||||
echo "第一次安装失败,正在更新仓库信息后重试..."
|
|
||||||
$ace_cmd "aptss update"
|
$ace_cmd "aptss update"
|
||||||
if $ace_cmd "dpkg -i '$deb_path' || aptss install '$deb_path' -yfq"; then
|
if ! $ace_cmd "aptss install --dry-run '$deb_path'"; then
|
||||||
return 0
|
echo "dry-run测试仍然失败,放弃安装"
|
||||||
else
|
echo "OMG_IT_GOES_WRONG"
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# dry-run成功后执行实际安装
|
||||||
|
$ace_cmd "aptss install store.spark-app.app-runtime-base --no-install-recommends -yfq"
|
||||||
|
if $ace_cmd "dpkg -i '$deb_path' || aptss install '$deb_path' -yfq"; then
|
||||||
|
return 0
|
||||||
|
else
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# 在主机安装
|
# 在主机安装
|
||||||
function install_in_host() {
|
function install_in_host() {
|
||||||
local deb_path="$1"
|
local deb_path="$1"
|
||||||
|
|
||||||
|
# 首先尝试dry-run测试
|
||||||
|
if ! aptss install --dry-run "$deb_path"; then
|
||||||
|
echo "初始dry-run测试失败,尝试更新后重试..."
|
||||||
|
aptss update
|
||||||
|
if ! aptss install --dry-run "$deb_path"; then
|
||||||
|
echo "dry-run测试仍然失败,放弃安装"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# dry-run成功后执行实际安装
|
||||||
if dpkg -i "$deb_path" || aptss install "$deb_path" -yfq; then
|
if dpkg -i "$deb_path" || aptss install "$deb_path" -yfq; then
|
||||||
return 0
|
return 0
|
||||||
else
|
else
|
||||||
# 如果第一次安装失败,执行aptss update后再试一次
|
return 1
|
||||||
echo "第一次安装失败,正在更新仓库信息后重试..."
|
|
||||||
aptss update
|
|
||||||
if dpkg -i "$deb_path" || aptss install "$deb_path" -yfq; then
|
|
||||||
return 0
|
|
||||||
else
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -300,11 +340,12 @@ function auto_try_install() {
|
|||||||
|
|
||||||
# 首先尝试在主机安装
|
# 首先尝试在主机安装
|
||||||
if install_in_host "$deb_path"; then
|
if install_in_host "$deb_path"; then
|
||||||
|
create_desktop_file
|
||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# 如果主机安装失败且不在强制本地模式,尝试ACE环境
|
# 如果主机安装失败,并非在ACE内运行且不在强制本地模式,尝试ACE环境
|
||||||
if [ "$FORCE_NATIVE" -eq 0 ]; then
|
if [ "$FORCE_NATIVE" -eq 0 ] && [ "$IS_ACE_ENV" = "" ] && ! command -v termux-chroot; then
|
||||||
for ace_entry in "${ACE_ENVIRONMENTS_FOR_AUTOINSTALL[@]}"; do
|
for ace_entry in "${ACE_ENVIRONMENTS_FOR_AUTOINSTALL[@]}"; do
|
||||||
local ace_cmd=${ace_entry%%:*}
|
local ace_cmd=${ace_entry%%:*}
|
||||||
local ace_env_pkg=${ace_entry#*:}
|
local ace_env_pkg=${ace_entry#*:}
|
||||||
@@ -322,7 +363,6 @@ function auto_try_install() {
|
|||||||
|
|
||||||
return 1
|
return 1
|
||||||
}
|
}
|
||||||
|
|
||||||
# 清理安装后的文件
|
# 清理安装后的文件
|
||||||
function post_install_cleanup() {
|
function post_install_cleanup() {
|
||||||
local success=$1
|
local success=$1
|
||||||
@@ -380,7 +420,9 @@ function lock_file() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function unlock_file() {
|
function unlock_file() {
|
||||||
|
if [ -e "$1" ];then
|
||||||
chattr -i "$1"
|
chattr -i "$1"
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# 主安装流程
|
# 主安装流程
|
||||||
@@ -418,36 +460,72 @@ function main_install() {
|
|||||||
|
|
||||||
package_name=$(dpkg-deb -f "$DEBPATH" Package)
|
package_name=$(dpkg-deb -f "$DEBPATH" Package)
|
||||||
local install_success=1
|
local install_success=1
|
||||||
|
if [ "$FORCE_NATIVE" -eq 1 ] || [ "$IS_ACE_ENV" = "1" ]; then
|
||||||
if [ -n "$FORCE_ACE_ENV" ]; then
|
# 优先使用主机安装,忽略所有ACE参数
|
||||||
# 查找对应的ACE环境包名
|
echo "忽略ACE,使用主机安装 $package_name"
|
||||||
local ace_env_pkg=""
|
install_in_host "$DEBPATH"
|
||||||
for ace_entry in "${ACE_ENVIRONMENTS[@]}"; do
|
install_success=$?
|
||||||
if [ "${ace_entry%%:*}" = "$FORCE_ACE_ENV" ]; then
|
# 安装成功后在主机创建桌面快捷方式
|
||||||
ace_env_pkg="${ace_entry#*:}"
|
if [ "$install_success" -eq 0 ]; then
|
||||||
break
|
create_desktop_file
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
# 强制使用指定的ACE环境安装
|
|
||||||
if command -v "$FORCE_ACE_ENV" >/dev/null 2>&1; then
|
|
||||||
install_in_ace_env "$FORCE_ACE_ENV" "$DEBPATH" "$ace_env_pkg"
|
|
||||||
install_success=$?
|
|
||||||
if [ "$install_success" -eq 0 ]; then
|
|
||||||
create_desktop_in_ace "$FORCE_ACE_ENV" "$package_name"
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
echo "指定的ACE环境 $FORCE_ACE_ENV 不可用"
|
|
||||||
echo "OMG-IT-GOES-WRONG"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
# 自动选择安装方式
|
|
||||||
auto_try_install "$DEBPATH"
|
|
||||||
install_success=$?
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
post_install_cleanup "$install_success" "$DEBPATH" "$package_name"
|
elif [ ${#ACE_PARAMS[@]} -gt 0 ] && [ "$IS_ACE_ENV" = "" ]; then
|
||||||
|
# 用户指定了一个或多个ACE环境,且未要求原生安装
|
||||||
|
echo "使用ACE环境安装,已指定环境: ${ACE_PARAMS[*]}"
|
||||||
|
|
||||||
|
# 查找第一个已安装的ACE环境
|
||||||
|
chosen_env=""
|
||||||
|
for env_cmd in "${ACE_PARAMS[@]}"; do
|
||||||
|
if command -v "$env_cmd" >/dev/null 2>&1; then
|
||||||
|
chosen_env="$env_cmd"
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
# 如果没有安装任何环境,则使用第一个指定的环境
|
||||||
|
if [ -z "$chosen_env" ]; then
|
||||||
|
chosen_env="${ACE_PARAMS[0]}"
|
||||||
|
echo "未发现已安装的ACE环境,准备安装 $chosen_env..."
|
||||||
|
# 查找对应的ACE环境软件包名
|
||||||
|
for ace_entry in "${ACE_ENVIRONMENTS[@]}"; do
|
||||||
|
if [ "${ace_entry%%:*}" = "$chosen_env" ]; then
|
||||||
|
ace_pkg="${ace_entry#*:}"
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
# 安装ACE环境(示例使用aptss工具,可根据实际情况调整)
|
||||||
|
ensure_ace_env "$ace_pkg" -y
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 再次确认ACE环境命令是否可用
|
||||||
|
if command -v "$chosen_env" >/dev/null 2>&1; then
|
||||||
|
# 查找软件包名(仅首次查找即可)
|
||||||
|
for ace_entry in "${ACE_ENVIRONMENTS[@]}"; do
|
||||||
|
if [ "${ace_entry%%:*}" = "$chosen_env" ]; then
|
||||||
|
ace_pkg="${ace_entry#*:}"
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
echo "在 ACE 环境 $chosen_env 中安装 $package_name"
|
||||||
|
install_in_ace_env "$chosen_env" "$DEBPATH" "$ace_pkg"
|
||||||
|
install_success=$?
|
||||||
|
if [ "$install_success" -eq 0 ]; then
|
||||||
|
create_desktop_in_ace "$chosen_env" "$package_name"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "指定的ACE环境 $chosen_env 不可用"
|
||||||
|
echo "OMG-IT-GOES-WRONG"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
else
|
||||||
|
# 未指定ACE环境和--native,使用自动安装逻辑(先主机再ACE)
|
||||||
|
echo "自动选择安装方式"
|
||||||
|
auto_try_install "$DEBPATH"
|
||||||
|
install_success=$?
|
||||||
|
fi
|
||||||
|
|
||||||
|
post_install_cleanup "$install_success" "$DEBPATH" "$package_name"
|
||||||
}
|
}
|
||||||
|
|
||||||
# 执行主函数
|
# 执行主函数
|
||||||
|
|||||||
@@ -1,14 +1,17 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
readonly ACE_ENVIRONMENTS=(
|
||||||
|
"bookworm-run:amber-ce-bookworm"
|
||||||
|
"trixie-run:amber-ce-trixie"
|
||||||
|
"deepin23-run:amber-ce-deepin23"
|
||||||
|
"sid-run:amber-ce-sid"
|
||||||
|
)
|
||||||
dpkg -s "$1" > /dev/null
|
dpkg -s "$1" > /dev/null
|
||||||
RET="$?"
|
RET="$?"
|
||||||
if [[ "$RET" != "0" ]] &&[[ "$IS_ACE_ENV" == "" ]];then ## 如果未在ACE环境中
|
if [[ "$RET" != "0" ]] &&[[ "$IS_ACE_ENV" == "" ]];then ## 如果未在ACE环境中
|
||||||
# 定义按顺序尝试的ACE环境(命令:推荐安装包)
|
|
||||||
declare -a ace_commands_order=(
|
|
||||||
"bookworm-run:amber-ce-bookworm"
|
|
||||||
"trixie-run:amber-ce-trixie"
|
for ace_entry in "${ACE_ENVIRONMENTS[@]}"; do
|
||||||
"deepin23-run:amber-ce-deepin23"
|
|
||||||
)
|
|
||||||
for ace_entry in "${ace_commands_order[@]}"; do
|
|
||||||
ace_cmd=${ace_entry%%:*}
|
ace_cmd=${ace_entry%%:*}
|
||||||
if command -v "$ace_cmd" >/dev/null 2>&1; then
|
if command -v "$ace_cmd" >/dev/null 2>&1; then
|
||||||
echo "----------------------------------------"
|
echo "----------------------------------------"
|
||||||
|
|||||||
@@ -1,10 +1,11 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# ===== ACE环境配置 =====
|
# ===== ACE环境配置 =====
|
||||||
declare -a ace_commands_order=(
|
readonly ACE_ENVIRONMENTS=(
|
||||||
"bookworm-run:amber-ce-bookworm"
|
"bookworm-run:amber-ce-bookworm"
|
||||||
"trixie-run:amber-ce-trixie"
|
"trixie-run:amber-ce-trixie"
|
||||||
"deepin23-run:amber-ce-deepin23"
|
"deepin23-run:amber-ce-deepin23"
|
||||||
|
"sid-run:amber-ce-sid"
|
||||||
)
|
)
|
||||||
|
|
||||||
# ===== 日志和函数 =====
|
# ===== 日志和函数 =====
|
||||||
@@ -24,7 +25,7 @@ function scan_desktop_file_log() {
|
|||||||
while IFS= read -r path; do
|
while IFS= read -r path; do
|
||||||
[ -z "$(grep 'NoDisplay=true' "$path")" ] && {
|
[ -z "$(grep 'NoDisplay=true' "$path")" ] && {
|
||||||
log.info "Found valid desktop file: $path"
|
log.info "Found valid desktop file: $path"
|
||||||
desktop_file_path="$path"
|
export desktop_file_path="$path"
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
done < <(dpkg -L "$package_name" 2>/dev/null | grep -E '/usr/share/applications/.*\.desktop$|/opt/apps/.*/entries/applications/.*\.desktop$')
|
done < <(dpkg -L "$package_name" 2>/dev/null | grep -E '/usr/share/applications/.*\.desktop$|/opt/apps/.*/entries/applications/.*\.desktop$')
|
||||||
@@ -33,7 +34,7 @@ function scan_desktop_file_log() {
|
|||||||
while IFS= read -r path; do
|
while IFS= read -r path; do
|
||||||
[ -z "$(grep 'NoDisplay=true' "$path")" ] && {
|
[ -z "$(grep 'NoDisplay=true' "$path")" ] && {
|
||||||
log.info "Found deepin desktop file: $path"
|
log.info "Found deepin desktop file: $path"
|
||||||
desktop_file_path="$path"
|
export desktop_file_path="$path"
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
done < <(find /opt/apps/$package_name -path '*/entries/applications/*.desktop' 2>/dev/null)
|
done < <(find /opt/apps/$package_name -path '*/entries/applications/*.desktop' 2>/dev/null)
|
||||||
@@ -60,28 +61,59 @@ function launch_app() {
|
|||||||
# 提取并净化Exec命令
|
# 提取并净化Exec命令
|
||||||
exec_command=$(grep -m1 '^Exec=' "$DESKTOP_FILE_PATH" | cut -d= -f2- | sed 's/%.//g')
|
exec_command=$(grep -m1 '^Exec=' "$DESKTOP_FILE_PATH" | cut -d= -f2- | sed 's/%.//g')
|
||||||
[ -z "$exec_command" ] && return 1
|
[ -z "$exec_command" ] && return 1
|
||||||
|
[ ! -z "$IS_ACE_ENV" ] && HOST_PREFIX="host-spawn"
|
||||||
|
exec_command="${HOST_PREFIX} $exec_command"
|
||||||
log.info "Launching: $exec_command"
|
log.info "Launching: $exec_command"
|
||||||
# 图形环境启动优化
|
${SHELL:-bash} -c " $exec_command" &
|
||||||
if [ -n "$DISPLAY" ]; then
|
|
||||||
nohup env DISPLAY=$DISPLAY XAUTHORITY=${XAUTHORITY:-~/.Xauthority} ${SHELL:-bash} -c "$exec_command" >/dev/null 2>&1 &
|
|
||||||
else
|
|
||||||
nohup ${SHELL:-bash} -c "$exec_command" >/dev/null 2>&1 &
|
|
||||||
fi
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# 导出函数以便在ACE环境中使用
|
||||||
|
export -f launch_app scan_desktop_file scan_desktop_file_log log.info log.warn log.debug log.error
|
||||||
|
|
||||||
# ===== ACE环境执行器 =====
|
# ===== ACE环境执行器 =====
|
||||||
function ace_runner() {
|
function ace_runner() {
|
||||||
local command_type=$1 package_name=$2
|
local action=$1
|
||||||
for ace_entry in "${ace_commands_order[@]}"; do
|
local target=$2
|
||||||
|
|
||||||
|
for ace_entry in "${ACE_ENVIRONMENTS[@]}"; do
|
||||||
local ace_cmd=${ace_entry%%:*}
|
local ace_cmd=${ace_entry%%:*}
|
||||||
command -v "$ace_cmd" >/dev/null || continue
|
local ace_env=${ace_entry#*:}
|
||||||
|
|
||||||
log.info "Checking in $ace_cmd environment..."
|
if ! command -v "$ace_cmd" >/dev/null; then
|
||||||
if output=$($ace_cmd "$0" "$command_type" "$package_name" 2>/dev/null); then
|
log.debug "$ace_cmd not found, skipping..."
|
||||||
[ "$command_type" = "list" ] && echo "$output"
|
continue
|
||||||
exit 0
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
log.info "Attempting in $ace_env environment..."
|
||||||
|
|
||||||
|
case "$action" in
|
||||||
|
check)
|
||||||
|
if "$ace_cmd" scan_desktop_file_log "$target"; then
|
||||||
|
log.info "Found desktop file in $ace_env"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
list)
|
||||||
|
local result
|
||||||
|
if result=$("$ace_cmd" scan_desktop_file "$target"); then
|
||||||
|
echo "$result"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
launch|start)
|
||||||
|
"$ace_cmd" scan_desktop_file_log "$target"
|
||||||
|
if desktop_path=$("$ace_cmd" scan_desktop_file_log "$target"); then
|
||||||
|
log.info "Launching from $ace_env..."
|
||||||
|
"$ace_cmd" launch_app $("$ace_cmd" scan_desktop_file "$target")
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
log.debug "Attempt in $ace_env failed"
|
||||||
done
|
done
|
||||||
|
|
||||||
return 1
|
return 1
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -99,7 +131,7 @@ check)
|
|||||||
else
|
else
|
||||||
# 非ACE环境下执行ACE环境扫描
|
# 非ACE环境下执行ACE环境扫描
|
||||||
[ -z "$IS_ACE_ENV" ] && ace_runner check "$2"
|
[ -z "$IS_ACE_ENV" ] && ace_runner check "$2"
|
||||||
exit 1
|
exit $?
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
|
|
||||||
@@ -111,7 +143,7 @@ list)
|
|||||||
else
|
else
|
||||||
# 非ACE环境下执行ACE环境扫描
|
# 非ACE环境下执行ACE环境扫描
|
||||||
[ -z "$IS_ACE_ENV" ] && ace_runner list "$2"
|
[ -z "$IS_ACE_ENV" ] && ace_runner list "$2"
|
||||||
exit 1
|
exit $?
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
|
|
||||||
@@ -122,7 +154,7 @@ launch|start)
|
|||||||
else
|
else
|
||||||
# 非ACE环境下通过ACE环境启动
|
# 非ACE环境下通过ACE环境启动
|
||||||
[ -z "$IS_ACE_ENV" ] && ace_runner launch "$2"
|
[ -z "$IS_ACE_ENV" ] && ace_runner launch "$2"
|
||||||
exit 1
|
exit $?
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
|
|||||||
@@ -1,10 +1,82 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
# ===== ACE环境配置 =====
|
# ===== ACE环境配置 =====
|
||||||
declare -a ace_commands_order=(
|
|
||||||
|
readonly ACE_ENVIRONMENTS=(
|
||||||
"bookworm-run:amber-ce-bookworm"
|
"bookworm-run:amber-ce-bookworm"
|
||||||
"trixie-run:amber-ce-trixie"
|
"trixie-run:amber-ce-trixie"
|
||||||
"deepin23-run:amber-ce-deepin23"
|
"deepin23-run:amber-ce-deepin23"
|
||||||
|
"sid-run:amber-ce-sid"
|
||||||
)
|
)
|
||||||
|
# 生成ACE环境参数帮助信息
|
||||||
|
function generate_ace_help() {
|
||||||
|
local help_text=""
|
||||||
|
for ace_entry in "${ACE_ENVIRONMENTS[@]}"; do
|
||||||
|
local ace_param="--${ace_entry#*:}"
|
||||||
|
help_text+=" $ace_param 使用${ace_entry%%:*} ACE容器卸载\n"
|
||||||
|
done
|
||||||
|
echo -e "$help_text"
|
||||||
|
}
|
||||||
|
# 帮助函数
|
||||||
|
function show_help() {
|
||||||
|
echo "Spark Store Uninstall script. 星火商店卸载脚本"
|
||||||
|
echo "用法: $0 [选项] 包名"
|
||||||
|
echo "选项:"
|
||||||
|
echo " -h, --help 显示帮助信息"
|
||||||
|
echo " --delete-after-install 安装成功后删除软件包"
|
||||||
|
echo " --no-create-desktop-entry 不创建桌面快捷方式"
|
||||||
|
echo " --force-create-desktop-entry 强制创建桌面快捷方式"
|
||||||
|
echo "$(generate_ace_help)"
|
||||||
|
echo " --native 只在主机卸载,不使用ACE容器"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
# 参数解析
|
||||||
|
function parse_args() {
|
||||||
|
while [ $# -gt 0 ]; do
|
||||||
|
case "$1" in
|
||||||
|
-h|--help)
|
||||||
|
show_help
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
--delete-after-install)
|
||||||
|
DELETE_AFTER_INSTALL="1"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
--native)
|
||||||
|
FORCE_NATIVE="1"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
--no-create-desktop-entry)
|
||||||
|
NO_CREATE_DESKTOP="1"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
--force-create-desktop-entry)
|
||||||
|
FORCE_CREATE_DESKTOP="1"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
# 检查是否为ACE环境参数
|
||||||
|
local is_ace_param=0
|
||||||
|
for ace_entry in "${ACE_ENVIRONMENTS[@]}"; do
|
||||||
|
local ace_param="--${ace_entry#*:}"
|
||||||
|
if [ "$1" = "$ace_param" ]; then
|
||||||
|
# 将ACE环境命令名加入数组
|
||||||
|
ACE_PARAMS+=("${ace_entry%%:*}")
|
||||||
|
is_ace_param=1
|
||||||
|
shift
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
# 如果不是ACE环境参数,则视为包名
|
||||||
|
if [ "$is_ace_param" -eq 0 ]; then
|
||||||
|
PACKAGE_NAME="$1"
|
||||||
|
shift
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
# ===== 日志和函数 =====
|
# ===== 日志和函数 =====
|
||||||
[ -f /opt/durapps/spark-store/bin/bashimport/log.amber ] && \
|
[ -f /opt/durapps/spark-store/bin/bashimport/log.amber ] && \
|
||||||
@@ -15,40 +87,104 @@ declare -a ace_commands_order=(
|
|||||||
log.debug() { echo "DEBUG: $*"; }
|
log.debug() { echo "DEBUG: $*"; }
|
||||||
}
|
}
|
||||||
|
|
||||||
dpkg -s "$1" > /dev/null
|
# 初始化变量
|
||||||
RET="$?"
|
FORCE_NATIVE=0
|
||||||
if [[ "$RET" == "0" ]] ;then
|
ACE_PARAMS=()
|
||||||
apt autopurge $1 -y
|
PACKAGE_NAME=""
|
||||||
|
uninstall_success=0
|
||||||
|
|
||||||
|
# 解析参数
|
||||||
|
parse_args "$@"
|
||||||
|
|
||||||
|
if [ -z "$PACKAGE_NAME" ]; then
|
||||||
|
log.error "请指定要卸载的包名"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 尝试在本地卸载
|
||||||
|
try_native_uninstall() {
|
||||||
|
if [ "$FORCE_NATIVE" -eq 1 ] || [ ${#ACE_PARAMS[@]} -eq 0 ]; then
|
||||||
|
echo "----------------------------------------"
|
||||||
|
echo "正在检查本地环境中的安装..."
|
||||||
|
echo "----------------------------------------"
|
||||||
|
|
||||||
|
dpkg -s "$PACKAGE_NAME" > /dev/null
|
||||||
|
RET="$?"
|
||||||
|
if [[ "$RET" == "0" ]]; then
|
||||||
|
echo "----------------------------------------"
|
||||||
|
echo "在本地环境中找到了安装"
|
||||||
|
echo "----------------------------------------"
|
||||||
|
apt autopurge "$PACKAGE_NAME" -y
|
||||||
|
uninstall_success=1
|
||||||
|
return 0
|
||||||
|
else
|
||||||
|
echo "----------------------------------------"
|
||||||
|
echo "在本地环境中未能找到安装"
|
||||||
|
echo "----------------------------------------"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
|
# 尝试在ACE环境中卸载
|
||||||
|
try_ace_uninstall() {
|
||||||
|
local ace_cmd="$1"
|
||||||
|
if command -v "$ace_cmd" >/dev/null 2>&1; then
|
||||||
|
echo "----------------------------------------"
|
||||||
|
echo "正在检查 $ace_cmd 环境的安装..."
|
||||||
|
echo "----------------------------------------"
|
||||||
|
|
||||||
|
$ace_cmd dpkg -l | grep "^ii $PACKAGE_NAME " > /dev/null
|
||||||
|
try_run_ret="$?"
|
||||||
|
|
||||||
|
if [ "$try_run_ret" -eq 0 ]; then
|
||||||
|
echo "----------------------------------------"
|
||||||
|
echo "在 $ace_cmd 环境中找到了安装"
|
||||||
|
echo "----------------------------------------"
|
||||||
|
$ace_cmd apt autopurge "$PACKAGE_NAME" -y
|
||||||
|
uninstall_success=1
|
||||||
|
return 0
|
||||||
|
else
|
||||||
|
echo "----------------------------------------"
|
||||||
|
echo "在 $ace_cmd 环境中未能找到安装"
|
||||||
|
echo "----------------------------------------"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
|
# 主卸载逻辑
|
||||||
|
if [ $FORCE_NATIVE -eq 1 ] && [ ${#ACE_PARAMS[@]} -eq 0 ]; then
|
||||||
|
# 只有 --native 参数时,只尝试本地卸载
|
||||||
|
try_native_uninstall || exit $?
|
||||||
|
elif [ $FORCE_NATIVE -eq 0 ] && [ ${#ACE_PARAMS[@]} -gt 0 ]; then
|
||||||
|
# 只有 ACE 参数时,只尝试指定的 ACE 环境卸载
|
||||||
|
for ace_param in "${ACE_PARAMS[@]}"; do
|
||||||
|
try_ace_uninstall "$ace_param"
|
||||||
|
done
|
||||||
|
elif [ $FORCE_NATIVE -eq 1 ] && [ ${#ACE_PARAMS[@]} -gt 0 ]; then
|
||||||
|
# 同时有 --native 和 ACE 参数时,先尝试本地卸载,再尝试 ACE 环境卸载
|
||||||
|
try_native_uninstall
|
||||||
|
for ace_param in "${ACE_PARAMS[@]}"; do
|
||||||
|
try_ace_uninstall "$ace_param"
|
||||||
|
done
|
||||||
else
|
else
|
||||||
|
# 无参数时,先尝试本地卸载,再尝试所有 ACE 环境卸载
|
||||||
|
try_native_uninstall
|
||||||
|
|
||||||
|
for ace_entry in "${ACE_ENVIRONMENTS[@]}"; do
|
||||||
|
ace_cmd=${ace_entry%%:*}
|
||||||
|
if command -v "$ace_cmd" >/dev/null 2>&1; then
|
||||||
|
try_ace_uninstall "$ace_cmd"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
for ace_entry in "${ace_commands_order[@]}"; do
|
if [ $uninstall_success -eq 0 ]; then
|
||||||
ace_cmd=${ace_entry%%:*}
|
echo "----------------------------------------"
|
||||||
if command -v "$ace_cmd" >/dev/null 2>&1; then
|
echo "在所有指定的环境中未能找到安装,退出"
|
||||||
echo "----------------------------------------"
|
echo "----------------------------------------"
|
||||||
echo "正在检查 $ace_cmd 环境的安装..."
|
exit 1
|
||||||
echo "----------------------------------------"
|
fi
|
||||||
|
|
||||||
# 在ACE环境中执行安装检测
|
|
||||||
$ace_cmd dpkg -l | grep "^ii $1 " > /dev/null
|
|
||||||
try_run_ret="$?"
|
|
||||||
|
|
||||||
|
|
||||||
# 最终检测结果处理
|
exit 0
|
||||||
if [ "$try_run_ret" -eq 0 ]; then
|
|
||||||
echo "----------------------------------------"
|
|
||||||
echo "在 $ace_cmd 环境中找到了安装"
|
|
||||||
echo "----------------------------------------"
|
|
||||||
$ace_cmd apt autopurge $1 -y
|
|
||||||
else
|
|
||||||
echo "----------------------------------------"
|
|
||||||
echo "在 $ace_cmd 环境中未能找到安装,继续查找"
|
|
||||||
echo "----------------------------------------"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
echo "----------------------------------------"
|
|
||||||
echo "所有已安装的 ACE 环境中未能找到安装,退出"
|
|
||||||
echo "----------------------------------------"
|
|
||||||
exit "$RET"
|
|
||||||
fi
|
|
||||||
exit "$RET"
|
|
||||||
|
|||||||
@@ -37,6 +37,8 @@ if [ "$(id -u)" != "0" ] ; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
aptss install "${@:2}" --only-upgrade 2>&1 | tee /tmp/spark-store-app-upgrade-log.txt
|
aptss install "${@:2}" --only-upgrade 2>&1 | tee /tmp/spark-store-app-upgrade-log.txt
|
||||||
|
sed -i '1i--------------------------------------------------------------' /tmp/spark-store-app-upgrade-log.txt
|
||||||
|
sed -i '1i更新失败可能是由于系统版本过低,您可先【卸载】此应用后再在商店【安装】此应用来尝试修复此问题,商店会在安装时尝试自动解决问题。若仍无法解决,请按照指引进行反馈' /tmp/spark-store-app-upgrade-log.txt
|
||||||
chmod 777 /tmp/spark-store-app-upgrade-log.txt
|
chmod 777 /tmp/spark-store-app-upgrade-log.txt
|
||||||
IS_UPGRADE_ERROR=`cat /tmp/spark-store-app-upgrade-log.txt | grep "Package manager quit with exit code."`
|
IS_UPGRADE_ERROR=`cat /tmp/spark-store-app-upgrade-log.txt | grep "Package manager quit with exit code."`
|
||||||
echo "$IS_UPGRADE_ERROR" > /tmp/spark-store-app-upgrade-status.txt
|
echo "$IS_UPGRADE_ERROR" > /tmp/spark-store-app-upgrade-status.txt
|
||||||
|
|||||||
@@ -24,68 +24,63 @@
|
|||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.ui" line="409"/>
|
<location filename="../src/pages/appintopage.ui" line="441"/>
|
||||||
<location filename="../src/pages/appintopage.ui" line="412"/>
|
<location filename="../src/pages/appintopage.ui" line="444"/>
|
||||||
|
<source><html><head/><body><p>Capable to deepin 23</p></body></html></source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../src/pages/appintopage.ui" line="528"/>
|
||||||
|
<location filename="../src/pages/appintopage.ui" line="531"/>
|
||||||
<source><html><head/><body><p>This app is developed by community user,we give this tag to honor those who contribute to the Linux Ecology</p></body></html></source>
|
<source><html><head/><body><p>This app is developed by community user,we give this tag to honor those who contribute to the Linux Ecology</p></body></html></source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.ui" line="447"/>
|
<location filename="../src/pages/appintopage.ui" line="422"/>
|
||||||
<location filename="../src/pages/appintopage.ui" line="450"/>
|
<location filename="../src/pages/appintopage.ui" line="425"/>
|
||||||
<source><html><head/><body><p>Capable to UOS home 20</p></body></html></source>
|
<source><html><head/><body><p>Capable to UOS home 20</p></body></html></source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.ui" line="466"/>
|
<location filename="../src/pages/appintopage.ui" line="566"/>
|
||||||
<location filename="../src/pages/appintopage.ui" line="469"/>
|
<location filename="../src/pages/appintopage.ui" line="569"/>
|
||||||
<source><html><head/><body><p>A deepin-wine2 app. Spark Store will automatically configure the wine kit for you.</p></body></html></source>
|
<source><html><head/><body><p>A deepin-wine2 app. Spark Store will automatically configure the wine kit for you.</p></body></html></source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.ui" line="472"/>
|
<location filename="../src/pages/appintopage.ui" line="547"/>
|
||||||
<source><html><head/><body><p><img src=":/tags/dwine2-small.png"/></p></body></html></source>
|
<location filename="../src/pages/appintopage.ui" line="550"/>
|
||||||
<translation type="unfinished"></translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<location filename="../src/pages/appintopage.ui" line="485"/>
|
|
||||||
<location filename="../src/pages/appintopage.ui" line="488"/>
|
|
||||||
<source><html><head/><body><p>This is a DTK5 app,which means it would have better effect on Deepin Desktop Environment</p></body></html></source>
|
<source><html><head/><body><p>This is a DTK5 app,which means it would have better effect on Deepin Desktop Environment</p></body></html></source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.ui" line="504"/>
|
<location filename="../src/pages/appintopage.ui" line="509"/>
|
||||||
<location filename="../src/pages/appintopage.ui" line="507"/>
|
<location filename="../src/pages/appintopage.ui" line="512"/>
|
||||||
<source><html><head/><body><p>Capable to deepin 20</p></body></html></source>
|
|
||||||
<translation type="unfinished"></translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<location filename="../src/pages/appintopage.ui" line="523"/>
|
|
||||||
<location filename="../src/pages/appintopage.ui" line="526"/>
|
|
||||||
<source><html><head/><body><p>An Appimage to deb app.</p></body></html></source>
|
<source><html><head/><body><p>An Appimage to deb app.</p></body></html></source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.ui" line="611"/>
|
<location filename="../src/pages/appintopage.ui" line="644"/>
|
||||||
<source>Share</source>
|
<source>Share</source>
|
||||||
<translation type="unfinished">Spk share link</translation>
|
<translation type="unfinished">Spk share link</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.ui" line="618"/>
|
<location filename="../src/pages/appintopage.ui" line="651"/>
|
||||||
<source>APP Feedback</source>
|
<source>APP Feedback</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.ui" line="773"/>
|
<location filename="../src/pages/appintopage.ui" line="806"/>
|
||||||
<source>Introduction</source>
|
<source>Introduction</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.ui" line="1074"/>
|
<location filename="../src/pages/appintopage.ui" line="1107"/>
|
||||||
<source>Description</source>
|
<source>Description</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.ui" line="910"/>
|
<location filename="../src/pages/appintopage.ui" line="943"/>
|
||||||
<source>Screen capture</source>
|
<source>Screen capture</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
@@ -94,94 +89,55 @@
|
|||||||
<location filename="../src/pages/appintopage.cpp" line="210"/>
|
<location filename="../src/pages/appintopage.cpp" line="210"/>
|
||||||
<location filename="../src/pages/appintopage.cpp" line="351"/>
|
<location filename="../src/pages/appintopage.cpp" line="351"/>
|
||||||
<location filename="../src/pages/appintopage.cpp" line="396"/>
|
<location filename="../src/pages/appintopage.cpp" line="396"/>
|
||||||
<location filename="../src/pages/appintopage.cpp" line="575"/>
|
<location filename="../src/pages/appintopage.cpp" line="590"/>
|
||||||
<source>Download and Install</source>
|
<source>Download and Install</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.ui" line="415"/>
|
<location filename="../src/pages/appintopage.ui" line="403"/>
|
||||||
<source><html><head/><body><p><img src=":/tags/community.svg" height=30 width=30 /></p></body></html></source>
|
<location filename="../src/pages/appintopage.ui" line="406"/>
|
||||||
<translation type="unfinished"></translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<location filename="../src/pages/appintopage.ui" line="428"/>
|
|
||||||
<location filename="../src/pages/appintopage.ui" line="431"/>
|
|
||||||
<source><html><head/><body><p>Capable to Ubuntu 22.04</p></body></html></source>
|
<source><html><head/><body><p>Capable to Ubuntu 22.04</p></body></html></source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.ui" line="434"/>
|
<location filename="../src/pages/appintopage.ui" line="585"/>
|
||||||
<source><html><head/><body><p><img src=":/tags/ubuntu.png" width=30 height=30 /></p></body></html></source>
|
<location filename="../src/pages/appintopage.ui" line="588"/>
|
||||||
<translation type="unfinished"></translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<location filename="../src/pages/appintopage.ui" line="453"/>
|
|
||||||
<source><html><head/><body><p><img src=":/tags/uos-authorize.svg" height=30 width=30 /></p></body></html></source>
|
|
||||||
<translation type="unfinished"></translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<location filename="../src/pages/appintopage.ui" line="491"/>
|
|
||||||
<source><html><head/><body><p><img src=":/tags/logo_icon.svg" height=30 width=30 /></p></body></html></source>
|
|
||||||
<translation type="unfinished"></translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<location filename="../src/pages/appintopage.ui" line="510"/>
|
|
||||||
<source><html><head/><body><p><img src=":/tags/deepin.svg" height=30 width=30 /></p></body></html></source>
|
|
||||||
<translation type="unfinished"></translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<location filename="../src/pages/appintopage.ui" line="529"/>
|
|
||||||
<source><html><head/><body><p><img src=":/tags/a2d.png"height=30 width=30 /></p></body></html></source>
|
|
||||||
<translation type="unfinished"></translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<location filename="../src/pages/appintopage.ui" line="542"/>
|
|
||||||
<location filename="../src/pages/appintopage.ui" line="545"/>
|
|
||||||
<source><html><head/><body><p>A Wine app.Spark Store will automatically configure the wine kit for you</p></body></html></source>
|
<source><html><head/><body><p>A Wine app.Spark Store will automatically configure the wine kit for you</p></body></html></source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.ui" line="548"/>
|
<location filename="../src/pages/appintopage.ui" line="460"/>
|
||||||
<source><html><head/><body><p><img src=":/tags/dwine5.svg" height=30 width=30 /></p></body></html></source>
|
<location filename="../src/pages/appintopage.ui" line="463"/>
|
||||||
<translation type="unfinished"></translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<location filename="../src/pages/appintopage.ui" line="555"/>
|
|
||||||
<source><html><head/><body><p>Capable to Debian Stable</p></body></html></source>
|
<source><html><head/><body><p>Capable to Debian Stable</p></body></html></source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.ui" line="558"/>
|
<location filename="../src/pages/appintopage.ui" line="1200"/>
|
||||||
<source><html><head/><body><p><img src=":/tags/debian.svg" height="30" width="30"/></p></body></html></source>
|
|
||||||
<translation type="unfinished"></translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<location filename="../src/pages/appintopage.ui" line="1167"/>
|
|
||||||
<source>Update</source>
|
<source>Update</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.ui" line="1196"/>
|
<location filename="../src/pages/appintopage.ui" line="1229"/>
|
||||||
<source>Contributor</source>
|
<source>Contributor</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.ui" line="1203"/>
|
<location filename="../src/pages/appintopage.ui" line="1236"/>
|
||||||
<source>Pkgname</source>
|
<source>Pkgname</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.ui" line="1309"/>
|
<location filename="../src/pages/appintopage.ui" line="1342"/>
|
||||||
<source>Author</source>
|
<source>Author</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.ui" line="1345"/>
|
<location filename="../src/pages/appintopage.ui" line="1378"/>
|
||||||
<source>Size</source>
|
<source>Size</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.ui" line="1381"/>
|
<location filename="../src/pages/appintopage.ui" line="1414"/>
|
||||||
<source>Website</source>
|
<source>Website</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
@@ -260,18 +216,18 @@
|
|||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.cpp" line="578"/>
|
|
||||||
<location filename="../src/pages/appintopage.cpp" line="593"/>
|
<location filename="../src/pages/appintopage.cpp" line="593"/>
|
||||||
|
<location filename="../src/pages/appintopage.cpp" line="608"/>
|
||||||
<source>Spark Store</source>
|
<source>Spark Store</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.cpp" line="578"/>
|
<location filename="../src/pages/appintopage.cpp" line="593"/>
|
||||||
<source>Uninstall succeeded</source>
|
<source>Uninstall succeeded</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.cpp" line="593"/>
|
<location filename="../src/pages/appintopage.cpp" line="608"/>
|
||||||
<source>The URL has been copied to the clipboard</source>
|
<source>The URL has been copied to the clipboard</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
@@ -359,9 +315,9 @@
|
|||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/widgets/common/downloaditem.cpp" line="218"/>
|
<location filename="../src/widgets/common/downloaditem.cpp" line="226"/>
|
||||||
<location filename="../src/widgets/common/downloaditem.cpp" line="229"/>
|
|
||||||
<location filename="../src/widgets/common/downloaditem.cpp" line="237"/>
|
<location filename="../src/widgets/common/downloaditem.cpp" line="237"/>
|
||||||
|
<location filename="../src/widgets/common/downloaditem.cpp" line="245"/>
|
||||||
<source>Spark Store</source>
|
<source>Spark Store</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
@@ -372,32 +328,32 @@
|
|||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/widgets/common/downloaditem.cpp" line="218"/>
|
<location filename="../src/widgets/common/downloaditem.cpp" line="226"/>
|
||||||
<source>Installation complete.</source>
|
<source>Installation complete.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/widgets/common/downloaditem.cpp" line="219"/>
|
<location filename="../src/widgets/common/downloaditem.cpp" line="227"/>
|
||||||
<location filename="../src/widgets/common/downloaditem.cpp" line="220"/>
|
<location filename="../src/widgets/common/downloaditem.cpp" line="228"/>
|
||||||
<source>Finish</source>
|
<source>Finish</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/widgets/common/downloaditem.cpp" line="227"/>
|
<location filename="../src/widgets/common/downloaditem.cpp" line="235"/>
|
||||||
<source>Retry</source>
|
<source>Retry</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
|
||||||
<location filename="../src/widgets/common/downloaditem.cpp" line="229"/>
|
|
||||||
<location filename="../src/widgets/common/downloaditem.cpp" line="230"/>
|
|
||||||
<location filename="../src/widgets/common/downloaditem.cpp" line="231"/>
|
|
||||||
<source>Error happened in dpkg progress , please check the install info or try to reinstall.</source>
|
|
||||||
<translation type="unfinished"></translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/widgets/common/downloaditem.cpp" line="237"/>
|
<location filename="../src/widgets/common/downloaditem.cpp" line="237"/>
|
||||||
<location filename="../src/widgets/common/downloaditem.cpp" line="238"/>
|
<location filename="../src/widgets/common/downloaditem.cpp" line="238"/>
|
||||||
<location filename="../src/widgets/common/downloaditem.cpp" line="239"/>
|
<location filename="../src/widgets/common/downloaditem.cpp" line="239"/>
|
||||||
|
<source>Error happened in dpkg progress , please check the install info or try to reinstall.</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../src/widgets/common/downloaditem.cpp" line="245"/>
|
||||||
|
<location filename="../src/widgets/common/downloaditem.cpp" line="246"/>
|
||||||
|
<location filename="../src/widgets/common/downloaditem.cpp" line="247"/>
|
||||||
<source>dpkg progress had been aborted, please check the install info or try to reinstall.</source>
|
<source>dpkg progress had been aborted, please check the install info or try to reinstall.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
|
|||||||
@@ -24,68 +24,63 @@
|
|||||||
<translation>Número de descargas</translation>
|
<translation>Número de descargas</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.ui" line="409"/>
|
<location filename="../src/pages/appintopage.ui" line="441"/>
|
||||||
<location filename="../src/pages/appintopage.ui" line="412"/>
|
<location filename="../src/pages/appintopage.ui" line="444"/>
|
||||||
|
<source><html><head/><body><p>Capable to deepin 23</p></body></html></source>
|
||||||
|
<translation type="unfinished"><html><head/><body><p>Capaz de deepin 20</p></body></html> {23<?}</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../src/pages/appintopage.ui" line="528"/>
|
||||||
|
<location filename="../src/pages/appintopage.ui" line="531"/>
|
||||||
<source><html><head/><body><p>This app is developed by community user,we give this tag to honor those who contribute to the Linux Ecology</p></body></html></source>
|
<source><html><head/><body><p>This app is developed by community user,we give this tag to honor those who contribute to the Linux Ecology</p></body></html></source>
|
||||||
<translation><html><head/><body><p>Esta aplicación fue desarrollada por usuarios de la comunidad y la Etiquetamos en honor a aquellos que contribuyeron a la ecología de linux.</p></body></html></translation>
|
<translation><html><head/><body><p>Esta aplicación fue desarrollada por usuarios de la comunidad y la Etiquetamos en honor a aquellos que contribuyeron a la ecología de linux.</p></body></html></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.ui" line="447"/>
|
<location filename="../src/pages/appintopage.ui" line="422"/>
|
||||||
<location filename="../src/pages/appintopage.ui" line="450"/>
|
<location filename="../src/pages/appintopage.ui" line="425"/>
|
||||||
<source><html><head/><body><p>Capable to UOS home 20</p></body></html></source>
|
<source><html><head/><body><p>Capable to UOS home 20</p></body></html></source>
|
||||||
<translation><html><head/><body><p>Capaz de UOS home 20</p></body></html></translation>
|
<translation><html><head/><body><p>Capaz de UOS home 20</p></body></html></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.ui" line="466"/>
|
<location filename="../src/pages/appintopage.ui" line="566"/>
|
||||||
<location filename="../src/pages/appintopage.ui" line="469"/>
|
<location filename="../src/pages/appintopage.ui" line="569"/>
|
||||||
<source><html><head/><body><p>A deepin-wine2 app. Spark Store will automatically configure the wine kit for you.</p></body></html></source>
|
<source><html><head/><body><p>A deepin-wine2 app. Spark Store will automatically configure the wine kit for you.</p></body></html></source>
|
||||||
<translation><html><head/><body><p>A deepin-wine2 app. La tienda Spark le configurará automáticamente un traje de vino.</p></body></html></translation>
|
<translation><html><head/><body><p>A deepin-wine2 app. La tienda Spark le configurará automáticamente un traje de vino.</p></body></html></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.ui" line="472"/>
|
<location filename="../src/pages/appintopage.ui" line="547"/>
|
||||||
<source><html><head/><body><p><img src=":/tags/dwine2-small.png"/></p></body></html></source>
|
<location filename="../src/pages/appintopage.ui" line="550"/>
|
||||||
<translation><html><head/><body><p><img src=":/tags/dwine2-small.png"/></p></body></html></translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<location filename="../src/pages/appintopage.ui" line="485"/>
|
|
||||||
<location filename="../src/pages/appintopage.ui" line="488"/>
|
|
||||||
<source><html><head/><body><p>This is a DTK5 app,which means it would have better effect on Deepin Desktop Environment</p></body></html></source>
|
<source><html><head/><body><p>This is a DTK5 app,which means it would have better effect on Deepin Desktop Environment</p></body></html></source>
|
||||||
<translation><html><head/><body><p>Esta es una aplicación dtk5, lo que significa que funcionará mejor en un entorno de escritorio profundo.</p></body></html></translation>
|
<translation><html><head/><body><p>Esta es una aplicación dtk5, lo que significa que funcionará mejor en un entorno de escritorio profundo.</p></body></html></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.ui" line="504"/>
|
<location filename="../src/pages/appintopage.ui" line="509"/>
|
||||||
<location filename="../src/pages/appintopage.ui" line="507"/>
|
<location filename="../src/pages/appintopage.ui" line="512"/>
|
||||||
<source><html><head/><body><p>Capable to deepin 20</p></body></html></source>
|
|
||||||
<translation><html><head/><body><p>Capaz de deepin 20</p></body></html></translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<location filename="../src/pages/appintopage.ui" line="523"/>
|
|
||||||
<location filename="../src/pages/appintopage.ui" line="526"/>
|
|
||||||
<source><html><head/><body><p>An Appimage to deb app.</p></body></html></source>
|
<source><html><head/><body><p>An Appimage to deb app.</p></body></html></source>
|
||||||
<translation><html><head/><body><p>Appimage de la aplicación deb.</p></body></html></translation>
|
<translation><html><head/><body><p>Appimage de la aplicación deb.</p></body></html></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.ui" line="611"/>
|
<location filename="../src/pages/appintopage.ui" line="644"/>
|
||||||
<source>Share</source>
|
<source>Share</source>
|
||||||
<translation>Comunión</translation>
|
<translation>Comunión</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.ui" line="618"/>
|
<location filename="../src/pages/appintopage.ui" line="651"/>
|
||||||
<source>APP Feedback</source>
|
<source>APP Feedback</source>
|
||||||
<translation>Comentarios de la app</translation>
|
<translation>Comentarios de la app</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.ui" line="773"/>
|
<location filename="../src/pages/appintopage.ui" line="806"/>
|
||||||
<source>Introduction</source>
|
<source>Introduction</source>
|
||||||
<translation>Introducción</translation>
|
<translation>Introducción</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.ui" line="1074"/>
|
<location filename="../src/pages/appintopage.ui" line="1107"/>
|
||||||
<source>Description</source>
|
<source>Description</source>
|
||||||
<translation>Descripción</translation>
|
<translation>Descripción</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.ui" line="910"/>
|
<location filename="../src/pages/appintopage.ui" line="943"/>
|
||||||
<source>Screen capture</source>
|
<source>Screen capture</source>
|
||||||
<translation>Captura de pantalla</translation>
|
<translation>Captura de pantalla</translation>
|
||||||
</message>
|
</message>
|
||||||
@@ -94,94 +89,55 @@
|
|||||||
<location filename="../src/pages/appintopage.cpp" line="210"/>
|
<location filename="../src/pages/appintopage.cpp" line="210"/>
|
||||||
<location filename="../src/pages/appintopage.cpp" line="351"/>
|
<location filename="../src/pages/appintopage.cpp" line="351"/>
|
||||||
<location filename="../src/pages/appintopage.cpp" line="396"/>
|
<location filename="../src/pages/appintopage.cpp" line="396"/>
|
||||||
<location filename="../src/pages/appintopage.cpp" line="575"/>
|
<location filename="../src/pages/appintopage.cpp" line="590"/>
|
||||||
<source>Download and Install</source>
|
<source>Download and Install</source>
|
||||||
<translation>Descargar e instalar</translation>
|
<translation>Descargar e instalar</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.ui" line="415"/>
|
<location filename="../src/pages/appintopage.ui" line="403"/>
|
||||||
<source><html><head/><body><p><img src=":/tags/community.svg" height=30 width=30 /></p></body></html></source>
|
<location filename="../src/pages/appintopage.ui" line="406"/>
|
||||||
<translation type="unfinished"></translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<location filename="../src/pages/appintopage.ui" line="428"/>
|
|
||||||
<location filename="../src/pages/appintopage.ui" line="431"/>
|
|
||||||
<source><html><head/><body><p>Capable to Ubuntu 22.04</p></body></html></source>
|
<source><html><head/><body><p>Capable to Ubuntu 22.04</p></body></html></source>
|
||||||
<translation><html><head/><body><p>Capaz de Ubuntu 22.04</p></body></html></translation>
|
<translation><html><head/><body><p>Capaz de Ubuntu 22.04</p></body></html></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.ui" line="434"/>
|
<location filename="../src/pages/appintopage.ui" line="585"/>
|
||||||
<source><html><head/><body><p><img src=":/tags/ubuntu.png" width=30 height=30 /></p></body></html></source>
|
<location filename="../src/pages/appintopage.ui" line="588"/>
|
||||||
<translation type="unfinished"></translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<location filename="../src/pages/appintopage.ui" line="453"/>
|
|
||||||
<source><html><head/><body><p><img src=":/tags/uos-authorize.svg" height=30 width=30 /></p></body></html></source>
|
|
||||||
<translation type="unfinished"></translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<location filename="../src/pages/appintopage.ui" line="491"/>
|
|
||||||
<source><html><head/><body><p><img src=":/tags/logo_icon.svg" height=30 width=30 /></p></body></html></source>
|
|
||||||
<translation type="unfinished"></translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<location filename="../src/pages/appintopage.ui" line="510"/>
|
|
||||||
<source><html><head/><body><p><img src=":/tags/deepin.svg" height=30 width=30 /></p></body></html></source>
|
|
||||||
<translation type="unfinished"></translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<location filename="../src/pages/appintopage.ui" line="529"/>
|
|
||||||
<source><html><head/><body><p><img src=":/tags/a2d.png"height=30 width=30 /></p></body></html></source>
|
|
||||||
<translation type="unfinished"></translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<location filename="../src/pages/appintopage.ui" line="542"/>
|
|
||||||
<location filename="../src/pages/appintopage.ui" line="545"/>
|
|
||||||
<source><html><head/><body><p>A Wine app.Spark Store will automatically configure the wine kit for you</p></body></html></source>
|
<source><html><head/><body><p>A Wine app.Spark Store will automatically configure the wine kit for you</p></body></html></source>
|
||||||
<translation><html><head/><body><p>La aplicación wine. Spark Store configurará automáticamente el kit Wine para usted</p></body></html></translation>
|
<translation><html><head/><body><p>La aplicación wine. Spark Store configurará automáticamente el kit Wine para usted</p></body></html></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.ui" line="548"/>
|
<location filename="../src/pages/appintopage.ui" line="460"/>
|
||||||
<source><html><head/><body><p><img src=":/tags/dwine5.svg" height=30 width=30 /></p></body></html></source>
|
<location filename="../src/pages/appintopage.ui" line="463"/>
|
||||||
<translation type="unfinished"></translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<location filename="../src/pages/appintopage.ui" line="555"/>
|
|
||||||
<source><html><head/><body><p>Capable to Debian Stable</p></body></html></source>
|
<source><html><head/><body><p>Capable to Debian Stable</p></body></html></source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.ui" line="558"/>
|
<location filename="../src/pages/appintopage.ui" line="1200"/>
|
||||||
<source><html><head/><body><p><img src=":/tags/debian.svg" height="30" width="30"/></p></body></html></source>
|
|
||||||
<translation type="unfinished"></translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<location filename="../src/pages/appintopage.ui" line="1167"/>
|
|
||||||
<source>Update</source>
|
<source>Update</source>
|
||||||
<translation>Modernizar</translation>
|
<translation>Modernizar</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.ui" line="1196"/>
|
<location filename="../src/pages/appintopage.ui" line="1229"/>
|
||||||
<source>Contributor</source>
|
<source>Contributor</source>
|
||||||
<translation>Contribuyentes</translation>
|
<translation>Contribuyentes</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.ui" line="1203"/>
|
<location filename="../src/pages/appintopage.ui" line="1236"/>
|
||||||
<source>Pkgname</source>
|
<source>Pkgname</source>
|
||||||
<translation>Nombre del embalaje</translation>
|
<translation>Nombre del embalaje</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.ui" line="1309"/>
|
<location filename="../src/pages/appintopage.ui" line="1342"/>
|
||||||
<source>Author</source>
|
<source>Author</source>
|
||||||
<translation>Autor</translation>
|
<translation>Autor</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.ui" line="1345"/>
|
<location filename="../src/pages/appintopage.ui" line="1378"/>
|
||||||
<source>Size</source>
|
<source>Size</source>
|
||||||
<translation>Tamaño</translation>
|
<translation>Tamaño</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.ui" line="1381"/>
|
<location filename="../src/pages/appintopage.ui" line="1414"/>
|
||||||
<source>Website</source>
|
<source>Website</source>
|
||||||
<translation>Sitio web</translation>
|
<translation>Sitio web</translation>
|
||||||
</message>
|
</message>
|
||||||
@@ -260,18 +216,18 @@
|
|||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.cpp" line="578"/>
|
|
||||||
<location filename="../src/pages/appintopage.cpp" line="593"/>
|
<location filename="../src/pages/appintopage.cpp" line="593"/>
|
||||||
|
<location filename="../src/pages/appintopage.cpp" line="608"/>
|
||||||
<source>Spark Store</source>
|
<source>Spark Store</source>
|
||||||
<translation>SPARK Store</translation>
|
<translation>SPARK Store</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.cpp" line="578"/>
|
<location filename="../src/pages/appintopage.cpp" line="593"/>
|
||||||
<source>Uninstall succeeded</source>
|
<source>Uninstall succeeded</source>
|
||||||
<translation>Desinstalación exitosa</translation>
|
<translation>Desinstalación exitosa</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.cpp" line="593"/>
|
<location filename="../src/pages/appintopage.cpp" line="608"/>
|
||||||
<source>The URL has been copied to the clipboard</source>
|
<source>The URL has been copied to the clipboard</source>
|
||||||
<translation>La URL ha sido copiada al portapapeles</translation>
|
<translation>La URL ha sido copiada al portapapeles</translation>
|
||||||
</message>
|
</message>
|
||||||
@@ -359,9 +315,9 @@
|
|||||||
<translation>Descarga completada.</translation>
|
<translation>Descarga completada.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/widgets/common/downloaditem.cpp" line="218"/>
|
<location filename="../src/widgets/common/downloaditem.cpp" line="226"/>
|
||||||
<location filename="../src/widgets/common/downloaditem.cpp" line="229"/>
|
|
||||||
<location filename="../src/widgets/common/downloaditem.cpp" line="237"/>
|
<location filename="../src/widgets/common/downloaditem.cpp" line="237"/>
|
||||||
|
<location filename="../src/widgets/common/downloaditem.cpp" line="245"/>
|
||||||
<source>Spark Store</source>
|
<source>Spark Store</source>
|
||||||
<translation>SPARK Store</translation>
|
<translation>SPARK Store</translation>
|
||||||
</message>
|
</message>
|
||||||
@@ -372,32 +328,32 @@
|
|||||||
<translation>Se está instalando</translation>
|
<translation>Se está instalando</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/widgets/common/downloaditem.cpp" line="218"/>
|
<location filename="../src/widgets/common/downloaditem.cpp" line="226"/>
|
||||||
<source>Installation complete.</source>
|
<source>Installation complete.</source>
|
||||||
<translation>La instalación está completa.</translation>
|
<translation>La instalación está completa.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/widgets/common/downloaditem.cpp" line="219"/>
|
<location filename="../src/widgets/common/downloaditem.cpp" line="227"/>
|
||||||
<location filename="../src/widgets/common/downloaditem.cpp" line="220"/>
|
<location filename="../src/widgets/common/downloaditem.cpp" line="228"/>
|
||||||
<source>Finish</source>
|
<source>Finish</source>
|
||||||
<translation>Completado</translation>
|
<translation>Completado</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/widgets/common/downloaditem.cpp" line="227"/>
|
<location filename="../src/widgets/common/downloaditem.cpp" line="235"/>
|
||||||
<source>Retry</source>
|
<source>Retry</source>
|
||||||
<translation>Reinterpretar</translation>
|
<translation>Reinterpretar</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
|
||||||
<location filename="../src/widgets/common/downloaditem.cpp" line="229"/>
|
|
||||||
<location filename="../src/widgets/common/downloaditem.cpp" line="230"/>
|
|
||||||
<location filename="../src/widgets/common/downloaditem.cpp" line="231"/>
|
|
||||||
<source>Error happened in dpkg progress , please check the install info or try to reinstall.</source>
|
|
||||||
<translation>Se produjo un error durante el proceso dpkg, verifique la información de instalación o intente reinstalar.</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/widgets/common/downloaditem.cpp" line="237"/>
|
<location filename="../src/widgets/common/downloaditem.cpp" line="237"/>
|
||||||
<location filename="../src/widgets/common/downloaditem.cpp" line="238"/>
|
<location filename="../src/widgets/common/downloaditem.cpp" line="238"/>
|
||||||
<location filename="../src/widgets/common/downloaditem.cpp" line="239"/>
|
<location filename="../src/widgets/common/downloaditem.cpp" line="239"/>
|
||||||
|
<source>Error happened in dpkg progress , please check the install info or try to reinstall.</source>
|
||||||
|
<translation>Se produjo un error durante el proceso dpkg, verifique la información de instalación o intente reinstalar.</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../src/widgets/common/downloaditem.cpp" line="245"/>
|
||||||
|
<location filename="../src/widgets/common/downloaditem.cpp" line="246"/>
|
||||||
|
<location filename="../src/widgets/common/downloaditem.cpp" line="247"/>
|
||||||
<source>dpkg progress had been aborted, please check the install info or try to reinstall.</source>
|
<source>dpkg progress had been aborted, please check the install info or try to reinstall.</source>
|
||||||
<translation>El proceso de DPKG ha sido interrumpido, compruebe la información de instalación o intente reinstalar.</translation>
|
<translation>El proceso de DPKG ha sido interrumpido, compruebe la información de instalación o intente reinstalar.</translation>
|
||||||
</message>
|
</message>
|
||||||
|
|||||||
@@ -24,68 +24,63 @@
|
|||||||
<translation>Nombre de téléchargements</translation>
|
<translation>Nombre de téléchargements</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.ui" line="409"/>
|
<location filename="../src/pages/appintopage.ui" line="441"/>
|
||||||
<location filename="../src/pages/appintopage.ui" line="412"/>
|
<location filename="../src/pages/appintopage.ui" line="444"/>
|
||||||
|
<source><html><head/><body><p>Capable to deepin 23</p></body></html></source>
|
||||||
|
<translation type="unfinished"><html><head/><body><p>Capable de la deepin 20</p></body></html> {23<?}</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../src/pages/appintopage.ui" line="528"/>
|
||||||
|
<location filename="../src/pages/appintopage.ui" line="531"/>
|
||||||
<source><html><head/><body><p>This app is developed by community user,we give this tag to honor those who contribute to the Linux Ecology</p></body></html></source>
|
<source><html><head/><body><p>This app is developed by community user,we give this tag to honor those who contribute to the Linux Ecology</p></body></html></source>
|
||||||
<translation><html><head/><body><p>Cette application a été développée par des utilisateurs de la communauté et nous avons donné ce label à ceux qui ont contribué à l'écologie de Linux</p></body></html></translation>
|
<translation><html><head/><body><p>Cette application a été développée par des utilisateurs de la communauté et nous avons donné ce label à ceux qui ont contribué à l'écologie de Linux</p></body></html></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.ui" line="447"/>
|
<location filename="../src/pages/appintopage.ui" line="422"/>
|
||||||
<location filename="../src/pages/appintopage.ui" line="450"/>
|
<location filename="../src/pages/appintopage.ui" line="425"/>
|
||||||
<source><html><head/><body><p>Capable to UOS home 20</p></body></html></source>
|
<source><html><head/><body><p>Capable to UOS home 20</p></body></html></source>
|
||||||
<translation><html><head/><body><p>Capable de la home UOS 20</p></body></html></translation>
|
<translation><html><head/><body><p>Capable de la home UOS 20</p></body></html></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.ui" line="466"/>
|
<location filename="../src/pages/appintopage.ui" line="566"/>
|
||||||
<location filename="../src/pages/appintopage.ui" line="469"/>
|
<location filename="../src/pages/appintopage.ui" line="569"/>
|
||||||
<source><html><head/><body><p>A deepin-wine2 app. Spark Store will automatically configure the wine kit for you.</p></body></html></source>
|
<source><html><head/><body><p>A deepin-wine2 app. Spark Store will automatically configure the wine kit for you.</p></body></html></source>
|
||||||
<translation><html><head/><body><p>Une application deepin-wine2. Le Spark Store configure automatiquement votre pack de vins.</p></body></html></translation>
|
<translation><html><head/><body><p>Une application deepin-wine2. Le Spark Store configure automatiquement votre pack de vins.</p></body></html></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.ui" line="472"/>
|
<location filename="../src/pages/appintopage.ui" line="547"/>
|
||||||
<source><html><head/><body><p><img src=":/tags/dwine2-small.png"/></p></body></html></source>
|
<location filename="../src/pages/appintopage.ui" line="550"/>
|
||||||
<translation><html><head/><body><p><img src=":/tags/dwine2-small.png"/></p></body></html></translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<location filename="../src/pages/appintopage.ui" line="485"/>
|
|
||||||
<location filename="../src/pages/appintopage.ui" line="488"/>
|
|
||||||
<source><html><head/><body><p>This is a DTK5 app,which means it would have better effect on Deepin Desktop Environment</p></body></html></source>
|
<source><html><head/><body><p>This is a DTK5 app,which means it would have better effect on Deepin Desktop Environment</p></body></html></source>
|
||||||
<translation><html><head/><body><p>C'est une application dtk5, ce qui signifie qu'elle fonctionnera mieux dans un environnement de bureau profond.</p></body></html></translation>
|
<translation><html><head/><body><p>C'est une application dtk5, ce qui signifie qu'elle fonctionnera mieux dans un environnement de bureau profond.</p></body></html></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.ui" line="504"/>
|
<location filename="../src/pages/appintopage.ui" line="509"/>
|
||||||
<location filename="../src/pages/appintopage.ui" line="507"/>
|
<location filename="../src/pages/appintopage.ui" line="512"/>
|
||||||
<source><html><head/><body><p>Capable to deepin 20</p></body></html></source>
|
|
||||||
<translation><html><head/><body><p>Capable de la deepin 20</p></body></html></translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<location filename="../src/pages/appintopage.ui" line="523"/>
|
|
||||||
<location filename="../src/pages/appintopage.ui" line="526"/>
|
|
||||||
<source><html><head/><body><p>An Appimage to deb app.</p></body></html></source>
|
<source><html><head/><body><p>An Appimage to deb app.</p></body></html></source>
|
||||||
<translation><html><head/><body><p>Appimage pour l'application DEB</p></body></html></translation>
|
<translation><html><head/><body><p>Appimage pour l'application DEB</p></body></html></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.ui" line="611"/>
|
<location filename="../src/pages/appintopage.ui" line="644"/>
|
||||||
<source>Share</source>
|
<source>Share</source>
|
||||||
<translation>Au total</translation>
|
<translation>Au total</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.ui" line="618"/>
|
<location filename="../src/pages/appintopage.ui" line="651"/>
|
||||||
<source>APP Feedback</source>
|
<source>APP Feedback</source>
|
||||||
<translation>App feedback</translation>
|
<translation>App feedback</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.ui" line="773"/>
|
<location filename="../src/pages/appintopage.ui" line="806"/>
|
||||||
<source>Introduction</source>
|
<source>Introduction</source>
|
||||||
<translation>Présentation</translation>
|
<translation>Présentation</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.ui" line="1074"/>
|
<location filename="../src/pages/appintopage.ui" line="1107"/>
|
||||||
<source>Description</source>
|
<source>Description</source>
|
||||||
<translation>Description</translation>
|
<translation>Description</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.ui" line="910"/>
|
<location filename="../src/pages/appintopage.ui" line="943"/>
|
||||||
<source>Screen capture</source>
|
<source>Screen capture</source>
|
||||||
<translation>Captures d'écran</translation>
|
<translation>Captures d'écran</translation>
|
||||||
</message>
|
</message>
|
||||||
@@ -94,94 +89,55 @@
|
|||||||
<location filename="../src/pages/appintopage.cpp" line="210"/>
|
<location filename="../src/pages/appintopage.cpp" line="210"/>
|
||||||
<location filename="../src/pages/appintopage.cpp" line="351"/>
|
<location filename="../src/pages/appintopage.cpp" line="351"/>
|
||||||
<location filename="../src/pages/appintopage.cpp" line="396"/>
|
<location filename="../src/pages/appintopage.cpp" line="396"/>
|
||||||
<location filename="../src/pages/appintopage.cpp" line="575"/>
|
<location filename="../src/pages/appintopage.cpp" line="590"/>
|
||||||
<source>Download and Install</source>
|
<source>Download and Install</source>
|
||||||
<translation>Télécharger et installer</translation>
|
<translation>Télécharger et installer</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.ui" line="415"/>
|
<location filename="../src/pages/appintopage.ui" line="403"/>
|
||||||
<source><html><head/><body><p><img src=":/tags/community.svg" height=30 width=30 /></p></body></html></source>
|
<location filename="../src/pages/appintopage.ui" line="406"/>
|
||||||
<translation type="unfinished"></translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<location filename="../src/pages/appintopage.ui" line="428"/>
|
|
||||||
<location filename="../src/pages/appintopage.ui" line="431"/>
|
|
||||||
<source><html><head/><body><p>Capable to Ubuntu 22.04</p></body></html></source>
|
<source><html><head/><body><p>Capable to Ubuntu 22.04</p></body></html></source>
|
||||||
<translation><html><head/><body><p>Capable de la Ubuntu 22.04</p></body></html></translation>
|
<translation><html><head/><body><p>Capable de la Ubuntu 22.04</p></body></html></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.ui" line="434"/>
|
<location filename="../src/pages/appintopage.ui" line="585"/>
|
||||||
<source><html><head/><body><p><img src=":/tags/ubuntu.png" width=30 height=30 /></p></body></html></source>
|
<location filename="../src/pages/appintopage.ui" line="588"/>
|
||||||
<translation type="unfinished"></translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<location filename="../src/pages/appintopage.ui" line="453"/>
|
|
||||||
<source><html><head/><body><p><img src=":/tags/uos-authorize.svg" height=30 width=30 /></p></body></html></source>
|
|
||||||
<translation type="unfinished"></translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<location filename="../src/pages/appintopage.ui" line="491"/>
|
|
||||||
<source><html><head/><body><p><img src=":/tags/logo_icon.svg" height=30 width=30 /></p></body></html></source>
|
|
||||||
<translation type="unfinished"></translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<location filename="../src/pages/appintopage.ui" line="510"/>
|
|
||||||
<source><html><head/><body><p><img src=":/tags/deepin.svg" height=30 width=30 /></p></body></html></source>
|
|
||||||
<translation type="unfinished"></translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<location filename="../src/pages/appintopage.ui" line="529"/>
|
|
||||||
<source><html><head/><body><p><img src=":/tags/a2d.png"height=30 width=30 /></p></body></html></source>
|
|
||||||
<translation type="unfinished"></translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<location filename="../src/pages/appintopage.ui" line="542"/>
|
|
||||||
<location filename="../src/pages/appintopage.ui" line="545"/>
|
|
||||||
<source><html><head/><body><p>A Wine app.Spark Store will automatically configure the wine kit for you</p></body></html></source>
|
<source><html><head/><body><p>A Wine app.Spark Store will automatically configure the wine kit for you</p></body></html></source>
|
||||||
<translation><html><head/><body><p>L'application wine. Spark Store configure automatiquement le kit Wine pour vous</p></body></html></translation>
|
<translation><html><head/><body><p>L'application wine. Spark Store configure automatiquement le kit Wine pour vous</p></body></html></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.ui" line="548"/>
|
<location filename="../src/pages/appintopage.ui" line="460"/>
|
||||||
<source><html><head/><body><p><img src=":/tags/dwine5.svg" height=30 width=30 /></p></body></html></source>
|
<location filename="../src/pages/appintopage.ui" line="463"/>
|
||||||
<translation type="unfinished"></translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<location filename="../src/pages/appintopage.ui" line="555"/>
|
|
||||||
<source><html><head/><body><p>Capable to Debian Stable</p></body></html></source>
|
<source><html><head/><body><p>Capable to Debian Stable</p></body></html></source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.ui" line="558"/>
|
<location filename="../src/pages/appintopage.ui" line="1200"/>
|
||||||
<source><html><head/><body><p><img src=":/tags/debian.svg" height="30" width="30"/></p></body></html></source>
|
|
||||||
<translation type="unfinished"></translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<location filename="../src/pages/appintopage.ui" line="1167"/>
|
|
||||||
<source>Update</source>
|
<source>Update</source>
|
||||||
<translation>Moderniser</translation>
|
<translation>Moderniser</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.ui" line="1196"/>
|
<location filename="../src/pages/appintopage.ui" line="1229"/>
|
||||||
<source>Contributor</source>
|
<source>Contributor</source>
|
||||||
<translation>Contributeurs</translation>
|
<translation>Contributeurs</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.ui" line="1203"/>
|
<location filename="../src/pages/appintopage.ui" line="1236"/>
|
||||||
<source>Pkgname</source>
|
<source>Pkgname</source>
|
||||||
<translation>Nom de l'emballage</translation>
|
<translation>Nom de l'emballage</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.ui" line="1309"/>
|
<location filename="../src/pages/appintopage.ui" line="1342"/>
|
||||||
<source>Author</source>
|
<source>Author</source>
|
||||||
<translation>Auteur</translation>
|
<translation>Auteur</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.ui" line="1345"/>
|
<location filename="../src/pages/appintopage.ui" line="1378"/>
|
||||||
<source>Size</source>
|
<source>Size</source>
|
||||||
<translation>Taille</translation>
|
<translation>Taille</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.ui" line="1381"/>
|
<location filename="../src/pages/appintopage.ui" line="1414"/>
|
||||||
<source>Website</source>
|
<source>Website</source>
|
||||||
<translation>Site Web</translation>
|
<translation>Site Web</translation>
|
||||||
</message>
|
</message>
|
||||||
@@ -260,18 +216,18 @@
|
|||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.cpp" line="578"/>
|
|
||||||
<location filename="../src/pages/appintopage.cpp" line="593"/>
|
<location filename="../src/pages/appintopage.cpp" line="593"/>
|
||||||
|
<location filename="../src/pages/appintopage.cpp" line="608"/>
|
||||||
<source>Spark Store</source>
|
<source>Spark Store</source>
|
||||||
<translation>Le Spark store</translation>
|
<translation>Le Spark store</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.cpp" line="578"/>
|
<location filename="../src/pages/appintopage.cpp" line="593"/>
|
||||||
<source>Uninstall succeeded</source>
|
<source>Uninstall succeeded</source>
|
||||||
<translation>Désinstallation réussie</translation>
|
<translation>Désinstallation réussie</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.cpp" line="593"/>
|
<location filename="../src/pages/appintopage.cpp" line="608"/>
|
||||||
<source>The URL has been copied to the clipboard</source>
|
<source>The URL has been copied to the clipboard</source>
|
||||||
<translation>L'URL a été copiée dans le presse - papiers</translation>
|
<translation>L'URL a été copiée dans le presse - papiers</translation>
|
||||||
</message>
|
</message>
|
||||||
@@ -359,9 +315,9 @@
|
|||||||
<translation>Le téléchargement est terminé.</translation>
|
<translation>Le téléchargement est terminé.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/widgets/common/downloaditem.cpp" line="218"/>
|
<location filename="../src/widgets/common/downloaditem.cpp" line="226"/>
|
||||||
<location filename="../src/widgets/common/downloaditem.cpp" line="229"/>
|
|
||||||
<location filename="../src/widgets/common/downloaditem.cpp" line="237"/>
|
<location filename="../src/widgets/common/downloaditem.cpp" line="237"/>
|
||||||
|
<location filename="../src/widgets/common/downloaditem.cpp" line="245"/>
|
||||||
<source>Spark Store</source>
|
<source>Spark Store</source>
|
||||||
<translation>Le Spark store</translation>
|
<translation>Le Spark store</translation>
|
||||||
</message>
|
</message>
|
||||||
@@ -372,32 +328,32 @@
|
|||||||
<translation>Installation en cours</translation>
|
<translation>Installation en cours</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/widgets/common/downloaditem.cpp" line="218"/>
|
<location filename="../src/widgets/common/downloaditem.cpp" line="226"/>
|
||||||
<source>Installation complete.</source>
|
<source>Installation complete.</source>
|
||||||
<translation>L'installation est terminée.</translation>
|
<translation>L'installation est terminée.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/widgets/common/downloaditem.cpp" line="219"/>
|
<location filename="../src/widgets/common/downloaditem.cpp" line="227"/>
|
||||||
<location filename="../src/widgets/common/downloaditem.cpp" line="220"/>
|
<location filename="../src/widgets/common/downloaditem.cpp" line="228"/>
|
||||||
<source>Finish</source>
|
<source>Finish</source>
|
||||||
<translation>Terminé</translation>
|
<translation>Terminé</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/widgets/common/downloaditem.cpp" line="227"/>
|
<location filename="../src/widgets/common/downloaditem.cpp" line="235"/>
|
||||||
<source>Retry</source>
|
<source>Retry</source>
|
||||||
<translation>Essayez à nouveau</translation>
|
<translation>Essayez à nouveau</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
|
||||||
<location filename="../src/widgets/common/downloaditem.cpp" line="229"/>
|
|
||||||
<location filename="../src/widgets/common/downloaditem.cpp" line="230"/>
|
|
||||||
<location filename="../src/widgets/common/downloaditem.cpp" line="231"/>
|
|
||||||
<source>Error happened in dpkg progress , please check the install info or try to reinstall.</source>
|
|
||||||
<translation>Une erreur s'est produite dans le processus dpkg, vérifiez les informations d'installation ou essayez de réinstaller.</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/widgets/common/downloaditem.cpp" line="237"/>
|
<location filename="../src/widgets/common/downloaditem.cpp" line="237"/>
|
||||||
<location filename="../src/widgets/common/downloaditem.cpp" line="238"/>
|
<location filename="../src/widgets/common/downloaditem.cpp" line="238"/>
|
||||||
<location filename="../src/widgets/common/downloaditem.cpp" line="239"/>
|
<location filename="../src/widgets/common/downloaditem.cpp" line="239"/>
|
||||||
|
<source>Error happened in dpkg progress , please check the install info or try to reinstall.</source>
|
||||||
|
<translation>Une erreur s'est produite dans le processus dpkg, vérifiez les informations d'installation ou essayez de réinstaller.</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../src/widgets/common/downloaditem.cpp" line="245"/>
|
||||||
|
<location filename="../src/widgets/common/downloaditem.cpp" line="246"/>
|
||||||
|
<location filename="../src/widgets/common/downloaditem.cpp" line="247"/>
|
||||||
<source>dpkg progress had been aborted, please check the install info or try to reinstall.</source>
|
<source>dpkg progress had been aborted, please check the install info or try to reinstall.</source>
|
||||||
<translation>La progression de DPKG a été interrompue, veuillez vérifier les informations d’installation ou essayer de réinstaller.</translation>
|
<translation>La progression de DPKG a été interrompue, veuillez vérifier les informations d’installation ou essayer de réinstaller.</translation>
|
||||||
</message>
|
</message>
|
||||||
|
|||||||
@@ -24,63 +24,58 @@
|
|||||||
<translation>下载量</translation>
|
<translation>下载量</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.ui" line="409"/>
|
<location filename="../src/pages/appintopage.ui" line="441"/>
|
||||||
<location filename="../src/pages/appintopage.ui" line="412"/>
|
<location filename="../src/pages/appintopage.ui" line="444"/>
|
||||||
|
<source><html><head/><body><p>Capable to deepin 23</p></body></html></source>
|
||||||
|
<translation type="unfinished"><html><head/><body><p>支持deepin 20</p></body></html> {23<?}</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../src/pages/appintopage.ui" line="528"/>
|
||||||
|
<location filename="../src/pages/appintopage.ui" line="531"/>
|
||||||
<source><html><head/><body><p>This app is developed by community user,we give this tag to honor those who contribute to the Linux Ecology</p></body></html></source>
|
<source><html><head/><body><p>This app is developed by community user,we give this tag to honor those who contribute to the Linux Ecology</p></body></html></source>
|
||||||
<translation><html><head/><body><p>这款应用是社区开发者开发的,我们为社区开发者颁发这款勋章以表彰他们对Linux生态的贡献</p></body></html></translation>
|
<translation><html><head/><body><p>这款应用是社区开发者开发的,我们为社区开发者颁发这款勋章以表彰他们对Linux生态的贡献</p></body></html></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.ui" line="447"/>
|
<location filename="../src/pages/appintopage.ui" line="422"/>
|
||||||
<location filename="../src/pages/appintopage.ui" line="450"/>
|
<location filename="../src/pages/appintopage.ui" line="425"/>
|
||||||
<source><html><head/><body><p>Capable to UOS home 20</p></body></html></source>
|
<source><html><head/><body><p>Capable to UOS home 20</p></body></html></source>
|
||||||
<translation><html><head/><body><p>支持UOS家庭版 20</p></body></html></translation>
|
<translation><html><head/><body><p>支持UOS家庭版 20</p></body></html></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.ui" line="466"/>
|
<location filename="../src/pages/appintopage.ui" line="566"/>
|
||||||
<location filename="../src/pages/appintopage.ui" line="469"/>
|
<location filename="../src/pages/appintopage.ui" line="569"/>
|
||||||
<source><html><head/><body><p>A deepin-wine2 app. Spark Store will automatically configure the wine kit for you.</p></body></html></source>
|
<source><html><head/><body><p>A deepin-wine2 app. Spark Store will automatically configure the wine kit for you.</p></body></html></source>
|
||||||
<translation>这是一款 deepin-wine2 应用。星火商店会为你自动配置wine环境</translation>
|
<translation>这是一款 deepin-wine2 应用。星火商店会为你自动配置wine环境</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.ui" line="472"/>
|
<location filename="../src/pages/appintopage.ui" line="547"/>
|
||||||
<source><html><head/><body><p><img src=":/tags/dwine2-small.png"/></p></body></html></source>
|
<location filename="../src/pages/appintopage.ui" line="550"/>
|
||||||
<translation></translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<location filename="../src/pages/appintopage.ui" line="485"/>
|
|
||||||
<location filename="../src/pages/appintopage.ui" line="488"/>
|
|
||||||
<source><html><head/><body><p>This is a DTK5 app,which means it would have better effect on Deepin Desktop Environment</p></body></html></source>
|
<source><html><head/><body><p>This is a DTK5 app,which means it would have better effect on Deepin Desktop Environment</p></body></html></source>
|
||||||
<translation><html><head/><body><p>这是一款DTK5应用,请使用深度桌面环境来获得最完美的体验</p></body></html></translation>
|
<translation><html><head/><body><p>这是一款DTK5应用,请使用深度桌面环境来获得最完美的体验</p></body></html></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.ui" line="504"/>
|
<location filename="../src/pages/appintopage.ui" line="509"/>
|
||||||
<location filename="../src/pages/appintopage.ui" line="507"/>
|
<location filename="../src/pages/appintopage.ui" line="512"/>
|
||||||
<source><html><head/><body><p>Capable to deepin 20</p></body></html></source>
|
|
||||||
<translation><html><head/><body><p>支持deepin 20</p></body></html></translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<location filename="../src/pages/appintopage.ui" line="523"/>
|
|
||||||
<location filename="../src/pages/appintopage.ui" line="526"/>
|
|
||||||
<source><html><head/><body><p>An Appimage to deb app.</p></body></html></source>
|
<source><html><head/><body><p>An Appimage to deb app.</p></body></html></source>
|
||||||
<translation><html><head/><body><p>这是一款Appimage转制应用.</p></body></html></translation>
|
<translation><html><head/><body><p>这是一款Appimage转制应用.</p></body></html></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.ui" line="611"/>
|
<location filename="../src/pages/appintopage.ui" line="644"/>
|
||||||
<source>Share</source>
|
<source>Share</source>
|
||||||
<translation>Spk分享链接</translation>
|
<translation>Spk分享链接</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.ui" line="618"/>
|
<location filename="../src/pages/appintopage.ui" line="651"/>
|
||||||
<source>APP Feedback</source>
|
<source>APP Feedback</source>
|
||||||
<translation>应用反馈</translation>
|
<translation>应用反馈</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.ui" line="1074"/>
|
<location filename="../src/pages/appintopage.ui" line="1107"/>
|
||||||
<source>Description</source>
|
<source>Description</source>
|
||||||
<translation>描述</translation>
|
<translation>描述</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.ui" line="910"/>
|
<location filename="../src/pages/appintopage.ui" line="943"/>
|
||||||
<source>Screen capture</source>
|
<source>Screen capture</source>
|
||||||
<translation>屏幕截图</translation>
|
<translation>屏幕截图</translation>
|
||||||
</message>
|
</message>
|
||||||
@@ -89,99 +84,60 @@
|
|||||||
<location filename="../src/pages/appintopage.cpp" line="210"/>
|
<location filename="../src/pages/appintopage.cpp" line="210"/>
|
||||||
<location filename="../src/pages/appintopage.cpp" line="351"/>
|
<location filename="../src/pages/appintopage.cpp" line="351"/>
|
||||||
<location filename="../src/pages/appintopage.cpp" line="396"/>
|
<location filename="../src/pages/appintopage.cpp" line="396"/>
|
||||||
<location filename="../src/pages/appintopage.cpp" line="575"/>
|
<location filename="../src/pages/appintopage.cpp" line="590"/>
|
||||||
<source>Download and Install</source>
|
<source>Download and Install</source>
|
||||||
<translation>下载并安装</translation>
|
<translation>下载并安装</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.ui" line="415"/>
|
<location filename="../src/pages/appintopage.ui" line="403"/>
|
||||||
<source><html><head/><body><p><img src=":/tags/community.svg" height=30 width=30 /></p></body></html></source>
|
<location filename="../src/pages/appintopage.ui" line="406"/>
|
||||||
<translation></translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<location filename="../src/pages/appintopage.ui" line="428"/>
|
|
||||||
<location filename="../src/pages/appintopage.ui" line="431"/>
|
|
||||||
<source><html><head/><body><p>Capable to Ubuntu 22.04</p></body></html></source>
|
<source><html><head/><body><p>Capable to Ubuntu 22.04</p></body></html></source>
|
||||||
<translation><html><head/><body><p>支持Ubuntu 22.04</p></body></html></translation>
|
<translation><html><head/><body><p>支持Ubuntu 22.04</p></body></html></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.ui" line="434"/>
|
<location filename="../src/pages/appintopage.ui" line="585"/>
|
||||||
<source><html><head/><body><p><img src=":/tags/ubuntu.png" width=30 height=30 /></p></body></html></source>
|
<location filename="../src/pages/appintopage.ui" line="588"/>
|
||||||
<translation></translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<location filename="../src/pages/appintopage.ui" line="453"/>
|
|
||||||
<source><html><head/><body><p><img src=":/tags/uos-authorize.svg" height=30 width=30 /></p></body></html></source>
|
|
||||||
<translation></translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<location filename="../src/pages/appintopage.ui" line="491"/>
|
|
||||||
<source><html><head/><body><p><img src=":/tags/logo_icon.svg" height=30 width=30 /></p></body></html></source>
|
|
||||||
<translation></translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<location filename="../src/pages/appintopage.ui" line="510"/>
|
|
||||||
<source><html><head/><body><p><img src=":/tags/deepin.svg" height=30 width=30 /></p></body></html></source>
|
|
||||||
<translation></translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<location filename="../src/pages/appintopage.ui" line="529"/>
|
|
||||||
<source><html><head/><body><p><img src=":/tags/a2d.png"height=30 width=30 /></p></body></html></source>
|
|
||||||
<translation></translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<location filename="../src/pages/appintopage.ui" line="542"/>
|
|
||||||
<location filename="../src/pages/appintopage.ui" line="545"/>
|
|
||||||
<source><html><head/><body><p>A Wine app.Spark Store will automatically configure the wine kit for you</p></body></html></source>
|
<source><html><head/><body><p>A Wine app.Spark Store will automatically configure the wine kit for you</p></body></html></source>
|
||||||
<translation>这是一款 Wine 应用。星火商店会为你自动配置wine环境</translation>
|
<translation>这是一款 Wine 应用。星火商店会为你自动配置wine环境</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.ui" line="548"/>
|
<location filename="../src/pages/appintopage.ui" line="460"/>
|
||||||
<source><html><head/><body><p><img src=":/tags/dwine5.svg" height=30 width=30 /></p></body></html></source>
|
<location filename="../src/pages/appintopage.ui" line="463"/>
|
||||||
<translation></translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<location filename="../src/pages/appintopage.ui" line="555"/>
|
|
||||||
<source><html><head/><body><p>Capable to Debian Stable</p></body></html></source>
|
<source><html><head/><body><p>Capable to Debian Stable</p></body></html></source>
|
||||||
<translation><html><head/><body><p>支持Debian Stable</p></body></html></translation>
|
<translation><html><head/><body><p>支持Debian Stable</p></body></html></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.ui" line="558"/>
|
<location filename="../src/pages/appintopage.ui" line="806"/>
|
||||||
<source><html><head/><body><p><img src=":/tags/debian.svg" height="30" width="30"/></p></body></html></source>
|
|
||||||
<translation></translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<location filename="../src/pages/appintopage.ui" line="773"/>
|
|
||||||
<source>Introduction</source>
|
<source>Introduction</source>
|
||||||
<translation>介绍</translation>
|
<translation>介绍</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.ui" line="1167"/>
|
<location filename="../src/pages/appintopage.ui" line="1200"/>
|
||||||
<source>Update</source>
|
<source>Update</source>
|
||||||
<translation>更新时间</translation>
|
<translation>更新时间</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.ui" line="1196"/>
|
<location filename="../src/pages/appintopage.ui" line="1229"/>
|
||||||
<source>Contributor</source>
|
<source>Contributor</source>
|
||||||
<translation>投稿用户</translation>
|
<translation>投稿用户</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.ui" line="1203"/>
|
<location filename="../src/pages/appintopage.ui" line="1236"/>
|
||||||
<source>Pkgname</source>
|
<source>Pkgname</source>
|
||||||
<translation>软件包名</translation>
|
<translation>软件包名</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.ui" line="1309"/>
|
<location filename="../src/pages/appintopage.ui" line="1342"/>
|
||||||
<source>Author</source>
|
<source>Author</source>
|
||||||
<translation>软件作者</translation>
|
<translation>软件作者</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.ui" line="1345"/>
|
<location filename="../src/pages/appintopage.ui" line="1378"/>
|
||||||
<source>Size</source>
|
<source>Size</source>
|
||||||
<translation>软件大小</translation>
|
<translation>软件大小</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.ui" line="1381"/>
|
<location filename="../src/pages/appintopage.ui" line="1414"/>
|
||||||
<source>Website</source>
|
<source>Website</source>
|
||||||
<translation>软件官网</translation>
|
<translation>软件官网</translation>
|
||||||
</message>
|
</message>
|
||||||
@@ -260,18 +216,18 @@
|
|||||||
<translation>当前应用不支持或未在您的平台上测试过,安装后可能会出现问题</translation>
|
<translation>当前应用不支持或未在您的平台上测试过,安装后可能会出现问题</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.cpp" line="578"/>
|
|
||||||
<location filename="../src/pages/appintopage.cpp" line="593"/>
|
<location filename="../src/pages/appintopage.cpp" line="593"/>
|
||||||
|
<location filename="../src/pages/appintopage.cpp" line="608"/>
|
||||||
<source>Spark Store</source>
|
<source>Spark Store</source>
|
||||||
<translation>星火应用商店</translation>
|
<translation>星火应用商店</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.cpp" line="578"/>
|
<location filename="../src/pages/appintopage.cpp" line="593"/>
|
||||||
<source>Uninstall succeeded</source>
|
<source>Uninstall succeeded</source>
|
||||||
<translation>卸载成功</translation>
|
<translation>卸载成功</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.cpp" line="593"/>
|
<location filename="../src/pages/appintopage.cpp" line="608"/>
|
||||||
<source>The URL has been copied to the clipboard</source>
|
<source>The URL has been copied to the clipboard</source>
|
||||||
<translation>链接已复制到剪贴板</translation>
|
<translation>链接已复制到剪贴板</translation>
|
||||||
</message>
|
</message>
|
||||||
@@ -359,9 +315,9 @@
|
|||||||
<translation>下载完成.</translation>
|
<translation>下载完成.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/widgets/common/downloaditem.cpp" line="218"/>
|
<location filename="../src/widgets/common/downloaditem.cpp" line="226"/>
|
||||||
<location filename="../src/widgets/common/downloaditem.cpp" line="229"/>
|
|
||||||
<location filename="../src/widgets/common/downloaditem.cpp" line="237"/>
|
<location filename="../src/widgets/common/downloaditem.cpp" line="237"/>
|
||||||
|
<location filename="../src/widgets/common/downloaditem.cpp" line="245"/>
|
||||||
<source>Spark Store</source>
|
<source>Spark Store</source>
|
||||||
<translation>星火应用商店</translation>
|
<translation>星火应用商店</translation>
|
||||||
</message>
|
</message>
|
||||||
@@ -372,32 +328,32 @@
|
|||||||
<translation>正在安装</translation>
|
<translation>正在安装</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/widgets/common/downloaditem.cpp" line="218"/>
|
<location filename="../src/widgets/common/downloaditem.cpp" line="226"/>
|
||||||
<source>Installation complete.</source>
|
<source>Installation complete.</source>
|
||||||
<translation>安装完成.</translation>
|
<translation>安装完成.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/widgets/common/downloaditem.cpp" line="219"/>
|
<location filename="../src/widgets/common/downloaditem.cpp" line="227"/>
|
||||||
<location filename="../src/widgets/common/downloaditem.cpp" line="220"/>
|
<location filename="../src/widgets/common/downloaditem.cpp" line="228"/>
|
||||||
<source>Finish</source>
|
<source>Finish</source>
|
||||||
<translation>完成</translation>
|
<translation>完成</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/widgets/common/downloaditem.cpp" line="227"/>
|
<location filename="../src/widgets/common/downloaditem.cpp" line="235"/>
|
||||||
<source>Retry</source>
|
<source>Retry</source>
|
||||||
<translation>重试</translation>
|
<translation>重试</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
|
||||||
<location filename="../src/widgets/common/downloaditem.cpp" line="229"/>
|
|
||||||
<location filename="../src/widgets/common/downloaditem.cpp" line="230"/>
|
|
||||||
<location filename="../src/widgets/common/downloaditem.cpp" line="231"/>
|
|
||||||
<source>Error happened in dpkg progress , please check the install info or try to reinstall.</source>
|
|
||||||
<translation>安装出现错误,请检查安装详情或尝试重新安装。</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/widgets/common/downloaditem.cpp" line="237"/>
|
<location filename="../src/widgets/common/downloaditem.cpp" line="237"/>
|
||||||
<location filename="../src/widgets/common/downloaditem.cpp" line="238"/>
|
<location filename="../src/widgets/common/downloaditem.cpp" line="238"/>
|
||||||
<location filename="../src/widgets/common/downloaditem.cpp" line="239"/>
|
<location filename="../src/widgets/common/downloaditem.cpp" line="239"/>
|
||||||
|
<source>Error happened in dpkg progress , please check the install info or try to reinstall.</source>
|
||||||
|
<translation>安装出现错误,请检查安装详情或尝试重新安装。</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../src/widgets/common/downloaditem.cpp" line="245"/>
|
||||||
|
<location filename="../src/widgets/common/downloaditem.cpp" line="246"/>
|
||||||
|
<location filename="../src/widgets/common/downloaditem.cpp" line="247"/>
|
||||||
<source>dpkg progress had been aborted, please check the install info or try to reinstall.</source>
|
<source>dpkg progress had been aborted, please check the install info or try to reinstall.</source>
|
||||||
<translation>安装被中止,请检查安装详情或尝试重新安装。</translation>
|
<translation>安装被中止,请检查安装详情或尝试重新安装。</translation>
|
||||||
</message>
|
</message>
|
||||||
|
|||||||
@@ -24,63 +24,58 @@
|
|||||||
<translation>下載次數</translation>
|
<translation>下載次數</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.ui" line="409"/>
|
<location filename="../src/pages/appintopage.ui" line="441"/>
|
||||||
<location filename="../src/pages/appintopage.ui" line="412"/>
|
<location filename="../src/pages/appintopage.ui" line="444"/>
|
||||||
|
<source><html><head/><body><p>Capable to deepin 23</p></body></html></source>
|
||||||
|
<translation type="unfinished"><html><head/><body><p>支持deepin 20</p></body></html> {23<?}</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../src/pages/appintopage.ui" line="528"/>
|
||||||
|
<location filename="../src/pages/appintopage.ui" line="531"/>
|
||||||
<source><html><head/><body><p>This app is developed by community user,we give this tag to honor those who contribute to the Linux Ecology</p></body></html></source>
|
<source><html><head/><body><p>This app is developed by community user,we give this tag to honor those who contribute to the Linux Ecology</p></body></html></source>
|
||||||
<translation><html><head/><body><p>这款应用是社区开发者开发的,我们为社区开发者颁发这款勋章以表彰他们对Linux生态的贡献</p></body></html></translation>
|
<translation><html><head/><body><p>这款应用是社区开发者开发的,我们为社区开发者颁发这款勋章以表彰他们对Linux生态的贡献</p></body></html></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.ui" line="447"/>
|
<location filename="../src/pages/appintopage.ui" line="422"/>
|
||||||
<location filename="../src/pages/appintopage.ui" line="450"/>
|
<location filename="../src/pages/appintopage.ui" line="425"/>
|
||||||
<source><html><head/><body><p>Capable to UOS home 20</p></body></html></source>
|
<source><html><head/><body><p>Capable to UOS home 20</p></body></html></source>
|
||||||
<translation><html><head/><body><p>支持UOS家庭版 20</p></body></html></translation>
|
<translation><html><head/><body><p>支持UOS家庭版 20</p></body></html></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.ui" line="466"/>
|
<location filename="../src/pages/appintopage.ui" line="566"/>
|
||||||
<location filename="../src/pages/appintopage.ui" line="469"/>
|
<location filename="../src/pages/appintopage.ui" line="569"/>
|
||||||
<source><html><head/><body><p>A deepin-wine2 app. Spark Store will automatically configure the wine kit for you.</p></body></html></source>
|
<source><html><head/><body><p>A deepin-wine2 app. Spark Store will automatically configure the wine kit for you.</p></body></html></source>
|
||||||
<translation>这是一款 deepin-wine2 应用。星火商店会为你自动配置wine环境</translation>
|
<translation>这是一款 deepin-wine2 应用。星火商店会为你自动配置wine环境</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.ui" line="472"/>
|
<location filename="../src/pages/appintopage.ui" line="547"/>
|
||||||
<source><html><head/><body><p><img src=":/tags/dwine2-small.png"/></p></body></html></source>
|
<location filename="../src/pages/appintopage.ui" line="550"/>
|
||||||
<translation></translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<location filename="../src/pages/appintopage.ui" line="485"/>
|
|
||||||
<location filename="../src/pages/appintopage.ui" line="488"/>
|
|
||||||
<source><html><head/><body><p>This is a DTK5 app,which means it would have better effect on Deepin Desktop Environment</p></body></html></source>
|
<source><html><head/><body><p>This is a DTK5 app,which means it would have better effect on Deepin Desktop Environment</p></body></html></source>
|
||||||
<translation><html><head/><body><p>这是一款DTK5应用,请使用深度桌面环境来获得最完美的体验</p></body></html></translation>
|
<translation><html><head/><body><p>这是一款DTK5应用,请使用深度桌面环境来获得最完美的体验</p></body></html></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.ui" line="504"/>
|
<location filename="../src/pages/appintopage.ui" line="509"/>
|
||||||
<location filename="../src/pages/appintopage.ui" line="507"/>
|
<location filename="../src/pages/appintopage.ui" line="512"/>
|
||||||
<source><html><head/><body><p>Capable to deepin 20</p></body></html></source>
|
|
||||||
<translation><html><head/><body><p>支持deepin 20</p></body></html></translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<location filename="../src/pages/appintopage.ui" line="523"/>
|
|
||||||
<location filename="../src/pages/appintopage.ui" line="526"/>
|
|
||||||
<source><html><head/><body><p>An Appimage to deb app.</p></body></html></source>
|
<source><html><head/><body><p>An Appimage to deb app.</p></body></html></source>
|
||||||
<translation><html><head/><body><p>这是一款Appimage转制应用.</p></body></html></translation>
|
<translation><html><head/><body><p>这是一款Appimage转制应用.</p></body></html></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.ui" line="611"/>
|
<location filename="../src/pages/appintopage.ui" line="644"/>
|
||||||
<source>Share</source>
|
<source>Share</source>
|
||||||
<translation>Spk共享链接</translation>
|
<translation>Spk共享链接</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.ui" line="618"/>
|
<location filename="../src/pages/appintopage.ui" line="651"/>
|
||||||
<source>APP Feedback</source>
|
<source>APP Feedback</source>
|
||||||
<translation>軟件錯誤回報</translation>
|
<translation>軟件錯誤回報</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.ui" line="1074"/>
|
<location filename="../src/pages/appintopage.ui" line="1107"/>
|
||||||
<source>Description</source>
|
<source>Description</source>
|
||||||
<translation>軟體詳細資料</translation>
|
<translation>軟體詳細資料</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.ui" line="910"/>
|
<location filename="../src/pages/appintopage.ui" line="943"/>
|
||||||
<source>Screen capture</source>
|
<source>Screen capture</source>
|
||||||
<translation>軟體演示</translation>
|
<translation>軟體演示</translation>
|
||||||
</message>
|
</message>
|
||||||
@@ -89,99 +84,60 @@
|
|||||||
<location filename="../src/pages/appintopage.cpp" line="210"/>
|
<location filename="../src/pages/appintopage.cpp" line="210"/>
|
||||||
<location filename="../src/pages/appintopage.cpp" line="351"/>
|
<location filename="../src/pages/appintopage.cpp" line="351"/>
|
||||||
<location filename="../src/pages/appintopage.cpp" line="396"/>
|
<location filename="../src/pages/appintopage.cpp" line="396"/>
|
||||||
<location filename="../src/pages/appintopage.cpp" line="575"/>
|
<location filename="../src/pages/appintopage.cpp" line="590"/>
|
||||||
<source>Download and Install</source>
|
<source>Download and Install</source>
|
||||||
<translation>下載並安裝</translation>
|
<translation>下載並安裝</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.ui" line="415"/>
|
<location filename="../src/pages/appintopage.ui" line="403"/>
|
||||||
<source><html><head/><body><p><img src=":/tags/community.svg" height=30 width=30 /></p></body></html></source>
|
<location filename="../src/pages/appintopage.ui" line="406"/>
|
||||||
<translation type="unfinished"></translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<location filename="../src/pages/appintopage.ui" line="428"/>
|
|
||||||
<location filename="../src/pages/appintopage.ui" line="431"/>
|
|
||||||
<source><html><head/><body><p>Capable to Ubuntu 22.04</p></body></html></source>
|
<source><html><head/><body><p>Capable to Ubuntu 22.04</p></body></html></source>
|
||||||
<translation><html><head/><body><p>支持Ubuntu 22.04</p></body></html></translation>
|
<translation><html><head/><body><p>支持Ubuntu 22.04</p></body></html></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.ui" line="434"/>
|
<location filename="../src/pages/appintopage.ui" line="585"/>
|
||||||
<source><html><head/><body><p><img src=":/tags/ubuntu.png" width=30 height=30 /></p></body></html></source>
|
<location filename="../src/pages/appintopage.ui" line="588"/>
|
||||||
<translation type="unfinished"></translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<location filename="../src/pages/appintopage.ui" line="453"/>
|
|
||||||
<source><html><head/><body><p><img src=":/tags/uos-authorize.svg" height=30 width=30 /></p></body></html></source>
|
|
||||||
<translation type="unfinished"></translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<location filename="../src/pages/appintopage.ui" line="491"/>
|
|
||||||
<source><html><head/><body><p><img src=":/tags/logo_icon.svg" height=30 width=30 /></p></body></html></source>
|
|
||||||
<translation type="unfinished"></translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<location filename="../src/pages/appintopage.ui" line="510"/>
|
|
||||||
<source><html><head/><body><p><img src=":/tags/deepin.svg" height=30 width=30 /></p></body></html></source>
|
|
||||||
<translation type="unfinished"></translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<location filename="../src/pages/appintopage.ui" line="529"/>
|
|
||||||
<source><html><head/><body><p><img src=":/tags/a2d.png"height=30 width=30 /></p></body></html></source>
|
|
||||||
<translation type="unfinished"></translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<location filename="../src/pages/appintopage.ui" line="542"/>
|
|
||||||
<location filename="../src/pages/appintopage.ui" line="545"/>
|
|
||||||
<source><html><head/><body><p>A Wine app.Spark Store will automatically configure the wine kit for you</p></body></html></source>
|
<source><html><head/><body><p>A Wine app.Spark Store will automatically configure the wine kit for you</p></body></html></source>
|
||||||
<translation>这是一款 Wine 应用。星火商店会为你自动配置wine环境</translation>
|
<translation>这是一款 Wine 应用。星火商店会为你自动配置wine环境</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.ui" line="548"/>
|
<location filename="../src/pages/appintopage.ui" line="460"/>
|
||||||
<source><html><head/><body><p><img src=":/tags/dwine5.svg" height=30 width=30 /></p></body></html></source>
|
<location filename="../src/pages/appintopage.ui" line="463"/>
|
||||||
<translation type="unfinished"></translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<location filename="../src/pages/appintopage.ui" line="555"/>
|
|
||||||
<source><html><head/><body><p>Capable to Debian Stable</p></body></html></source>
|
<source><html><head/><body><p>Capable to Debian Stable</p></body></html></source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.ui" line="558"/>
|
<location filename="../src/pages/appintopage.ui" line="806"/>
|
||||||
<source><html><head/><body><p><img src=":/tags/debian.svg" height="30" width="30"/></p></body></html></source>
|
|
||||||
<translation type="unfinished"></translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
|
||||||
<location filename="../src/pages/appintopage.ui" line="773"/>
|
|
||||||
<source>Introduction</source>
|
<source>Introduction</source>
|
||||||
<translation>軟體介紹</translation>
|
<translation>軟體介紹</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.ui" line="1167"/>
|
<location filename="../src/pages/appintopage.ui" line="1200"/>
|
||||||
<source>Update</source>
|
<source>Update</source>
|
||||||
<translation>更新时间</translation>
|
<translation>更新时间</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.ui" line="1196"/>
|
<location filename="../src/pages/appintopage.ui" line="1229"/>
|
||||||
<source>Contributor</source>
|
<source>Contributor</source>
|
||||||
<translation>投稿用户</translation>
|
<translation>投稿用户</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.ui" line="1203"/>
|
<location filename="../src/pages/appintopage.ui" line="1236"/>
|
||||||
<source>Pkgname</source>
|
<source>Pkgname</source>
|
||||||
<translation>软件包名</translation>
|
<translation>软件包名</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.ui" line="1309"/>
|
<location filename="../src/pages/appintopage.ui" line="1342"/>
|
||||||
<source>Author</source>
|
<source>Author</source>
|
||||||
<translation>软件作者</translation>
|
<translation>软件作者</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.ui" line="1345"/>
|
<location filename="../src/pages/appintopage.ui" line="1378"/>
|
||||||
<source>Size</source>
|
<source>Size</source>
|
||||||
<translation>软件大小</translation>
|
<translation>软件大小</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.ui" line="1381"/>
|
<location filename="../src/pages/appintopage.ui" line="1414"/>
|
||||||
<source>Website</source>
|
<source>Website</source>
|
||||||
<translation>软件官网</translation>
|
<translation>软件官网</translation>
|
||||||
</message>
|
</message>
|
||||||
@@ -260,18 +216,18 @@
|
|||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.cpp" line="578"/>
|
|
||||||
<location filename="../src/pages/appintopage.cpp" line="593"/>
|
<location filename="../src/pages/appintopage.cpp" line="593"/>
|
||||||
|
<location filename="../src/pages/appintopage.cpp" line="608"/>
|
||||||
<source>Spark Store</source>
|
<source>Spark Store</source>
|
||||||
<translation>星火应用商店</translation>
|
<translation>星火应用商店</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.cpp" line="578"/>
|
<location filename="../src/pages/appintopage.cpp" line="593"/>
|
||||||
<source>Uninstall succeeded</source>
|
<source>Uninstall succeeded</source>
|
||||||
<translation>卸载成功</translation>
|
<translation>卸载成功</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/pages/appintopage.cpp" line="593"/>
|
<location filename="../src/pages/appintopage.cpp" line="608"/>
|
||||||
<source>The URL has been copied to the clipboard</source>
|
<source>The URL has been copied to the clipboard</source>
|
||||||
<translation>链接已复制到剪贴板</translation>
|
<translation>链接已复制到剪贴板</translation>
|
||||||
</message>
|
</message>
|
||||||
@@ -359,9 +315,9 @@
|
|||||||
<translation>下載完成.</translation>
|
<translation>下載完成.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/widgets/common/downloaditem.cpp" line="218"/>
|
<location filename="../src/widgets/common/downloaditem.cpp" line="226"/>
|
||||||
<location filename="../src/widgets/common/downloaditem.cpp" line="229"/>
|
|
||||||
<location filename="../src/widgets/common/downloaditem.cpp" line="237"/>
|
<location filename="../src/widgets/common/downloaditem.cpp" line="237"/>
|
||||||
|
<location filename="../src/widgets/common/downloaditem.cpp" line="245"/>
|
||||||
<source>Spark Store</source>
|
<source>Spark Store</source>
|
||||||
<translation>星火应用商店</translation>
|
<translation>星火应用商店</translation>
|
||||||
</message>
|
</message>
|
||||||
@@ -372,32 +328,32 @@
|
|||||||
<translation>正在安裝</translation>
|
<translation>正在安裝</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/widgets/common/downloaditem.cpp" line="218"/>
|
<location filename="../src/widgets/common/downloaditem.cpp" line="226"/>
|
||||||
<source>Installation complete.</source>
|
<source>Installation complete.</source>
|
||||||
<translation>安裝完成.</translation>
|
<translation>安裝完成.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/widgets/common/downloaditem.cpp" line="219"/>
|
<location filename="../src/widgets/common/downloaditem.cpp" line="227"/>
|
||||||
<location filename="../src/widgets/common/downloaditem.cpp" line="220"/>
|
<location filename="../src/widgets/common/downloaditem.cpp" line="228"/>
|
||||||
<source>Finish</source>
|
<source>Finish</source>
|
||||||
<translation>完成</translation>
|
<translation>完成</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/widgets/common/downloaditem.cpp" line="227"/>
|
<location filename="../src/widgets/common/downloaditem.cpp" line="235"/>
|
||||||
<source>Retry</source>
|
<source>Retry</source>
|
||||||
<translation>重试</translation>
|
<translation>重试</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
|
||||||
<location filename="../src/widgets/common/downloaditem.cpp" line="229"/>
|
|
||||||
<location filename="../src/widgets/common/downloaditem.cpp" line="230"/>
|
|
||||||
<location filename="../src/widgets/common/downloaditem.cpp" line="231"/>
|
|
||||||
<source>Error happened in dpkg progress , please check the install info or try to reinstall.</source>
|
|
||||||
<translation>安裝出現錯誤,請檢查安裝詳情或嘗試重新安裝。</translation>
|
|
||||||
</message>
|
|
||||||
<message>
|
<message>
|
||||||
<location filename="../src/widgets/common/downloaditem.cpp" line="237"/>
|
<location filename="../src/widgets/common/downloaditem.cpp" line="237"/>
|
||||||
<location filename="../src/widgets/common/downloaditem.cpp" line="238"/>
|
<location filename="../src/widgets/common/downloaditem.cpp" line="238"/>
|
||||||
<location filename="../src/widgets/common/downloaditem.cpp" line="239"/>
|
<location filename="../src/widgets/common/downloaditem.cpp" line="239"/>
|
||||||
|
<source>Error happened in dpkg progress , please check the install info or try to reinstall.</source>
|
||||||
|
<translation>安裝出現錯誤,請檢查安裝詳情或嘗試重新安裝。</translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<location filename="../src/widgets/common/downloaditem.cpp" line="245"/>
|
||||||
|
<location filename="../src/widgets/common/downloaditem.cpp" line="246"/>
|
||||||
|
<location filename="../src/widgets/common/downloaditem.cpp" line="247"/>
|
||||||
<source>dpkg progress had been aborted, please check the install info or try to reinstall.</source>
|
<source>dpkg progress had been aborted, please check the install info or try to reinstall.</source>
|
||||||
<translation>安裝被中止,請檢查安裝詳情或嘗試重新安裝。</translation>
|
<translation>安裝被中止,請檢查安裝詳情或嘗試重新安裝。</translation>
|
||||||
</message>
|
</message>
|
||||||
|
|||||||