Compare commits

..

34 Commits

Author SHA1 Message Date
88a157dd45 修复弹不出来ace提示的问题 2025-06-14 16:41:26 +08:00
34b8670a40 Revert "修复无法弹出ACE提示的问题"
This reverts commit d5b2d4ddf4.
2025-06-14 08:36:58 +00:00
d5b2d4ddf4 修复无法弹出ACE提示的问题
Signed-off-by: shenmo <jifengshenmo@outlook.com>
2025-06-14 08:20:10 +00:00
01bb90879b 修复ACE指定失败
Signed-off-by: shenmo <jifengshenmo@outlook.com>
2025-06-14 07:58:01 +00:00
1c64278723 支持在 5.11 下编译
Signed-off-by: shenmo <jifengshenmo@outlook.com>
2025-06-14 07:50:28 +00:00
17c90c5d07 4.8.0 2025-06-13 14:29:01 +08:00
539607553d 支持 amber-ce-sid amber-ce-deepin23 的tag 2025-06-13 12:56:13 +08:00
85daec6428 !337 添加 ACE 兼容环境 deepin 容器 Tags
Merge pull request !337 from MeowVing/dev
2025-06-13 04:39:24 +00:00
e38d23dba0 添加 ACE 兼容环境 deepin 容器 Tags
Signed-off-by: MeowVing <meowving@foxmail.com>
2025-06-13 01:18:00 +00:00
9593ebb813 chore: modify .gitignore
ignore obj-* for dpkg-buildpackage

Log: as title
2025-06-13 01:38:08 +08:00
fd1f13f59d fix: render error for tag icons in AppInfoPage
SVG render error in Qt6, so fallback to use PNG;
add CustomLabel for render PNG not blurry with HIDPI

Log: add PNG resources for tag icons;
add CustomLabel class for PNG rendering
2025-06-13 01:34:24 +08:00
c5b5b6d3ba 在ACE中安装会汇报主机的信息,在ACE中安装商店会忽略要求直接安装 2025-06-12 00:56:54 +08:00
ef4b21fb8c 480test1 2025-06-12 00:34:30 +08:00
72e3d54f8d 修复在ACE中的判定条件,支持判定小小电脑 2025-06-12 00:32:19 +08:00
50fd18fbe4 重新加回安装后创建快捷方式 2025-06-12 00:19:01 +08:00
e98def4839 修复 ss-launcher 无法启动应用的问题 2025-06-12 00:14:12 +08:00
da65d3b90e 修复部分环境下仍然会弹出tag的问题 2025-06-12 00:12:55 +08:00
33c892b39d 修改ssinstall 2025-06-11 23:14:44 +08:00
ca6e47e9a3 4.8.0~test1 2025-06-11 22:20:28 +08:00
0ca73a2a28 完成V4.8.0支持 2025-06-11 22:14:51 +08:00
9493f0738a add assets 2025-06-11 21:41:49 +08:00
688ed679b5 !336 为软件安装平台的支持情况补充新的 Tags
Merge pull request !336 from MeowVing/dev
2025-06-11 13:38:07 +00:00
233b5e8c76 添加本机安装、ACE 兼容环境安装 Tags
Signed-off-by: MeowVing <meowving@foxmail.com>
2025-06-11 13:30:14 +00:00
4fc8ef3f48 初步给用户指引,指导用户使用ACE 2025-06-11 20:41:51 +08:00
cd4f104e1a 完成uninstaller的ACE支持 2025-06-11 15:44:48 +08:00
9b92894e4f 添加ssinstall tips,方便后续更新 2025-06-11 15:33:00 +08:00
05a5b89464 fix: 现在安装到ACE的软件包不会再报错了 2025-06-11 15:10:09 +08:00
fb6446292c add: Sparky 星小火 2025-06-10 14:51:00 +08:00
5bc65827b2 在执行安装前,自动配置ACE的依赖,以防止部分应用依赖写的不全 2025-06-09 23:25:33 +08:00
c0b2edf1b0 check_is_installed 列表同步ssinstall , ssinstall 拒绝在 ACE 内部安装到 ACE 2025-06-09 13:34:14 +08:00
f08366a3d5 fix: rarely crash after install finished
in DownloadItem::slotAsyncInstall, QProcess should not be deleteLater
since it is not pointer

Log: fix rarely crash; move installExtraArg set before download started
2025-06-07 13:43:34 +08:00
8cb92d9972 支持 ACE 相关参数Tag 2025-06-07 11:18:06 +08:00
6640dc9bba 在主机或者 ACE 安装之前,使用 aptss install --dry-run 方式测试能否安装成功来替代直接尝试安装,如果测试失败了,则aptss update 后再次尝试,如果失败了就直接退出,不再尝试安装 2025-06-05 17:08:03 +08:00
3c2a6ac635 支持多个ACE参数 2025-06-05 14:51:32 +08:00
50 changed files with 1278 additions and 848 deletions

2
.gitignore vendored
View File

@@ -53,4 +53,4 @@ debian/*.substvars
debian/spark-store
.vscode/*
src/spark-store
obj-*

6
debian/changelog vendored
View File

@@ -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

View File

@@ -35,14 +35,13 @@ Application::Application(int &argc, char **argv)
setApplicationName("spark-store"); // 影响 ~/.config/spark-union ~/.local/share/spark-union 下文件夹名称
setApplicationDisplayName(QObject::tr("Spark Store")); // 设置窗口显示标题 (Wayland 下会显示 Qt 原生标题栏)
setProductName(QObject::tr("Spark Store"));
setProductIcon(QIcon::fromTheme("spark-store"));
setProductIcon(QIcon(":/icon/sparky.png"));
setApplicationHomePage("https://gitee.com/spark-store-project");
setApplicationDescription(
QObject::tr(
"<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:12pt;'>Spark developers</span>"));
setApplicationLicense(" <a href='https://gitee.com/spark-store-project/spark-store/blob/Flamescion/LICENSE'>Spark Opensource License</a> ");
"<span style=' font-size:10pt;font-weight:60;'>Sparky is our mascot, designed by <a href='https://tai3.cn/'>Tyson Tan</a></span><br/>"));
setApplicationLicense(" <a href='https://gitee.com/spark-store-project/spark-store/blob/Flamescion/LICENSE'>GPL V3</a> ");
// 检查 ~/.config/spark-union/spark-store 文件夹是否存在
checkAppConfigLocation();

View File

@@ -44,6 +44,7 @@
<file>icon/light/text.svg</file>
<file>icon/light/update.svg</file>
<file>icon/logo.svg</file>
<file>icon/sparky.png</file>
<file>json/features.json</file>
<file>tags/a2d_full.svg</file>
<file>tags/a2d.png</file>
@@ -72,6 +73,21 @@
<file>tags/uos_full.svg</file>
<file>tags/uos.png</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>tags/amber-ce-deepin_full.svg</file>
<file>tags/amber-ce-deepin.svg</file>
<file>tags/amber-ce-deepin.png</file>
</qresource>
</RCC>

BIN
src/assets/icon/sparky.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 401 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.7 KiB

After

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.6 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 22 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.1 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 18 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.9 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 18 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.2 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 18 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.7 KiB

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.8 KiB

After

Width:  |  Height:  |  Size: 7.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.0 KiB

After

Width:  |  Height:  |  Size: 9.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.9 KiB

After

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.7 KiB

After

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.5 KiB

After

Width:  |  Height:  |  Size: 6.0 KiB

BIN
src/assets/tags/native.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 11 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.0 KiB

After

Width:  |  Height:  |  Size: 7.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.7 KiB

After

Width:  |  Height:  |  Size: 6.6 KiB

View File

@@ -8,6 +8,8 @@
#include <QSettings>
#include <QProcess>
#include <QDebug>
#include <QFile>
#include <QTextStream>
DataCollectorAndUploader::DataCollectorAndUploader(QObject *parent) : QObject(parent)
{
@@ -23,25 +25,26 @@ void DataCollectorAndUploader::collectData()
QString distributor_id;
QString release;
QString architecture;
QSettings config(QStandardPaths::writableLocation(QStandardPaths::AppConfigLocation) + "/config.ini", QSettings::IniFormat);
QString version = config.value("build/version").toString();
QString uuid = config.value("info/uuid").toString();
// Execute lsb_release --all and capture the output
QProcess lsbProcess;
lsbProcess.start("lsb_release", QStringList() << "--all");
lsbProcess.waitForFinished();
QString lsbOutput = lsbProcess.readAllStandardOutput();
QStringList lines = lsbOutput.split('\n');
for (const QString &line : lines) {
if (line.contains("Distributor ID:")) {
distributor_id = line.split(":").last().trimmed();
} else if (line.contains("Release:")) {
release = line.split(":").last().trimmed();
// Read /etc/os-release file
QFile osReleaseFile("/etc/os-release");
if (osReleaseFile.open(QIODevice::ReadOnly | QIODevice::Text)) {
QTextStream in(&osReleaseFile);
while (!in.atEnd()) {
QString line = in.readLine();
if (line.startsWith("ID=")) {
distributor_id = line.mid(3).remove('"').trimmed();
} else if (line.startsWith("VERSION_ID=")) {
release = line.mid(11).remove('"').trimmed();
}
}
osReleaseFile.close();
} else {
qWarning() << "Could not open /etc/os-release file";
}
// Execute uname -m to get the architecture
@@ -58,8 +61,6 @@ void DataCollectorAndUploader::collectData()
json.insert("Store_Version", version);
json.insert("UUID", uuid);
// Convert to byte array
QJsonDocument doc(json);
QByteArray jsonData = doc.toJson();

View File

@@ -151,24 +151,25 @@ void AppIntoPage::openUrl(const QUrl &url)
{
isInstalled = true;
QProcess isUpdate;
isUpdate.start("dpkg-query", QStringList() << "--showformat='${Version}'"
<< "--show" << info["Pkgname"].toString());
isUpdate.waitForFinished(180 * 1000); // 默认超时 3 分钟
QString localVersion = isUpdate.readAllStandardOutput();
localVersion.replace("'", "");
// QProcess isUpdate;
// isUpdate.start("dpkg-query", QStringList() << "--showformat='${Version}'"
// << "--show" << info["Pkgname"].toString());
// isUpdate.waitForFinished(180 * 1000); // 默认超时 3 分钟
// QString localVersion = isUpdate.readAllStandardOutput();
// localVersion.replace("'", "");
isUpdate.start("dpkg", QStringList() << "--compare-versions" << localVersion << "ge" << info["Version"].toString());
isUpdate.waitForFinished(180 * 1000); // 默认超时 3 分钟
if (isUpdate.exitCode() == 0 && isUpdate.exitStatus() == QProcess::NormalExit)
{
isUpdated = true;
}
else
{
isUpdated = false;
}
isUpdate.close();
// isUpdate.start("dpkg", QStringList() << "--compare-versions" << localVersion << "ge" << info["Version"].toString());
// isUpdate.waitForFinished(180 * 1000); // 默认超时 3 分钟
// if (isUpdate.exitCode() == 0 && isUpdate.exitStatus() == QProcess::NormalExit)
// {
// isUpdated = true;
// }
// else
// {
// isUpdated = false;
// }
// isUpdate.close();
isUpdated = true; //去掉直接点击升级的功能
}
else
{
@@ -234,6 +235,12 @@ void AppIntoPage::clear()
ui->tag_debian->hide();
ui->tag_ubuntu->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->title->clear();
ui->version->clear();
@@ -404,53 +411,87 @@ void AppIntoPage::setAppinfoTags(const QStringList &tagList)
bool deepinSupport = false;
bool uosSupport = false;
bool debianSupport = false;
bool hasAmberTag = false;
// First pass: Check if any Amber tags exist
foreach (const QString &tag, tagList)
{
if (tag == "community")
if (tag.startsWith("amber-ce-"))
{
ui->tag_community->show();
}
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();
hasAmberTag = true;
break; // No need to continue checking
}
}
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)
{
if (!SettingsPage::needUncompatibleNotification) {
@@ -536,7 +577,27 @@ void AppIntoPage::on_downloadButton_clicked()
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)
{
return;
@@ -566,11 +627,11 @@ void AppIntoPage::on_pushButton_3_clicked()
uninstall.waitForFinished(-1);
uninstall.close();
QProcess check;
check.start("dpkg", QStringList() << "-s" << info["Pkgname"].toString().toLower());
check.waitForFinished(-1);
// QProcess check;
// check.start("dpkg", QStringList() << "-s" << info["Pkgname"].toString().toLower());
// 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->pushButton_3->hide();
@@ -581,7 +642,7 @@ void AppIntoPage::on_pushButton_3_clicked()
ui->downloadButton->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/";
QProcess::startDetached("xdg-open", QStringList{feedbackURL});
}
}

View File

@@ -385,14 +385,20 @@
</property>
<property name="sizeHint" stdset="0">
<size>
<width>184</width>
<height>20</height>
<width>13</width>
<height>37</height>
</size>
</property>
</spacer>
</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">
<size>
<width>40</width>
@@ -411,7 +417,13 @@
</widget>
</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">
<size>
<width>40</width>
@@ -430,7 +442,13 @@
</widget>
</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">
<size>
<width>40</width>
@@ -449,7 +467,13 @@
</widget>
</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">
<size>
<width>40</width>
@@ -467,6 +491,131 @@
</property>
</widget>
</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>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;This app can only be installed natively&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="whatsThis">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;This app can only be installed natively&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</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>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;This app will be installed to debian12 ACE&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="whatsThis">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;This app will be installed to debian12 ACE&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</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>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;This app will be installed to debian13 ACE&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="whatsThis">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;This app will be installed to debian13 ACE&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</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>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;This app will be installed to debian SID ACE&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="whatsThis">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;This app will be installed to debian SID ACE&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</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>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;This app will be installed to deepin23 ACE&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="whatsThis">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;This app will be installed to deepin23 ACE&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="pixmap">
<pixmap resource="../assets/assets.qrc">:/tags/amber-ce-deepin.png</pixmap>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_5">
<property name="orientation">
@@ -474,8 +623,8 @@
</property>
<property name="sizeHint" stdset="0">
<size>
<width>184</width>
<height>20</height>
<width>18</width>
<height>37</height>
</size>
</property>
</spacer>
@@ -498,7 +647,13 @@
</spacer>
</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">
<size>
<width>40</width>
@@ -517,7 +672,13 @@
</widget>
</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">
<size>
<width>40</width>
@@ -536,7 +697,13 @@
</widget>
</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">
<size>
<width>40</width>
@@ -555,7 +722,13 @@
</widget>
</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">
<size>
<width>40</width>
@@ -574,7 +747,13 @@
</widget>
</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">
<size>
<width>40</width>
@@ -718,7 +897,7 @@
<rect>
<x>0</x>
<y>0</y>
<width>524</width>
<width>482</width>
<height>601</height>
</rect>
</property>
@@ -1452,6 +1631,13 @@ QListWidget::item::selected
</item>
</layout>
</widget>
<customwidgets>
<customwidget>
<class>CustomLabel</class>
<extends>QLabel</extends>
<header>widgets/common/customlabel.h</header>
</customwidget>
</customwidgets>
<resources>
<include location="../assets/assets.qrc"/>
</resources>

View File

@@ -47,6 +47,7 @@ SOURCES += \
utils/utils.cpp \
utils/widgetanimation.cpp \
widgets/base/basewidgetopacity.cpp \
widgets/common/customlabel.cpp \
widgets/common/downloaditem.cpp \
widgets/common/progressbutton.cpp \
widgets/common/smoothlistwidget.cpp \
@@ -73,6 +74,7 @@ HEADERS += \
utils/utils.h \
utils/widgetanimation.h \
widgets/base/basewidgetopacity.h \
widgets/common/customlabel.h \
widgets/common/downloaditem.h \
widgets/common/progressbutton.h \
widgets/common/smoothlistwidget.h \

View 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);
}

View 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

View File

@@ -175,8 +175,16 @@ void DownloadItem::slotAsyncInstall(int t)
switch (t)
{
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;
case 1:
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;
isInstall.start("dpkg", QStringList() << "-s" << pkgName);
isInstall.waitForFinished(180 * 1000); // 默认超时 3 分钟
int error = QString::fromStdString(isInstall.readAllStandardError().toStdString()).length();
if (error == 0 && !haveError)
// QProcess isInstall;
// isInstall.start("dpkg", QStringList() << "-s" << pkgName);
// isInstall.waitForFinished(180 * 1000); // 默认超时 3 分钟
// int error = QString::fromStdString(isInstall.readAllStandardError().toStdString()).length();
if ( !haveError)
{
ui->pushButton_install->hide();
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();
DownloadItem::isInstall = false;
installer.deleteLater();
isInstall.deleteLater();
emit finished(error == 0 && !haveError && !notRoot);
emit finished(!haveError && !notRoot);
}

View File

@@ -43,6 +43,9 @@ public:
void install(int);
// 新增:安装时额外参数
QString installExtraArg;
private:
Ui::DownloadItem *ui;

View File

@@ -85,7 +85,9 @@ void DownloadListWidget::clearItem()
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())
{
@@ -104,6 +106,7 @@ DownloadItem* DownloadListWidget::addItem(QString name, QString fileName, QStrin
di->setName(name);
di->setFileName(fileName);
di->pkgName = pkgName;
di->installExtraArg = installExtraArg;
di->seticon(icon);
QListWidgetItem *pItem = new QListWidgetItem();
pItem->setSizeHint(QSize(240, 56)); // ui 中单个 downloaditem 高度固定 56px上下 margin 8px图片固定 48x48

View File

@@ -19,7 +19,9 @@ class DownloadListWidget : public DBlurEffectWidget
Q_OBJECT
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 allDownload = 0;
int toDownload = 0;

View File

@@ -2,7 +2,7 @@
# 初始化常量和全局变量
readonly SPARK_DOWNLOAD_SERVER_URL="https://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=(
"bookworm-run:amber-ce-bookworm"
"trixie-run:amber-ce-trixie"
@@ -13,6 +13,30 @@ readonly ACE_ENVIRONMENTS_FOR_AUTOINSTALL=(
"bookworm-run:amber-ce-bookworm"
"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环境参数帮助信息
function generate_ace_help() {
local help_text=""
@@ -42,7 +66,7 @@ case $(arch) in
esac
# 帮助函数
function show_help() {
echo "Spark Store Audit script. 星火商店审核脚本"
echo "Spark Store Anstall script. 星火商店审核脚本"
echo "用法: $0 [选项] <deb路径>"
echo "选项:"
echo " -h, --help 显示帮助信息"
@@ -54,51 +78,53 @@ function show_help() {
}
# 参数解析
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
FORCE_ACE_ENV="${ace_entry%%:*}"
is_ace_param=1
shift
break
fi
done
# 如果不是ACE参数则视为DEB路径
if [ "$is_ace_param" -eq 0 ]; then
DEBPATH="$1"
shift
fi
;;
esac
done
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环境参数则视为DEB路径
if [ "$is_ace_param" -eq 0 ]; then
DEBPATH="$1"
shift
fi
;;
esac
done
}
# 验证当前用户
function validate_user() {
if [ "$(id -u)" != "0" ]; then
@@ -253,6 +279,10 @@ function install_in_ace_env() {
local deb_path="$2"
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
return 1
fi
@@ -260,37 +290,47 @@ function install_in_ace_env() {
echo "----------------------------------------"
echo "正在尝试使用 $ace_cmd 环境安装..."
echo "----------------------------------------"
# 在ACE环境中执行安装
if $ace_cmd "ensure_aptss_exist && { dpkg -i '$deb_path' || aptss install '$deb_path' -yfq; }"; then
return 0
else
# 如果第一次安装失败执行aptss update后再试一次
echo "第一次安装失败,正在更新仓库信息后重试..."
$ace_cmd "ensure_aptss_exist"
# 首先尝试dry-run测试
if ! $ace_cmd "aptss install --dry-run '$deb_path'"; then
echo "初始dry-run测试失败尝试更新后重试..."
$ace_cmd "aptss update"
if $ace_cmd "dpkg -i '$deb_path' || aptss install '$deb_path' -yfq"; then
return 0
else
if ! $ace_cmd "aptss install --dry-run '$deb_path'"; then
echo "dry-run测试仍然失败放弃安装"
echo "OMG_IT_GOES_WRONG"
return 1
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() {
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
return 0
else
# 如果第一次安装失败执行aptss update后再试一次
echo "第一次安装失败,正在更新仓库信息后重试..."
aptss update
if dpkg -i "$deb_path" || aptss install "$deb_path" -yfq; then
return 0
else
return 1
fi
return 1
fi
}
@@ -300,11 +340,12 @@ function auto_try_install() {
# 首先尝试在主机安装
if install_in_host "$deb_path"; then
create_desktop_file
return 0
fi
# 如果主机安装失败且不在强制本地模式尝试ACE环境
if [ "$FORCE_NATIVE" -eq 0 ]; then
# 如果主机安装失败并非在ACE内运行且不在强制本地模式尝试ACE环境
if [ "$FORCE_NATIVE" -eq 0 ] && [ "$IS_ACE_ENV" = "" ] && ! command -v termux-chroot; then
for ace_entry in "${ACE_ENVIRONMENTS_FOR_AUTOINSTALL[@]}"; do
local ace_cmd=${ace_entry%%:*}
local ace_env_pkg=${ace_entry#*:}
@@ -322,7 +363,6 @@ function auto_try_install() {
return 1
}
# 清理安装后的文件
function post_install_cleanup() {
local success=$1
@@ -380,7 +420,9 @@ function lock_file() {
}
function unlock_file() {
if [ -e "$1" ];then
chattr -i "$1"
fi
}
# 主安装流程
@@ -402,52 +444,76 @@ function main_install() {
DEBPATH=$(realpath "$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)
local install_success=1
if [ -n "$FORCE_ACE_ENV" ]; then
# 查找对应的ACE环境包名
local ace_env_pkg=""
for ace_entry in "${ACE_ENVIRONMENTS[@]}"; do
if [ "${ace_entry%%:*}" = "$FORCE_ACE_ENV" ]; then
ace_env_pkg="${ace_entry#*:}"
break
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=$?
if [ "$FORCE_NATIVE" -eq 1 ] || [ "$IS_ACE_ENV" = "1" ]; then
# 优先使用主机安装忽略所有ACE参数
echo "忽略ACE使用主机安装 $package_name"
install_in_host "$DEBPATH"
install_success=$?
# 安装成功后在主机创建桌面快捷方式
if [ "$install_success" -eq 0 ]; then
create_desktop_file
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"
}
# 执行主函数

View File

@@ -2,7 +2,7 @@
# 初始化常量和全局变量
readonly SPARK_DOWNLOAD_SERVER_URL="https://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=(
"bookworm-run:amber-ce-bookworm"
"trixie-run:amber-ce-trixie"
@@ -13,6 +13,30 @@ readonly ACE_ENVIRONMENTS_FOR_AUTOINSTALL=(
"bookworm-run:amber-ce-bookworm"
"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环境参数帮助信息
function generate_ace_help() {
local help_text=""
@@ -54,51 +78,53 @@ function show_help() {
}
# 参数解析
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
FORCE_ACE_ENV="${ace_entry%%:*}"
is_ace_param=1
shift
break
fi
done
# 如果不是ACE参数则视为DEB路径
if [ "$is_ace_param" -eq 0 ]; then
DEBPATH="$1"
shift
fi
;;
esac
done
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环境参数则视为DEB路径
if [ "$is_ace_param" -eq 0 ]; then
DEBPATH="$1"
shift
fi
;;
esac
done
}
# 验证当前用户
function validate_user() {
if [ "$(id -u)" != "0" ]; then
@@ -253,6 +279,10 @@ function install_in_ace_env() {
local deb_path="$2"
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
return 1
fi
@@ -260,37 +290,47 @@ function install_in_ace_env() {
echo "----------------------------------------"
echo "正在尝试使用 $ace_cmd 环境安装..."
echo "----------------------------------------"
# 在ACE环境中执行安装
if $ace_cmd "ensure_aptss_exist && { dpkg -i '$deb_path' || aptss install '$deb_path' -yfq; }"; then
return 0
else
# 如果第一次安装失败执行aptss update后再试一次
echo "第一次安装失败,正在更新仓库信息后重试..."
$ace_cmd "ensure_aptss_exist"
# 首先尝试dry-run测试
if ! $ace_cmd "aptss install --dry-run '$deb_path'"; then
echo "初始dry-run测试失败尝试更新后重试..."
$ace_cmd "aptss update"
if $ace_cmd "dpkg -i '$deb_path' || aptss install '$deb_path' -yfq"; then
return 0
else
if ! $ace_cmd "aptss install --dry-run '$deb_path'"; then
echo "dry-run测试仍然失败放弃安装"
echo "OMG_IT_GOES_WRONG"
return 1
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() {
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
return 0
else
# 如果第一次安装失败执行aptss update后再试一次
echo "第一次安装失败,正在更新仓库信息后重试..."
aptss update
if dpkg -i "$deb_path" || aptss install "$deb_path" -yfq; then
return 0
else
return 1
fi
return 1
fi
}
@@ -300,11 +340,12 @@ function auto_try_install() {
# 首先尝试在主机安装
if install_in_host "$deb_path"; then
create_desktop_file
return 0
fi
# 如果主机安装失败且不在强制本地模式尝试ACE环境
if [ "$FORCE_NATIVE" -eq 0 ]; then
# 如果主机安装失败并非在ACE内运行且不在强制本地模式尝试ACE环境
if [ "$FORCE_NATIVE" -eq 0 ] && [ "$IS_ACE_ENV" = "" ] && ! command -v termux-chroot; then
for ace_entry in "${ACE_ENVIRONMENTS_FOR_AUTOINSTALL[@]}"; do
local ace_cmd=${ace_entry%%:*}
local ace_env_pkg=${ace_entry#*:}
@@ -322,7 +363,6 @@ function auto_try_install() {
return 1
}
# 清理安装后的文件
function post_install_cleanup() {
local success=$1
@@ -380,7 +420,9 @@ function lock_file() {
}
function unlock_file() {
if [ -e "$1" ];then
chattr -i "$1"
fi
}
# 主安装流程
@@ -418,36 +460,72 @@ function main_install() {
package_name=$(dpkg-deb -f "$DEBPATH" Package)
local install_success=1
if [ -n "$FORCE_ACE_ENV" ]; then
# 查找对应的ACE环境包名
local ace_env_pkg=""
for ace_entry in "${ACE_ENVIRONMENTS[@]}"; do
if [ "${ace_entry%%:*}" = "$FORCE_ACE_ENV" ]; then
ace_env_pkg="${ace_entry#*:}"
break
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=$?
if [ "$FORCE_NATIVE" -eq 1 ] || [ "$IS_ACE_ENV" = "1" ]; then
# 优先使用主机安装忽略所有ACE参数
echo "忽略ACE使用主机安装 $package_name"
install_in_host "$DEBPATH"
install_success=$?
# 安装成功后在主机创建桌面快捷方式
if [ "$install_success" -eq 0 ]; then
create_desktop_file
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"
}
# 执行主函数

View File

@@ -1,14 +1,17 @@
#!/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
RET="$?"
if [[ "$RET" != "0" ]] &&[[ "$IS_ACE_ENV" == "" ]];then ## 如果未在ACE环境中
# 定义按顺序尝试的ACE环境命令:推荐安装包)
declare -a ace_commands_order=(
"bookworm-run:amber-ce-bookworm"
"trixie-run:amber-ce-trixie"
"deepin23-run:amber-ce-deepin23"
)
for ace_entry in "${ace_commands_order[@]}"; do
if [[ "$RET" != "0" ]] &&[[ "$IS_ACE_ENV" == "" ]];then ## 如果未在ACE环境中
for ace_entry in "${ACE_ENVIRONMENTS[@]}"; do
ace_cmd=${ace_entry%%:*}
if command -v "$ace_cmd" >/dev/null 2>&1; then
echo "----------------------------------------"

View File

@@ -1,10 +1,11 @@
#!/bin/bash
# ===== ACE环境配置 =====
declare -a ace_commands_order=(
readonly ACE_ENVIRONMENTS=(
"bookworm-run:amber-ce-bookworm"
"trixie-run:amber-ce-trixie"
"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
[ -z "$(grep 'NoDisplay=true' "$path")" ] && {
log.info "Found valid desktop file: $path"
desktop_file_path="$path"
export desktop_file_path="$path"
return 0
}
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
[ -z "$(grep 'NoDisplay=true' "$path")" ] && {
log.info "Found deepin desktop file: $path"
desktop_file_path="$path"
export desktop_file_path="$path"
return 0
}
done < <(find /opt/apps/$package_name -path '*/entries/applications/*.desktop' 2>/dev/null)
@@ -60,28 +61,59 @@ function launch_app() {
# 提取并净化Exec命令
exec_command=$(grep -m1 '^Exec=' "$DESKTOP_FILE_PATH" | cut -d= -f2- | sed 's/%.//g')
[ -z "$exec_command" ] && return 1
[ ! -z "$IS_ACE_ENV" ] && HOST_PREFIX="host-spawn"
exec_command="${HOST_PREFIX} $exec_command"
log.info "Launching: $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
${SHELL:-bash} -c " $exec_command" &
}
# 导出函数以便在ACE环境中使用
export -f launch_app scan_desktop_file scan_desktop_file_log log.info log.warn log.debug log.error
# ===== ACE环境执行器 =====
function ace_runner() {
local command_type=$1 package_name=$2
for ace_entry in "${ace_commands_order[@]}"; do
local action=$1
local target=$2
for ace_entry in "${ACE_ENVIRONMENTS[@]}"; do
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 output=$($ace_cmd "$0" "$command_type" "$package_name" 2>/dev/null); then
[ "$command_type" = "list" ] && echo "$output"
exit 0
if ! command -v "$ace_cmd" >/dev/null; then
log.debug "$ace_cmd not found, skipping..."
continue
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
return 1
}
@@ -99,7 +131,7 @@ check)
else
# 非ACE环境下执行ACE环境扫描
[ -z "$IS_ACE_ENV" ] && ace_runner check "$2"
exit 1
exit $?
fi
;;
@@ -111,7 +143,7 @@ list)
else
# 非ACE环境下执行ACE环境扫描
[ -z "$IS_ACE_ENV" ] && ace_runner list "$2"
exit 1
exit $?
fi
;;
@@ -122,7 +154,7 @@ launch|start)
else
# 非ACE环境下通过ACE环境启动
[ -z "$IS_ACE_ENV" ] && ace_runner launch "$2"
exit 1
exit $?
fi
;;
*)

View File

@@ -1,10 +1,82 @@
#!/bin/bash
# ===== ACE环境配置 =====
declare -a ace_commands_order=(
readonly ACE_ENVIRONMENTS=(
"bookworm-run:amber-ce-bookworm"
"trixie-run:amber-ce-trixie"
"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 ] && \
@@ -15,40 +87,104 @@ declare -a ace_commands_order=(
log.debug() { echo "DEBUG: $*"; }
}
dpkg -s "$1" > /dev/null
RET="$?"
if [[ "$RET" == "0" ]] ;then
apt autopurge $1 -y
# 初始化变量
FORCE_NATIVE=0
ACE_PARAMS=()
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
# 无参数时,先尝试本地卸载,再尝试所有 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
ace_cmd=${ace_entry%%:*}
if command -v "$ace_cmd" >/dev/null 2>&1; then
echo "----------------------------------------"
echo "正在检查 $ace_cmd 环境的安装..."
echo "----------------------------------------"
# 在ACE环境中执行安装检测
$ace_cmd dpkg -l | grep "^ii $1 " > /dev/null
try_run_ret="$?"
if [ $uninstall_success -eq 0 ]; then
echo "----------------------------------------"
echo "在所有指定的环境中未能找到安装,退出"
echo "----------------------------------------"
exit 1
fi
# 最终检测结果处理
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"
exit 0

View File

@@ -37,6 +37,8 @@ if [ "$(id -u)" != "0" ] ; then
fi
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
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

View File

@@ -24,68 +24,63 @@
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="409"/>
<location filename="../src/pages/appintopage.ui" line="412"/>
<location filename="../src/pages/appintopage.ui" line="441"/>
<location filename="../src/pages/appintopage.ui" line="444"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Capable to deepin 23&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="528"/>
<location filename="../src/pages/appintopage.ui" line="531"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;This app is developed by community user,we give this tag to honor those who contribute to the Linux Ecology&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="447"/>
<location filename="../src/pages/appintopage.ui" line="450"/>
<location filename="../src/pages/appintopage.ui" line="422"/>
<location filename="../src/pages/appintopage.ui" line="425"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Capable to UOS home 20&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="466"/>
<location filename="../src/pages/appintopage.ui" line="469"/>
<location filename="../src/pages/appintopage.ui" line="566"/>
<location filename="../src/pages/appintopage.ui" line="569"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;A deepin-wine2 app. Spark Store will automatically configure the wine kit for you.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="472"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;img src=&quot;:/tags/dwine2-small.png&quot;/&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="485"/>
<location filename="../src/pages/appintopage.ui" line="488"/>
<location filename="../src/pages/appintopage.ui" line="547"/>
<location filename="../src/pages/appintopage.ui" line="550"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;This is a DTK5 app,which means it would have better effect on Deepin Desktop Environment&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="504"/>
<location filename="../src/pages/appintopage.ui" line="507"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Capable to deepin 20&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="523"/>
<location filename="../src/pages/appintopage.ui" line="526"/>
<location filename="../src/pages/appintopage.ui" line="509"/>
<location filename="../src/pages/appintopage.ui" line="512"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;An Appimage to deb app.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="611"/>
<location filename="../src/pages/appintopage.ui" line="644"/>
<source>Share</source>
<translation type="unfinished">Spk share link</translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="618"/>
<location filename="../src/pages/appintopage.ui" line="651"/>
<source>APP Feedback</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="773"/>
<location filename="../src/pages/appintopage.ui" line="806"/>
<source>Introduction</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="1074"/>
<location filename="../src/pages/appintopage.ui" line="1107"/>
<source>Description</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="910"/>
<location filename="../src/pages/appintopage.ui" line="943"/>
<source>Screen capture</source>
<translation type="unfinished"></translation>
</message>
@@ -94,94 +89,55 @@
<location filename="../src/pages/appintopage.cpp" line="210"/>
<location filename="../src/pages/appintopage.cpp" line="351"/>
<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>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="415"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;img src=&quot;:/tags/community.svg&quot; height=30 width=30 /&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="428"/>
<location filename="../src/pages/appintopage.ui" line="431"/>
<location filename="../src/pages/appintopage.ui" line="403"/>
<location filename="../src/pages/appintopage.ui" line="406"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Capable to Ubuntu 22.04&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="434"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;img src=&quot;:/tags/ubuntu.png&quot; width=30 height=30 /&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="453"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;img src=&quot;:/tags/uos-authorize.svg&quot; height=30 width=30 /&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="491"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;img src=&quot;:/tags/logo_icon.svg&quot; height=30 width=30 /&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="510"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;img src=&quot;:/tags/deepin.svg&quot; height=30 width=30 /&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="529"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;img src=&quot;:/tags/a2d.png&quot;height=30 width=30 /&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="542"/>
<location filename="../src/pages/appintopage.ui" line="545"/>
<location filename="../src/pages/appintopage.ui" line="585"/>
<location filename="../src/pages/appintopage.ui" line="588"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;A Wine app.Spark Store will automatically configure the wine kit for you&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="548"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;img src=&quot;:/tags/dwine5.svg&quot; height=30 width=30 /&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="555"/>
<location filename="../src/pages/appintopage.ui" line="460"/>
<location filename="../src/pages/appintopage.ui" line="463"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Capable to Debian Stable&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="558"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;img src=&quot;:/tags/debian.svg&quot; height=&quot;30&quot; width=&quot;30&quot;/&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="1167"/>
<location filename="../src/pages/appintopage.ui" line="1200"/>
<source>Update</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="1196"/>
<location filename="../src/pages/appintopage.ui" line="1229"/>
<source>Contributor</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="1203"/>
<location filename="../src/pages/appintopage.ui" line="1236"/>
<source>Pkgname</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="1309"/>
<location filename="../src/pages/appintopage.ui" line="1342"/>
<source>Author</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="1345"/>
<location filename="../src/pages/appintopage.ui" line="1378"/>
<source>Size</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="1381"/>
<location filename="../src/pages/appintopage.ui" line="1414"/>
<source>Website</source>
<translation type="unfinished"></translation>
</message>
@@ -260,18 +216,18 @@
<translation type="unfinished"></translation>
</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="608"/>
<source>Spark Store</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/pages/appintopage.cpp" line="578"/>
<location filename="../src/pages/appintopage.cpp" line="593"/>
<source>Uninstall succeeded</source>
<translation type="unfinished"></translation>
</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>
<translation type="unfinished"></translation>
</message>
@@ -359,9 +315,9 @@
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/widgets/common/downloaditem.cpp" line="218"/>
<location filename="../src/widgets/common/downloaditem.cpp" line="229"/>
<location filename="../src/widgets/common/downloaditem.cpp" line="226"/>
<location filename="../src/widgets/common/downloaditem.cpp" line="237"/>
<location filename="../src/widgets/common/downloaditem.cpp" line="245"/>
<source>Spark Store</source>
<translation type="unfinished"></translation>
</message>
@@ -372,32 +328,32 @@
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/widgets/common/downloaditem.cpp" line="218"/>
<location filename="../src/widgets/common/downloaditem.cpp" line="226"/>
<source>Installation complete.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/widgets/common/downloaditem.cpp" line="219"/>
<location filename="../src/widgets/common/downloaditem.cpp" line="220"/>
<location filename="../src/widgets/common/downloaditem.cpp" line="227"/>
<location filename="../src/widgets/common/downloaditem.cpp" line="228"/>
<source>Finish</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/widgets/common/downloaditem.cpp" line="227"/>
<location filename="../src/widgets/common/downloaditem.cpp" line="235"/>
<source>Retry</source>
<translation type="unfinished"></translation>
</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>
<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="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>
<translation type="unfinished"></translation>
</message>

View File

@@ -24,68 +24,63 @@
<translation>Número de descargas</translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="409"/>
<location filename="../src/pages/appintopage.ui" line="412"/>
<location filename="../src/pages/appintopage.ui" line="441"/>
<location filename="../src/pages/appintopage.ui" line="444"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Capable to deepin 23&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished">&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Capaz de deepin 20&lt;/p&gt;&lt;/body&gt;&lt;/html&gt; {23&lt;?}</translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="528"/>
<location filename="../src/pages/appintopage.ui" line="531"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;This app is developed by community user,we give this tag to honor those who contribute to the Linux Ecology&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;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.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="447"/>
<location filename="../src/pages/appintopage.ui" line="450"/>
<location filename="../src/pages/appintopage.ui" line="422"/>
<location filename="../src/pages/appintopage.ui" line="425"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Capable to UOS home 20&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Capaz de UOS home 20&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="466"/>
<location filename="../src/pages/appintopage.ui" line="469"/>
<location filename="../src/pages/appintopage.ui" line="566"/>
<location filename="../src/pages/appintopage.ui" line="569"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;A deepin-wine2 app. Spark Store will automatically configure the wine kit for you.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;A deepin-wine2 app. La tienda Spark le configurará automáticamente un traje de vino.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="472"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;img src=&quot;:/tags/dwine2-small.png&quot;/&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;img src=&quot;:/tags/dwine2-small.png&quot;/&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="485"/>
<location filename="../src/pages/appintopage.ui" line="488"/>
<location filename="../src/pages/appintopage.ui" line="547"/>
<location filename="../src/pages/appintopage.ui" line="550"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;This is a DTK5 app,which means it would have better effect on Deepin Desktop Environment&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Esta es una aplicación dtk5, lo que significa que funcionará mejor en un entorno de escritorio profundo.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="504"/>
<location filename="../src/pages/appintopage.ui" line="507"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Capable to deepin 20&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Capaz de deepin 20&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="523"/>
<location filename="../src/pages/appintopage.ui" line="526"/>
<location filename="../src/pages/appintopage.ui" line="509"/>
<location filename="../src/pages/appintopage.ui" line="512"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;An Appimage to deb app.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Appimage de la aplicación deb.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="611"/>
<location filename="../src/pages/appintopage.ui" line="644"/>
<source>Share</source>
<translation>Comunión</translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="618"/>
<location filename="../src/pages/appintopage.ui" line="651"/>
<source>APP Feedback</source>
<translation>Comentarios de la app</translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="773"/>
<location filename="../src/pages/appintopage.ui" line="806"/>
<source>Introduction</source>
<translation>Introducción</translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="1074"/>
<location filename="../src/pages/appintopage.ui" line="1107"/>
<source>Description</source>
<translation>Descripción</translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="910"/>
<location filename="../src/pages/appintopage.ui" line="943"/>
<source>Screen capture</source>
<translation>Captura de pantalla</translation>
</message>
@@ -94,94 +89,55 @@
<location filename="../src/pages/appintopage.cpp" line="210"/>
<location filename="../src/pages/appintopage.cpp" line="351"/>
<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>
<translation>Descargar e instalar</translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="415"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;img src=&quot;:/tags/community.svg&quot; height=30 width=30 /&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="428"/>
<location filename="../src/pages/appintopage.ui" line="431"/>
<location filename="../src/pages/appintopage.ui" line="403"/>
<location filename="../src/pages/appintopage.ui" line="406"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Capable to Ubuntu 22.04&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Capaz de Ubuntu 22.04&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="434"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;img src=&quot;:/tags/ubuntu.png&quot; width=30 height=30 /&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="453"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;img src=&quot;:/tags/uos-authorize.svg&quot; height=30 width=30 /&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="491"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;img src=&quot;:/tags/logo_icon.svg&quot; height=30 width=30 /&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="510"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;img src=&quot;:/tags/deepin.svg&quot; height=30 width=30 /&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="529"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;img src=&quot;:/tags/a2d.png&quot;height=30 width=30 /&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="542"/>
<location filename="../src/pages/appintopage.ui" line="545"/>
<location filename="../src/pages/appintopage.ui" line="585"/>
<location filename="../src/pages/appintopage.ui" line="588"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;A Wine app.Spark Store will automatically configure the wine kit for you&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;La aplicación wine. Spark Store configurará automáticamente el kit Wine para usted&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="548"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;img src=&quot;:/tags/dwine5.svg&quot; height=30 width=30 /&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="555"/>
<location filename="../src/pages/appintopage.ui" line="460"/>
<location filename="../src/pages/appintopage.ui" line="463"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Capable to Debian Stable&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="558"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;img src=&quot;:/tags/debian.svg&quot; height=&quot;30&quot; width=&quot;30&quot;/&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="1167"/>
<location filename="../src/pages/appintopage.ui" line="1200"/>
<source>Update</source>
<translation>Modernizar</translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="1196"/>
<location filename="../src/pages/appintopage.ui" line="1229"/>
<source>Contributor</source>
<translation>Contribuyentes</translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="1203"/>
<location filename="../src/pages/appintopage.ui" line="1236"/>
<source>Pkgname</source>
<translation>Nombre del embalaje</translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="1309"/>
<location filename="../src/pages/appintopage.ui" line="1342"/>
<source>Author</source>
<translation>Autor</translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="1345"/>
<location filename="../src/pages/appintopage.ui" line="1378"/>
<source>Size</source>
<translation>Tamaño</translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="1381"/>
<location filename="../src/pages/appintopage.ui" line="1414"/>
<source>Website</source>
<translation>Sitio web</translation>
</message>
@@ -260,18 +216,18 @@
<translation type="unfinished"></translation>
</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="608"/>
<source>Spark Store</source>
<translation>SPARK Store</translation>
</message>
<message>
<location filename="../src/pages/appintopage.cpp" line="578"/>
<location filename="../src/pages/appintopage.cpp" line="593"/>
<source>Uninstall succeeded</source>
<translation>Desinstalación exitosa</translation>
</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>
<translation>La URL ha sido copiada al portapapeles</translation>
</message>
@@ -359,9 +315,9 @@
<translation>Descarga completada.</translation>
</message>
<message>
<location filename="../src/widgets/common/downloaditem.cpp" line="218"/>
<location filename="../src/widgets/common/downloaditem.cpp" line="229"/>
<location filename="../src/widgets/common/downloaditem.cpp" line="226"/>
<location filename="../src/widgets/common/downloaditem.cpp" line="237"/>
<location filename="../src/widgets/common/downloaditem.cpp" line="245"/>
<source>Spark Store</source>
<translation>SPARK Store</translation>
</message>
@@ -372,32 +328,32 @@
<translation>Se está instalando</translation>
</message>
<message>
<location filename="../src/widgets/common/downloaditem.cpp" line="218"/>
<location filename="../src/widgets/common/downloaditem.cpp" line="226"/>
<source>Installation complete.</source>
<translation>La instalación está completa.</translation>
</message>
<message>
<location filename="../src/widgets/common/downloaditem.cpp" line="219"/>
<location filename="../src/widgets/common/downloaditem.cpp" line="220"/>
<location filename="../src/widgets/common/downloaditem.cpp" line="227"/>
<location filename="../src/widgets/common/downloaditem.cpp" line="228"/>
<source>Finish</source>
<translation>Completado</translation>
</message>
<message>
<location filename="../src/widgets/common/downloaditem.cpp" line="227"/>
<location filename="../src/widgets/common/downloaditem.cpp" line="235"/>
<source>Retry</source>
<translation>Reinterpretar</translation>
</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>
<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="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>
<translation>El proceso de DPKG ha sido interrumpido, compruebe la información de instalación o intente reinstalar.</translation>
</message>

View File

@@ -24,68 +24,63 @@
<translation>Nombre de téléchargements</translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="409"/>
<location filename="../src/pages/appintopage.ui" line="412"/>
<location filename="../src/pages/appintopage.ui" line="441"/>
<location filename="../src/pages/appintopage.ui" line="444"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Capable to deepin 23&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished">&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Capable de la deepin 20&lt;/p&gt;&lt;/body&gt;&lt;/html&gt; {23&lt;?}</translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="528"/>
<location filename="../src/pages/appintopage.ui" line="531"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;This app is developed by community user,we give this tag to honor those who contribute to the Linux Ecology&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Cette application a é développée par des utilisateurs de la communauté et nous avons donné ce label à ceux qui ont contribué à l&apos;écologie de Linux&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="447"/>
<location filename="../src/pages/appintopage.ui" line="450"/>
<location filename="../src/pages/appintopage.ui" line="422"/>
<location filename="../src/pages/appintopage.ui" line="425"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Capable to UOS home 20&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Capable de la home UOS 20&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="466"/>
<location filename="../src/pages/appintopage.ui" line="469"/>
<location filename="../src/pages/appintopage.ui" line="566"/>
<location filename="../src/pages/appintopage.ui" line="569"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;A deepin-wine2 app. Spark Store will automatically configure the wine kit for you.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Une application deepin-wine2. Le Spark Store configure automatiquement votre pack de vins.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="472"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;img src=&quot;:/tags/dwine2-small.png&quot;/&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;img src=&quot;:/tags/dwine2-small.png&quot;/&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="485"/>
<location filename="../src/pages/appintopage.ui" line="488"/>
<location filename="../src/pages/appintopage.ui" line="547"/>
<location filename="../src/pages/appintopage.ui" line="550"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;This is a DTK5 app,which means it would have better effect on Deepin Desktop Environment&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;C&apos;est une application dtk5, ce qui signifie qu&apos;elle fonctionnera mieux dans un environnement de bureau profond.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="504"/>
<location filename="../src/pages/appintopage.ui" line="507"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Capable to deepin 20&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Capable de la deepin 20&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="523"/>
<location filename="../src/pages/appintopage.ui" line="526"/>
<location filename="../src/pages/appintopage.ui" line="509"/>
<location filename="../src/pages/appintopage.ui" line="512"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;An Appimage to deb app.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Appimage pour l&apos;application DEB&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="611"/>
<location filename="../src/pages/appintopage.ui" line="644"/>
<source>Share</source>
<translation>Au total</translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="618"/>
<location filename="../src/pages/appintopage.ui" line="651"/>
<source>APP Feedback</source>
<translation>App feedback</translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="773"/>
<location filename="../src/pages/appintopage.ui" line="806"/>
<source>Introduction</source>
<translation>Présentation</translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="1074"/>
<location filename="../src/pages/appintopage.ui" line="1107"/>
<source>Description</source>
<translation>Description</translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="910"/>
<location filename="../src/pages/appintopage.ui" line="943"/>
<source>Screen capture</source>
<translation>Captures d&apos;écran</translation>
</message>
@@ -94,94 +89,55 @@
<location filename="../src/pages/appintopage.cpp" line="210"/>
<location filename="../src/pages/appintopage.cpp" line="351"/>
<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>
<translation>Télécharger et installer</translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="415"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;img src=&quot;:/tags/community.svg&quot; height=30 width=30 /&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="428"/>
<location filename="../src/pages/appintopage.ui" line="431"/>
<location filename="../src/pages/appintopage.ui" line="403"/>
<location filename="../src/pages/appintopage.ui" line="406"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Capable to Ubuntu 22.04&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Capable de la Ubuntu 22.04&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="434"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;img src=&quot;:/tags/ubuntu.png&quot; width=30 height=30 /&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="453"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;img src=&quot;:/tags/uos-authorize.svg&quot; height=30 width=30 /&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="491"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;img src=&quot;:/tags/logo_icon.svg&quot; height=30 width=30 /&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="510"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;img src=&quot;:/tags/deepin.svg&quot; height=30 width=30 /&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="529"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;img src=&quot;:/tags/a2d.png&quot;height=30 width=30 /&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="542"/>
<location filename="../src/pages/appintopage.ui" line="545"/>
<location filename="../src/pages/appintopage.ui" line="585"/>
<location filename="../src/pages/appintopage.ui" line="588"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;A Wine app.Spark Store will automatically configure the wine kit for you&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;L&apos;application wine. Spark Store configure automatiquement le kit Wine pour vous&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="548"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;img src=&quot;:/tags/dwine5.svg&quot; height=30 width=30 /&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="555"/>
<location filename="../src/pages/appintopage.ui" line="460"/>
<location filename="../src/pages/appintopage.ui" line="463"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Capable to Debian Stable&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="558"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;img src=&quot;:/tags/debian.svg&quot; height=&quot;30&quot; width=&quot;30&quot;/&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="1167"/>
<location filename="../src/pages/appintopage.ui" line="1200"/>
<source>Update</source>
<translation>Moderniser</translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="1196"/>
<location filename="../src/pages/appintopage.ui" line="1229"/>
<source>Contributor</source>
<translation>Contributeurs</translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="1203"/>
<location filename="../src/pages/appintopage.ui" line="1236"/>
<source>Pkgname</source>
<translation>Nom de l&apos;emballage</translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="1309"/>
<location filename="../src/pages/appintopage.ui" line="1342"/>
<source>Author</source>
<translation>Auteur</translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="1345"/>
<location filename="../src/pages/appintopage.ui" line="1378"/>
<source>Size</source>
<translation>Taille</translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="1381"/>
<location filename="../src/pages/appintopage.ui" line="1414"/>
<source>Website</source>
<translation>Site Web</translation>
</message>
@@ -260,18 +216,18 @@
<translation type="unfinished"></translation>
</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="608"/>
<source>Spark Store</source>
<translation>Le Spark store</translation>
</message>
<message>
<location filename="../src/pages/appintopage.cpp" line="578"/>
<location filename="../src/pages/appintopage.cpp" line="593"/>
<source>Uninstall succeeded</source>
<translation>Désinstallation réussie</translation>
</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>
<translation>L&apos;URL a é copiée dans le presse - papiers</translation>
</message>
@@ -359,9 +315,9 @@
<translation>Le téléchargement est terminé.</translation>
</message>
<message>
<location filename="../src/widgets/common/downloaditem.cpp" line="218"/>
<location filename="../src/widgets/common/downloaditem.cpp" line="229"/>
<location filename="../src/widgets/common/downloaditem.cpp" line="226"/>
<location filename="../src/widgets/common/downloaditem.cpp" line="237"/>
<location filename="../src/widgets/common/downloaditem.cpp" line="245"/>
<source>Spark Store</source>
<translation>Le Spark store</translation>
</message>
@@ -372,32 +328,32 @@
<translation>Installation en cours</translation>
</message>
<message>
<location filename="../src/widgets/common/downloaditem.cpp" line="218"/>
<location filename="../src/widgets/common/downloaditem.cpp" line="226"/>
<source>Installation complete.</source>
<translation>L&apos;installation est terminée.</translation>
</message>
<message>
<location filename="../src/widgets/common/downloaditem.cpp" line="219"/>
<location filename="../src/widgets/common/downloaditem.cpp" line="220"/>
<location filename="../src/widgets/common/downloaditem.cpp" line="227"/>
<location filename="../src/widgets/common/downloaditem.cpp" line="228"/>
<source>Finish</source>
<translation>Terminé</translation>
</message>
<message>
<location filename="../src/widgets/common/downloaditem.cpp" line="227"/>
<location filename="../src/widgets/common/downloaditem.cpp" line="235"/>
<source>Retry</source>
<translation>Essayez à nouveau</translation>
</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&apos;est produite dans le processus dpkg, vérifiez les informations d&apos;installation ou essayez de réinstaller.</translation>
</message>
<message>
<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="239"/>
<source>Error happened in dpkg progress , please check the install info or try to reinstall.</source>
<translation>Une erreur s&apos;est produite dans le processus dpkg, vérifiez les informations d&apos;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>
<translation>La progression de DPKG a é interrompue, veuillez vérifier les informations dinstallation ou essayer de réinstaller.</translation>
</message>

View File

@@ -24,63 +24,58 @@
<translation></translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="409"/>
<location filename="../src/pages/appintopage.ui" line="412"/>
<location filename="../src/pages/appintopage.ui" line="441"/>
<location filename="../src/pages/appintopage.ui" line="444"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Capable to deepin 23&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished">&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;deepin 20&lt;/p&gt;&lt;/body&gt;&lt;/html&gt; {23&lt;?}</translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="528"/>
<location filename="../src/pages/appintopage.ui" line="531"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;This app is developed by community user,we give this tag to honor those who contribute to the Linux Ecology&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Linux生态的贡献&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="447"/>
<location filename="../src/pages/appintopage.ui" line="450"/>
<location filename="../src/pages/appintopage.ui" line="422"/>
<location filename="../src/pages/appintopage.ui" line="425"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Capable to UOS home 20&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;UOS家庭版 20&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="466"/>
<location filename="../src/pages/appintopage.ui" line="469"/>
<location filename="../src/pages/appintopage.ui" line="566"/>
<location filename="../src/pages/appintopage.ui" line="569"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;A deepin-wine2 app. Spark Store will automatically configure the wine kit for you.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation> deepin-wine2 wine环境</translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="472"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;img src=&quot;:/tags/dwine2-small.png&quot;/&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation></translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="485"/>
<location filename="../src/pages/appintopage.ui" line="488"/>
<location filename="../src/pages/appintopage.ui" line="547"/>
<location filename="../src/pages/appintopage.ui" line="550"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;This is a DTK5 app,which means it would have better effect on Deepin Desktop Environment&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;DTK5应用使&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="504"/>
<location filename="../src/pages/appintopage.ui" line="507"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Capable to deepin 20&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;deepin 20&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="523"/>
<location filename="../src/pages/appintopage.ui" line="526"/>
<location filename="../src/pages/appintopage.ui" line="509"/>
<location filename="../src/pages/appintopage.ui" line="512"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;An Appimage to deb app.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Appimage转制应用.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="611"/>
<location filename="../src/pages/appintopage.ui" line="644"/>
<source>Share</source>
<translation>Spk分享链接</translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="618"/>
<location filename="../src/pages/appintopage.ui" line="651"/>
<source>APP Feedback</source>
<translation></translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="1074"/>
<location filename="../src/pages/appintopage.ui" line="1107"/>
<source>Description</source>
<translation></translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="910"/>
<location filename="../src/pages/appintopage.ui" line="943"/>
<source>Screen capture</source>
<translation></translation>
</message>
@@ -89,99 +84,60 @@
<location filename="../src/pages/appintopage.cpp" line="210"/>
<location filename="../src/pages/appintopage.cpp" line="351"/>
<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>
<translation></translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="415"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;img src=&quot;:/tags/community.svg&quot; height=30 width=30 /&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation></translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="428"/>
<location filename="../src/pages/appintopage.ui" line="431"/>
<location filename="../src/pages/appintopage.ui" line="403"/>
<location filename="../src/pages/appintopage.ui" line="406"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Capable to Ubuntu 22.04&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Ubuntu 22.04&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="434"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;img src=&quot;:/tags/ubuntu.png&quot; width=30 height=30 /&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation></translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="453"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;img src=&quot;:/tags/uos-authorize.svg&quot; height=30 width=30 /&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation></translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="491"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;img src=&quot;:/tags/logo_icon.svg&quot; height=30 width=30 /&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation></translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="510"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;img src=&quot;:/tags/deepin.svg&quot; height=30 width=30 /&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation></translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="529"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;img src=&quot;:/tags/a2d.png&quot;height=30 width=30 /&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation></translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="542"/>
<location filename="../src/pages/appintopage.ui" line="545"/>
<location filename="../src/pages/appintopage.ui" line="585"/>
<location filename="../src/pages/appintopage.ui" line="588"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;A Wine app.Spark Store will automatically configure the wine kit for you&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation> Wine wine环境</translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="548"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;img src=&quot;:/tags/dwine5.svg&quot; height=30 width=30 /&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation></translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="555"/>
<location filename="../src/pages/appintopage.ui" line="460"/>
<location filename="../src/pages/appintopage.ui" line="463"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Capable to Debian Stable&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Debian Stable&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="558"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;img src=&quot;:/tags/debian.svg&quot; height=&quot;30&quot; width=&quot;30&quot;/&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation></translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="773"/>
<location filename="../src/pages/appintopage.ui" line="806"/>
<source>Introduction</source>
<translation></translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="1167"/>
<location filename="../src/pages/appintopage.ui" line="1200"/>
<source>Update</source>
<translation></translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="1196"/>
<location filename="../src/pages/appintopage.ui" line="1229"/>
<source>Contributor</source>
<translation>稿</translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="1203"/>
<location filename="../src/pages/appintopage.ui" line="1236"/>
<source>Pkgname</source>
<translation></translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="1309"/>
<location filename="../src/pages/appintopage.ui" line="1342"/>
<source>Author</source>
<translation></translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="1345"/>
<location filename="../src/pages/appintopage.ui" line="1378"/>
<source>Size</source>
<translation></translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="1381"/>
<location filename="../src/pages/appintopage.ui" line="1414"/>
<source>Website</source>
<translation></translation>
</message>
@@ -260,18 +216,18 @@
<translation></translation>
</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="608"/>
<source>Spark Store</source>
<translation></translation>
</message>
<message>
<location filename="../src/pages/appintopage.cpp" line="578"/>
<location filename="../src/pages/appintopage.cpp" line="593"/>
<source>Uninstall succeeded</source>
<translation></translation>
</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>
<translation></translation>
</message>
@@ -359,9 +315,9 @@
<translation>.</translation>
</message>
<message>
<location filename="../src/widgets/common/downloaditem.cpp" line="218"/>
<location filename="../src/widgets/common/downloaditem.cpp" line="229"/>
<location filename="../src/widgets/common/downloaditem.cpp" line="226"/>
<location filename="../src/widgets/common/downloaditem.cpp" line="237"/>
<location filename="../src/widgets/common/downloaditem.cpp" line="245"/>
<source>Spark Store</source>
<translation></translation>
</message>
@@ -372,32 +328,32 @@
<translation></translation>
</message>
<message>
<location filename="../src/widgets/common/downloaditem.cpp" line="218"/>
<location filename="../src/widgets/common/downloaditem.cpp" line="226"/>
<source>Installation complete.</source>
<translation>.</translation>
</message>
<message>
<location filename="../src/widgets/common/downloaditem.cpp" line="219"/>
<location filename="../src/widgets/common/downloaditem.cpp" line="220"/>
<location filename="../src/widgets/common/downloaditem.cpp" line="227"/>
<location filename="../src/widgets/common/downloaditem.cpp" line="228"/>
<source>Finish</source>
<translation></translation>
</message>
<message>
<location filename="../src/widgets/common/downloaditem.cpp" line="227"/>
<location filename="../src/widgets/common/downloaditem.cpp" line="235"/>
<source>Retry</source>
<translation></translation>
</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>
<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="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>
<translation></translation>
</message>

View File

@@ -24,63 +24,58 @@
<translation></translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="409"/>
<location filename="../src/pages/appintopage.ui" line="412"/>
<location filename="../src/pages/appintopage.ui" line="441"/>
<location filename="../src/pages/appintopage.ui" line="444"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Capable to deepin 23&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished">&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;deepin 20&lt;/p&gt;&lt;/body&gt;&lt;/html&gt; {23&lt;?}</translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="528"/>
<location filename="../src/pages/appintopage.ui" line="531"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;This app is developed by community user,we give this tag to honor those who contribute to the Linux Ecology&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Linux生态的贡献&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="447"/>
<location filename="../src/pages/appintopage.ui" line="450"/>
<location filename="../src/pages/appintopage.ui" line="422"/>
<location filename="../src/pages/appintopage.ui" line="425"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Capable to UOS home 20&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;UOS家庭版 20&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="466"/>
<location filename="../src/pages/appintopage.ui" line="469"/>
<location filename="../src/pages/appintopage.ui" line="566"/>
<location filename="../src/pages/appintopage.ui" line="569"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;A deepin-wine2 app. Spark Store will automatically configure the wine kit for you.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation> deepin-wine2 wine环境</translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="472"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;img src=&quot;:/tags/dwine2-small.png&quot;/&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation></translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="485"/>
<location filename="../src/pages/appintopage.ui" line="488"/>
<location filename="../src/pages/appintopage.ui" line="547"/>
<location filename="../src/pages/appintopage.ui" line="550"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;This is a DTK5 app,which means it would have better effect on Deepin Desktop Environment&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;DTK5应用使&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="504"/>
<location filename="../src/pages/appintopage.ui" line="507"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Capable to deepin 20&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;deepin 20&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="523"/>
<location filename="../src/pages/appintopage.ui" line="526"/>
<location filename="../src/pages/appintopage.ui" line="509"/>
<location filename="../src/pages/appintopage.ui" line="512"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;An Appimage to deb app.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Appimage转制应用.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="611"/>
<location filename="../src/pages/appintopage.ui" line="644"/>
<source>Share</source>
<translation>Spk共享链接</translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="618"/>
<location filename="../src/pages/appintopage.ui" line="651"/>
<source>APP Feedback</source>
<translation></translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="1074"/>
<location filename="../src/pages/appintopage.ui" line="1107"/>
<source>Description</source>
<translation></translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="910"/>
<location filename="../src/pages/appintopage.ui" line="943"/>
<source>Screen capture</source>
<translation></translation>
</message>
@@ -89,99 +84,60 @@
<location filename="../src/pages/appintopage.cpp" line="210"/>
<location filename="../src/pages/appintopage.cpp" line="351"/>
<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>
<translation></translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="415"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;img src=&quot;:/tags/community.svg&quot; height=30 width=30 /&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="428"/>
<location filename="../src/pages/appintopage.ui" line="431"/>
<location filename="../src/pages/appintopage.ui" line="403"/>
<location filename="../src/pages/appintopage.ui" line="406"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Capable to Ubuntu 22.04&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Ubuntu 22.04&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="434"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;img src=&quot;:/tags/ubuntu.png&quot; width=30 height=30 /&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="453"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;img src=&quot;:/tags/uos-authorize.svg&quot; height=30 width=30 /&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="491"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;img src=&quot;:/tags/logo_icon.svg&quot; height=30 width=30 /&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="510"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;img src=&quot;:/tags/deepin.svg&quot; height=30 width=30 /&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="529"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;img src=&quot;:/tags/a2d.png&quot;height=30 width=30 /&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="542"/>
<location filename="../src/pages/appintopage.ui" line="545"/>
<location filename="../src/pages/appintopage.ui" line="585"/>
<location filename="../src/pages/appintopage.ui" line="588"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;A Wine app.Spark Store will automatically configure the wine kit for you&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation> Wine wine环境</translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="548"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;img src=&quot;:/tags/dwine5.svg&quot; height=30 width=30 /&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="555"/>
<location filename="../src/pages/appintopage.ui" line="460"/>
<location filename="../src/pages/appintopage.ui" line="463"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Capable to Debian Stable&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="558"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;img src=&quot;:/tags/debian.svg&quot; height=&quot;30&quot; width=&quot;30&quot;/&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="773"/>
<location filename="../src/pages/appintopage.ui" line="806"/>
<source>Introduction</source>
<translation></translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="1167"/>
<location filename="../src/pages/appintopage.ui" line="1200"/>
<source>Update</source>
<translation></translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="1196"/>
<location filename="../src/pages/appintopage.ui" line="1229"/>
<source>Contributor</source>
<translation>稿</translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="1203"/>
<location filename="../src/pages/appintopage.ui" line="1236"/>
<source>Pkgname</source>
<translation></translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="1309"/>
<location filename="../src/pages/appintopage.ui" line="1342"/>
<source>Author</source>
<translation></translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="1345"/>
<location filename="../src/pages/appintopage.ui" line="1378"/>
<source>Size</source>
<translation></translation>
</message>
<message>
<location filename="../src/pages/appintopage.ui" line="1381"/>
<location filename="../src/pages/appintopage.ui" line="1414"/>
<source>Website</source>
<translation></translation>
</message>
@@ -260,18 +216,18 @@
<translation type="unfinished"></translation>
</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="608"/>
<source>Spark Store</source>
<translation></translation>
</message>
<message>
<location filename="../src/pages/appintopage.cpp" line="578"/>
<location filename="../src/pages/appintopage.cpp" line="593"/>
<source>Uninstall succeeded</source>
<translation></translation>
</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>
<translation></translation>
</message>
@@ -359,9 +315,9 @@
<translation>.</translation>
</message>
<message>
<location filename="../src/widgets/common/downloaditem.cpp" line="218"/>
<location filename="../src/widgets/common/downloaditem.cpp" line="229"/>
<location filename="../src/widgets/common/downloaditem.cpp" line="226"/>
<location filename="../src/widgets/common/downloaditem.cpp" line="237"/>
<location filename="../src/widgets/common/downloaditem.cpp" line="245"/>
<source>Spark Store</source>
<translation></translation>
</message>
@@ -372,32 +328,32 @@
<translation></translation>
</message>
<message>
<location filename="../src/widgets/common/downloaditem.cpp" line="218"/>
<location filename="../src/widgets/common/downloaditem.cpp" line="226"/>
<source>Installation complete.</source>
<translation>.</translation>
</message>
<message>
<location filename="../src/widgets/common/downloaditem.cpp" line="219"/>
<location filename="../src/widgets/common/downloaditem.cpp" line="220"/>
<location filename="../src/widgets/common/downloaditem.cpp" line="227"/>
<location filename="../src/widgets/common/downloaditem.cpp" line="228"/>
<source>Finish</source>
<translation></translation>
</message>
<message>
<location filename="../src/widgets/common/downloaditem.cpp" line="227"/>
<location filename="../src/widgets/common/downloaditem.cpp" line="235"/>
<source>Retry</source>
<translation></translation>
</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>
<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="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>
<translation></translation>
</message>