Add Windows Class ID information

This commit is contained in:
Victor Tran 2020-08-03 23:25:55 +10:00
parent d0bc49f9d6
commit fef992a12c
17 changed files with 198 additions and 90 deletions

View file

@ -95,7 +95,7 @@
inkscape:window-width="2560"
units="px"
showgrid="true"
inkscape:current-layer="layer1"
inkscape:current-layer="layer1-8"
inkscape:document-units="mm"
inkscape:cy="225.7971"
inkscape:cx="225.15375"
@ -153,17 +153,39 @@
height="148.16666"
x="4.4408921e-16"
y="148.83331" />
<text
id="text31"
y="186.23082"
x="79.628479"
<g
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:14.1111px;line-height:1.25;font-family:Contemporary;-inkscape-font-specification:Contemporary;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.352778"
xml:space="preserve"><tspan
id="text31"
aria-label="theBeat">
<path
id="path1036"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Contemporary;-inkscape-font-specification:Contemporary;stroke-width:0.352778"
y="186.23082"
x="79.628479"
id="tspan29"
sodipodi:role="line">theBeat</tspan></text>
d="m 81.632255,185.86393 q 0,0.15522 0.127,0.26811 0.141111,0.0988 0.296333,0.0988 h 0.522111 q 0.155222,0 0.268111,-0.11289 0.112889,-0.11289 0.112889,-0.26811 l -0.04233,-5.74322 h 1.481666 q 0.155222,0 0.268111,-0.11289 0.112889,-0.11289 0.112889,-0.26811 v -0.45155 q 0,-0.15522 -0.112889,-0.26811 -0.112889,-0.11289 -0.268111,-0.11289 h -1.481666 v -2.30011 q 0,-0.15522 -0.112888,-0.26811 -0.112889,-0.11289 -0.268111,-0.11289 h -0.522111 q -0.155222,0 -0.268111,0.11289 -0.112889,0.11289 -0.112889,0.26811 v 2.30011 H 80.27759 q -0.155222,0 -0.268111,0.11289 -0.112889,0.11289 -0.112889,0.26811 v 0.45155 q 0,0.15522 0.112889,0.26811 0.112889,0.11289 0.268111,0.11289 h 1.354665 z" />
<path
id="path1038"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Contemporary;-inkscape-font-specification:Contemporary;stroke-width:0.352778"
d="m 92.856092,185.84982 q 0,0.15522 -0.112889,0.26811 -0.112888,0.11289 -0.26811,0.11289 h -0.522111 q -0.155222,0 -0.268111,-0.11289 -0.112889,-0.11289 -0.112889,-0.26811 v -3.72533 q 0,-1.05833 -0.522111,-1.60867 -0.52211,-0.55033 -1.453443,-0.55033 -0.917221,0 -1.453443,0.55033 -0.522111,0.55034 -0.522111,1.60867 v 3.72533 q 0,0.15522 -0.112889,0.26811 -0.112889,0.11289 -0.268111,0.11289 h -0.52211 q -0.155222,0 -0.268111,-0.11289 -0.112889,-0.11289 -0.112889,-0.26811 v -9.25688 q 0,-0.15522 0.112889,-0.26811 0.112889,-0.11289 0.268111,-0.11289 h 0.52211 q 0.155222,0 0.268111,0.11289 0.112889,0.11289 0.112889,0.26811 v 3.11855 q 0.310444,-0.40922 0.846666,-0.67733 0.550333,-0.28222 1.340555,-0.28222 0.888999,0 1.580443,0.381 0.691444,0.381 1.072443,1.10066 0.395111,0.70556 0.395111,1.67922 z" />
<path
id="path1040"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Contemporary;-inkscape-font-specification:Contemporary;stroke-width:0.352778"
d="m 97.800931,178.75194 q 1.509888,0 2.384779,0.95955 0.87489,0.95956 0.87489,2.61055 v 0.381 q 0,0.15523 -0.11289,0.26812 -0.11289,0.11288 -0.26811,0.11288 h -4.854223 v 0.0847 q 0.02822,0.93133 0.564444,1.46756 0.550333,0.52211 1.41111,0.52211 0.705555,0 1.086555,-0.18345 0.395111,-0.18344 0.705555,-0.52211 0.112889,-0.11289 0.197555,-0.15522 0.09878,-0.0423 0.254004,-0.0423 h 0.42333 q 0.16933,0 0.28222,0.11288 0.11289,0.11289 0.0988,0.26812 -0.0564,0.381 -0.42333,0.79022 -0.35278,0.39511 -1.030115,0.67733 -0.663221,0.26811 -1.594554,0.26811 -0.90311,0 -1.608665,-0.40922 -0.705555,-0.42333 -1.128888,-1.15711 -0.409222,-0.73378 -0.493889,-1.651 -0.02822,-0.42333 -0.02822,-0.64911 0,-0.22578 0.02822,-0.64911 0.08467,-0.87489 0.493889,-1.58044 0.423333,-0.70556 1.114777,-1.11478 0.705555,-0.40922 1.622776,-0.40922 z m 1.989665,3.14677 v -0.0423 q 0,-0.86078 -0.550333,-1.36878 -0.536222,-0.52211 -1.439332,-0.52211 -0.818444,0 -1.396999,0.52211 -0.564444,0.52211 -0.578555,1.36878 v 0.0423 z" />
<path
id="path1042"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Contemporary;-inkscape-font-specification:Contemporary;stroke-width:0.352778"
d="m 102.91819,176.73405 q 0,-0.15522 0.11289,-0.26811 0.11289,-0.11289 0.26811,-0.11289 h 3.78177 q 1.11478,0 1.80622,0.43744 0.69145,0.42334 0.98778,1.03011 0.29633,0.60678 0.29633,1.18534 0,0.79022 -0.381,1.28411 -0.381,0.47977 -0.74788,0.70555 0.59266,0.39511 0.95955,1.016 0.381,0.60678 0.381,1.35467 0,0.73377 -0.36689,1.397 -0.35278,0.64911 -1.05833,1.05833 -0.70556,0.40922 -1.67922,0.40922 h -3.97933 q -0.15522,0 -0.26811,-0.11289 -0.11289,-0.11289 -0.11289,-0.26811 z m 1.34055,3.73944 h 2.68111 q 0.93133,0 1.41111,-0.36689 0.47978,-0.36689 0.47978,-1.05833 0,-0.69144 -0.47978,-1.05833 -0.47978,-0.36689 -1.41111,-0.36689 h -2.68111 z m 0,4.48733 h 2.87867 q 0.90311,0 1.397,-0.45155 0.508,-0.46567 0.508,-1.143 0,-0.69145 -0.47978,-1.15711 -0.47978,-0.46567 -1.42522,-0.46567 h -2.87867 z" />
<path
id="path1044"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Contemporary;-inkscape-font-specification:Contemporary;stroke-width:0.352778"
d="m 115.08152,178.75194 q 1.50988,0 2.38477,0.95955 0.87489,0.95956 0.87489,2.61055 v 0.381 q 0,0.15523 -0.11289,0.26812 -0.11289,0.11288 -0.26811,0.11288 h -4.85422 v 0.0847 q 0.0282,0.93133 0.56445,1.46756 0.55033,0.52211 1.41111,0.52211 0.70555,0 1.08655,-0.18345 0.39511,-0.18344 0.70556,-0.52211 0.11288,-0.11289 0.19755,-0.15522 0.0988,-0.0423 0.254,-0.0423 h 0.42333 q 0.16934,0 0.28223,0.11288 0.11288,0.11289 0.0988,0.26812 -0.0564,0.381 -0.42333,0.79022 -0.35278,0.39511 -1.03011,0.67733 -0.66322,0.26811 -1.59455,0.26811 -0.90312,0 -1.60867,-0.40922 -0.70556,-0.42333 -1.12889,-1.15711 -0.40922,-0.73378 -0.49389,-1.651 -0.0282,-0.42333 -0.0282,-0.64911 0,-0.22578 0.0282,-0.64911 0.0847,-0.87489 0.49389,-1.58044 0.42333,-0.70556 1.11478,-1.11478 0.70555,-0.40922 1.62278,-0.40922 z m 1.98966,3.14677 v -0.0423 q 0,-0.86078 -0.55033,-1.36878 -0.53622,-0.52211 -1.43933,-0.52211 -0.81845,0 -1.397,0.52211 -0.56445,0.52211 -0.57856,1.36878 v 0.0423 z" />
<path
id="path1046"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Contemporary;-inkscape-font-specification:Contemporary;stroke-width:0.352778"
d="m 124.40388,181.58827 v -0.18345 q 0,-0.69144 -0.46567,-1.05833 -0.45155,-0.381 -1.18533,-0.381 -0.56444,0 -0.889,0.19756 -0.31044,0.18344 -0.59266,0.56444 -0.0847,0.11289 -0.18345,0.15522 -0.0988,0.0423 -0.26811,0.0423 h -0.42333 q -0.15522,0 -0.28222,-0.11289 -0.11289,-0.11289 -0.0988,-0.26811 0.0423,-0.42334 0.40922,-0.83256 0.381,-0.42333 1.00189,-0.69144 0.62089,-0.26811 1.32644,-0.26811 1.31233,0 2.11667,0.73377 0.81844,0.73378 0.81844,2.06022 v 4.30389 q 0,0.15522 -0.11289,0.26811 -0.11289,0.11289 -0.26811,0.11289 h -0.52211 q -0.15522,0 -0.26811,-0.11289 -0.11289,-0.11289 -0.11289,-0.26811 v -0.57856 q -0.22578,0.508 -0.95955,0.80434 -0.73378,0.29633 -1.46756,0.29633 -0.71966,0 -1.28411,-0.254 -0.56444,-0.26811 -0.87489,-0.71967 -0.29633,-0.45155 -0.29633,-1.01599 0,-1.05834 0.79022,-1.651 0.79022,-0.60678 2.10256,-0.81845 z m 0,1.12889 -1.66511,0.26811 q -0.91722,0.14111 -1.42522,0.46566 -0.508,0.31045 -0.508,0.79022 0,0.35278 0.32456,0.635 0.32455,0.28223 0.98777,0.28223 1.016,0 1.651,-0.57856 0.635,-0.57855 0.635,-1.50989 z" />
<path
id="path1048"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Contemporary;-inkscape-font-specification:Contemporary;stroke-width:0.352778"
d="m 128.62332,185.86393 q 0,0.15522 0.127,0.26811 0.14111,0.0988 0.29633,0.0988 h 0.52211 q 0.15523,0 0.26812,-0.11289 0.11288,-0.11289 0.11288,-0.26811 l -0.0423,-5.74322 h 1.48167 q 0.15522,0 0.26811,-0.11289 0.11289,-0.11289 0.11289,-0.26811 v -0.45155 q 0,-0.15522 -0.11289,-0.26811 -0.11289,-0.11289 -0.26811,-0.11289 h -1.48167 v -2.30011 q 0,-0.15522 -0.11289,-0.26811 -0.11289,-0.11289 -0.26811,-0.11289 h -0.52211 q -0.15522,0 -0.26811,0.11289 -0.11289,0.11289 -0.11289,0.26811 v 2.30011 h -1.35466 q -0.15523,0 -0.26812,0.11289 -0.11288,0.11289 -0.11288,0.26811 v 0.45155 q 0,0.15522 0.11288,0.26811 0.11289,0.11289 0.26812,0.11289 h 1.35466 z" />
</g>
<path
transform="matrix(0.3527778,0,0,0.35277776,1.6000001e-6,148.83332)"
d="M 0 18.097656 L 0 235.85547 L 24.419922 326.95508 A 25.653601 25.653598 65.682898 0 0 55.808594 345.10938 A 25.653601 25.653598 65.682898 0 0 73.960938 313.7207 L 35.150391 168.92578 A 25.653601 25.653598 65.682898 0 0 35.064453 168.66992 C 18.741887 107.51099 33.989742 45.708947 70.650391 0 L 9.2460938 0 C 5.9042348 5.8934062 2.8454243 11.943914 0 18.097656 z M 219 165 L 364 475 L 219 165 z M 129.52539 230.64648 C 125.11375 230.76951 120.76134 231.37124 116.54883 232.5 L 161.6875 400.97852 C 195.40035 391.95932 220.07226 349.22396 211.03711 315.51562 L 202.00977 281.85156 C 194.12026 252.3766 160.40678 229.78447 129.52539 230.64648 z "

Before

Width:  |  Height:  |  Size: 7.4 KiB

After

Width:  |  Height:  |  Size: 15 KiB

View file

@ -5,10 +5,10 @@
#-------------------------------------------------
QT += core gui network svg winextras
CONFIG += static
CONFIG += static c++17
INCLUDEPATH += "C:/Program Files (x86)/zlib/include"
LIBS += -L"C:/Program Files (x86)/zlib/lib" -lzlibstat -llegacy_stdio_definitions
LIBS += -L"C:/Program Files (x86)/zlib/lib" -lzlibstat -llegacy_stdio_definitions -lwindowsapp
DEFINES += QUAZIP_STATIC ZLIB_WINAPI
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
@ -208,7 +208,9 @@ TRANSLATIONS += \
translations/en_US.ts \
translations/en_GB.ts \
translations/en_AU.ts \
translations/en_NZ.ts
translations/en_NZ.ts \
translations/de_DE.ts \
translations/nl_NL.ts
qtPrepareTool(LUPDATE, lupdate)
genlang.commands = "$$LUPDATE -no-obsolete -source-language en_US $$_PRO_FILE_"

View file

@ -26,7 +26,7 @@ int main(int argc, char *argv[])
a.installTranslator(&qtTranslator);
QTranslator myappTranslator;
myappTranslator.load(QLocale::system().name(), ":/translations/");
myappTranslator.load(QLocale(), ":/translations/");
a.installTranslator(&myappTranslator);
qsrand(QDateTime::currentMSecsSinceEpoch());

View file

@ -330,6 +330,10 @@ void MainWindow::on_installButton_clicked()
args.append("\"--vendor " + metadata.value("vendor").toString() + "\"");
args.append("\"--name " + metadata.value("name").toString() + "\"");
if (metadata.contains("clsid")) {
args.append("\"--clsid " + metadata.value("clsid").toString() + "\"");
}
QString destdir = ui->installPathLineEdit->text();
if (destdir.endsWith("\\")) {
destdir.append("\\");

View file

@ -1 +1 @@
https://vicr123.com/thebeat/theinstaller/installer.json
file:///C:/Users/victo/Documents/Website/MainSite/thebeat/theinstaller/installer.json

View file

@ -1,5 +1,15 @@
#include "installworker.h"
#include <unknwn.h>
#include <winrt/base.h>
#include <winrt/Windows.Foundation.h>
#include <propkey.h>
#include <propsys.h>
#include <propvarutil.h>
#include <shlobj.h>
#include <objidl.h>
extern QString calculateSize(quint64 size);
InstallWorker::InstallWorker(QObject *parent) : QObject(parent)
@ -8,7 +18,7 @@ InstallWorker::InstallWorker(QObject *parent) : QObject(parent)
bool InstallWorker::startWork() {
QLocalSocket* sock = new QLocalSocket();
QString vendor, name, url, destPath, executable;
QString vendor, name, url, destPath, executable, clsid;
bool isStableStream = true, isGlobalInstall = true;
QString previousToken;
@ -26,10 +36,12 @@ bool InstallWorker::startWork() {
destPath = arg;
} else if (previousToken == "--executable") {
executable = arg;
} else if (previousToken == "--clsid") {
clsid = arg;
}
previousToken = "";
} else {
if (arg == "--socket" || arg == "--vendor" || arg == "--name" || arg == "--url" || arg == "--destdir" || arg == "--executable") {
if (arg == "--socket" || arg == "--vendor" || arg == "--name" || arg == "--url" || arg == "--destdir" || arg == "--executable" || arg == "--clsid") {
previousToken = arg;
} else if (arg == "--blueprint") {
isStableStream = false;
@ -135,9 +147,54 @@ bool InstallWorker::startWork() {
if (QFile::exists(linkFile)) {
QFile::remove(linkFile);
}
QFile::link(executableFile.absoluteFilePath(), linkFile);
QFile::copy(QApplication::applicationFilePath(), dest.absoluteFilePath("uninstall.exe"));
bool shouldUseQFileLink = false;
if (!clsid.isEmpty()) {
QString appUMID = QStringLiteral("%1.%2").arg(vendor.toLower()).arg(name.toLower());
QSettings* comServer;
if (isGlobalInstall) {
comServer = new QSettings(QStringLiteral("HKEY_LOCAL_MACHINE\\SOFTWARE\\Classes\\CLSID\\%1\\LocalServer32").arg(clsid), QSettings::NativeFormat);
} else {
comServer = new QSettings(QStringLiteral("HKEY_CURRENT_USER\\SOFTWARE\\Classes\\CLSID\\%1\\LocalServer32").arg(clsid), QSettings::NativeFormat);
}
comServer->setValue(".", "\"" + executableFile.absoluteFilePath() + "\" -ToastActivated");
comServer->deleteLater();
try {
auto link{ winrt::create_instance<IShellLink>(CLSID_ShellLink) };
winrt::check_hresult(link->SetPath(executableFile.absoluteFilePath().toStdWString().c_str()));
auto store = link.as<IPropertyStore>();
PROPVARIANT value;
winrt::check_hresult(::InitPropVariantFromString(appUMID.toStdWString().c_str(), &value));
winrt::check_hresult(store->SetValue(PKEY_AppUserModel_ID, value));
::PropVariantClear(&value);
CLSID clsidVar;
winrt::check_hresult(::CLSIDFromString(clsid.toStdWString().c_str(), &clsidVar));
winrt::check_hresult(::InitPropVariantFromCLSID(clsidVar, &value));
winrt::check_hresult(store->SetValue(PKEY_AppUserModel_ToastActivatorCLSID, value));
auto file{ store.as<IPersistFile>() };
winrt::check_hresult(file->Save(linkFile.toStdWString().c_str(), TRUE));
::PropVariantClear(&value);
} catch (...) {
sock->write(QString("DEBUG Error while creating link; falling back to QFile::link\n").toUtf8());
shouldUseQFileLink = true;
}
} else {
shouldUseQFileLink = true;
}
if (shouldUseQFileLink) {
QFile::link(executableFile.absoluteFilePath(), linkFile);
}
QJsonObject dataRoot;
dataRoot.insert("vendor", vendor);
dataRoot.insert("name", name);
@ -147,6 +204,10 @@ bool InstallWorker::startWork() {
dataRoot.insert("stream", isStableStream);
dataRoot.insert("registryUuid", name);
if (!clsid.isEmpty()) {
dataRoot.insert("clsid", clsid);
}
QSettings* settings;
if (isGlobalInstall) {
settings = new QSettings("HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\" + name, QSettings::NativeFormat);

View file

@ -74,6 +74,20 @@ bool RemoveWorker::startWork() {
QDir dest(metadata.value("installPath").toString());
dest.removeRecursively();
if (metadata.contains("clsid")) {
QSettings* comServer;
if (metadata.value("global").toBool()) {
comServer = new QSettings(QStringLiteral("HKEY_LOCAL_MACHINE\\SOFTWARE\\Classes\\CLSID"), QSettings::NativeFormat);
} else {
comServer = new QSettings(QStringLiteral("HKEY_CURRENT_USER\\SOFTWARE\\Classes\\CLSID"), QSettings::NativeFormat);
}
comServer->remove(metadata.value("clsid").toString());
comServer->sync();
comServer->deleteLater();
}
//Remove registry entry
QSettings* settings;
if (metadata.value("global").toBool()) {

View file

@ -11,5 +11,10 @@
<file>translations/en_US.qm</file>
<file>licenses/gpl3.html</file>
<file>icons/go-previous.svg</file>
<file>translations/de_DE.qm</file>
<file>translations/nl_NL.qm</file>
<file>translations/it_IT.qm</file>
<file>translations/pl_PL.qm</file>
<file>translations/sv_SE.qm</file>
</qresource>
</RCC>

Binary file not shown.

View file

@ -4,28 +4,28 @@
<context>
<name>InstallWorker</name>
<message>
<location filename="../process/installworker.cpp" line="78"/>
<location filename="../process/installworker.cpp" line="207"/>
<location filename="../process/installworker.cpp" line="88"/>
<location filename="../process/installworker.cpp" line="248"/>
<source>Downloading %1...</source>
<translation>Downloade %1...</translation>
</message>
<message>
<location filename="../process/installworker.cpp" line="107"/>
<location filename="../process/installworker.cpp" line="117"/>
<source>Unpacking %1...</source>
<translation>Entpacke %1...</translation>
</message>
<message>
<location filename="../process/installworker.cpp" line="124"/>
<location filename="../process/installworker.cpp" line="134"/>
<source>Configuring %1...</source>
<translation>Konfiguriere %1...</translation>
</message>
<message>
<location filename="../process/installworker.cpp" line="216"/>
<location filename="../process/installworker.cpp" line="257"/>
<source>%1 of %2</source>
<translation>%1 von %2</translation>
</message>
<message numerus="yes">
<location filename="../process/installworker.cpp" line="228"/>
<location filename="../process/installworker.cpp" line="269"/>
<source>%n days remaining</source>
<translation>
<numerusform>%n Tag übrig</numerusform>
@ -33,7 +33,7 @@
</translation>
</message>
<message numerus="yes">
<location filename="../process/installworker.cpp" line="230"/>
<location filename="../process/installworker.cpp" line="271"/>
<source>%n hours remaining</source>
<translation>
<numerusform>%n Stunde übrig</numerusform>
@ -41,7 +41,7 @@
</translation>
</message>
<message numerus="yes">
<location filename="../process/installworker.cpp" line="232"/>
<location filename="../process/installworker.cpp" line="273"/>
<source>%n minutes remaining</source>
<translation>
<numerusform>%n Minute übrig</numerusform>
@ -49,7 +49,7 @@
</translation>
</message>
<message numerus="yes">
<location filename="../process/installworker.cpp" line="234"/>
<location filename="../process/installworker.cpp" line="275"/>
<source>%n seconds remaining</source>
<translation>
<numerusform>%n Sekunde übrig</numerusform>

View file

@ -4,28 +4,28 @@
<context>
<name>InstallWorker</name>
<message>
<location filename="../process/installworker.cpp" line="78"/>
<location filename="../process/installworker.cpp" line="207"/>
<location filename="../process/installworker.cpp" line="88"/>
<location filename="../process/installworker.cpp" line="248"/>
<source>Downloading %1...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../process/installworker.cpp" line="107"/>
<location filename="../process/installworker.cpp" line="117"/>
<source>Unpacking %1...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../process/installworker.cpp" line="124"/>
<location filename="../process/installworker.cpp" line="134"/>
<source>Configuring %1...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../process/installworker.cpp" line="216"/>
<location filename="../process/installworker.cpp" line="257"/>
<source>%1 of %2</source>
<translation type="unfinished"></translation>
</message>
<message numerus="yes">
<location filename="../process/installworker.cpp" line="228"/>
<location filename="../process/installworker.cpp" line="269"/>
<source>%n days remaining</source>
<translation>
<numerusform>%n day remaining</numerusform>
@ -33,7 +33,7 @@
</translation>
</message>
<message numerus="yes">
<location filename="../process/installworker.cpp" line="230"/>
<location filename="../process/installworker.cpp" line="271"/>
<source>%n hours remaining</source>
<translation>
<numerusform>%n hour remaining</numerusform>
@ -41,7 +41,7 @@
</translation>
</message>
<message numerus="yes">
<location filename="../process/installworker.cpp" line="232"/>
<location filename="../process/installworker.cpp" line="273"/>
<source>%n minutes remaining</source>
<translation>
<numerusform>%n minute remaining</numerusform>
@ -49,7 +49,7 @@
</translation>
</message>
<message numerus="yes">
<location filename="../process/installworker.cpp" line="234"/>
<location filename="../process/installworker.cpp" line="275"/>
<source>%n seconds remaining</source>
<translation>
<numerusform>%n second remaining</numerusform>

View file

@ -4,28 +4,28 @@
<context>
<name>InstallWorker</name>
<message>
<location filename="../process/installworker.cpp" line="78"/>
<location filename="../process/installworker.cpp" line="207"/>
<location filename="../process/installworker.cpp" line="88"/>
<location filename="../process/installworker.cpp" line="248"/>
<source>Downloading %1...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../process/installworker.cpp" line="107"/>
<location filename="../process/installworker.cpp" line="117"/>
<source>Unpacking %1...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../process/installworker.cpp" line="124"/>
<location filename="../process/installworker.cpp" line="134"/>
<source>Configuring %1...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../process/installworker.cpp" line="216"/>
<location filename="../process/installworker.cpp" line="257"/>
<source>%1 of %2</source>
<translation type="unfinished"></translation>
</message>
<message numerus="yes">
<location filename="../process/installworker.cpp" line="228"/>
<location filename="../process/installworker.cpp" line="269"/>
<source>%n days remaining</source>
<translation>
<numerusform>%n day remaining</numerusform>
@ -33,7 +33,7 @@
</translation>
</message>
<message numerus="yes">
<location filename="../process/installworker.cpp" line="230"/>
<location filename="../process/installworker.cpp" line="271"/>
<source>%n hours remaining</source>
<translation>
<numerusform>%n hour remaining</numerusform>
@ -41,7 +41,7 @@
</translation>
</message>
<message numerus="yes">
<location filename="../process/installworker.cpp" line="232"/>
<location filename="../process/installworker.cpp" line="273"/>
<source>%n minutes remaining</source>
<translation>
<numerusform>%n minute remaining</numerusform>
@ -49,7 +49,7 @@
</translation>
</message>
<message numerus="yes">
<location filename="../process/installworker.cpp" line="234"/>
<location filename="../process/installworker.cpp" line="275"/>
<source>%n seconds remaining</source>
<translation>
<numerusform>%n second remaining</numerusform>

View file

@ -4,28 +4,28 @@
<context>
<name>InstallWorker</name>
<message>
<location filename="../process/installworker.cpp" line="78"/>
<location filename="../process/installworker.cpp" line="207"/>
<location filename="../process/installworker.cpp" line="88"/>
<location filename="../process/installworker.cpp" line="248"/>
<source>Downloading %1...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../process/installworker.cpp" line="107"/>
<location filename="../process/installworker.cpp" line="117"/>
<source>Unpacking %1...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../process/installworker.cpp" line="124"/>
<location filename="../process/installworker.cpp" line="134"/>
<source>Configuring %1...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../process/installworker.cpp" line="216"/>
<location filename="../process/installworker.cpp" line="257"/>
<source>%1 of %2</source>
<translation type="unfinished"></translation>
</message>
<message numerus="yes">
<location filename="../process/installworker.cpp" line="228"/>
<location filename="../process/installworker.cpp" line="269"/>
<source>%n days remaining</source>
<translation>
<numerusform>%n day remaining</numerusform>
@ -33,7 +33,7 @@
</translation>
</message>
<message numerus="yes">
<location filename="../process/installworker.cpp" line="230"/>
<location filename="../process/installworker.cpp" line="271"/>
<source>%n hours remaining</source>
<translation>
<numerusform>%n hour remaining</numerusform>
@ -41,7 +41,7 @@
</translation>
</message>
<message numerus="yes">
<location filename="../process/installworker.cpp" line="232"/>
<location filename="../process/installworker.cpp" line="273"/>
<source>%n minutes remaining</source>
<translation>
<numerusform>%n minute remaining</numerusform>
@ -49,7 +49,7 @@
</translation>
</message>
<message numerus="yes">
<location filename="../process/installworker.cpp" line="234"/>
<location filename="../process/installworker.cpp" line="275"/>
<source>%n seconds remaining</source>
<translation>
<numerusform>%n second remaining</numerusform>

View file

@ -4,28 +4,28 @@
<context>
<name>InstallWorker</name>
<message>
<location filename="../process/installworker.cpp" line="78"/>
<location filename="../process/installworker.cpp" line="207"/>
<location filename="../process/installworker.cpp" line="88"/>
<location filename="../process/installworker.cpp" line="248"/>
<source>Downloading %1...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../process/installworker.cpp" line="107"/>
<location filename="../process/installworker.cpp" line="117"/>
<source>Unpacking %1...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../process/installworker.cpp" line="124"/>
<location filename="../process/installworker.cpp" line="134"/>
<source>Configuring %1...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../process/installworker.cpp" line="216"/>
<location filename="../process/installworker.cpp" line="257"/>
<source>%1 of %2</source>
<translation type="unfinished"></translation>
</message>
<message numerus="yes">
<location filename="../process/installworker.cpp" line="228"/>
<location filename="../process/installworker.cpp" line="269"/>
<source>%n days remaining</source>
<translation>
<numerusform>%n day remaining</numerusform>
@ -33,7 +33,7 @@
</translation>
</message>
<message numerus="yes">
<location filename="../process/installworker.cpp" line="230"/>
<location filename="../process/installworker.cpp" line="271"/>
<source>%n hours remaining</source>
<translation>
<numerusform>%n hour remaining</numerusform>
@ -41,7 +41,7 @@
</translation>
</message>
<message numerus="yes">
<location filename="../process/installworker.cpp" line="232"/>
<location filename="../process/installworker.cpp" line="273"/>
<source>%n minutes remaining</source>
<translation>
<numerusform>%n minute remaining</numerusform>
@ -49,7 +49,7 @@
</translation>
</message>
<message numerus="yes">
<location filename="../process/installworker.cpp" line="234"/>
<location filename="../process/installworker.cpp" line="275"/>
<source>%n seconds remaining</source>
<translation>
<numerusform>%n second remaining</numerusform>

View file

@ -4,28 +4,28 @@
<context>
<name>InstallWorker</name>
<message>
<location filename="../process/installworker.cpp" line="78"/>
<location filename="../process/installworker.cpp" line="207"/>
<location filename="../process/installworker.cpp" line="88"/>
<location filename="../process/installworker.cpp" line="248"/>
<source>Downloading %1...</source>
<translation>%1 Downloaden...</translation>
</message>
<message>
<location filename="../process/installworker.cpp" line="107"/>
<location filename="../process/installworker.cpp" line="117"/>
<source>Unpacking %1...</source>
<translation>%1 Uitpakken...</translation>
</message>
<message>
<location filename="../process/installworker.cpp" line="124"/>
<location filename="../process/installworker.cpp" line="134"/>
<source>Configuring %1...</source>
<translation>%1 Instellen...</translation>
</message>
<message>
<location filename="../process/installworker.cpp" line="216"/>
<location filename="../process/installworker.cpp" line="257"/>
<source>%1 of %2</source>
<translation>%1 van %2</translation>
</message>
<message numerus="yes">
<location filename="../process/installworker.cpp" line="228"/>
<location filename="../process/installworker.cpp" line="269"/>
<source>%n days remaining</source>
<translation>
<numerusform>%n dag resterend</numerusform>
@ -33,7 +33,7 @@
</translation>
</message>
<message numerus="yes">
<location filename="../process/installworker.cpp" line="230"/>
<location filename="../process/installworker.cpp" line="271"/>
<source>%n hours remaining</source>
<translation>
<numerusform>%n uur resterend</numerusform>
@ -41,7 +41,7 @@
</translation>
</message>
<message numerus="yes">
<location filename="../process/installworker.cpp" line="232"/>
<location filename="../process/installworker.cpp" line="273"/>
<source>%n minutes remaining</source>
<translation>
<numerusform>%n minuut resterend</numerusform>
@ -49,7 +49,7 @@
</translation>
</message>
<message numerus="yes">
<location filename="../process/installworker.cpp" line="234"/>
<location filename="../process/installworker.cpp" line="275"/>
<source>%n seconds remaining</source>
<translation>
<numerusform>%n seconde resterend</numerusform>

View file

@ -4,28 +4,28 @@
<context>
<name>InstallWorker</name>
<message>
<location filename="../process/installworker.cpp" line="78"/>
<location filename="../process/installworker.cpp" line="207"/>
<location filename="../process/installworker.cpp" line="88"/>
<location filename="../process/installworker.cpp" line="248"/>
<source>Downloading %1...</source>
<translation>Baixando %1</translation>
</message>
<message>
<location filename="../process/installworker.cpp" line="107"/>
<location filename="../process/installworker.cpp" line="117"/>
<source>Unpacking %1...</source>
<translation>Descompactando %1</translation>
</message>
<message>
<location filename="../process/installworker.cpp" line="124"/>
<location filename="../process/installworker.cpp" line="134"/>
<source>Configuring %1...</source>
<translation>Configurando %1</translation>
</message>
<message>
<location filename="../process/installworker.cpp" line="216"/>
<location filename="../process/installworker.cpp" line="257"/>
<source>%1 of %2</source>
<translation>%1 de %2</translation>
</message>
<message numerus="yes">
<location filename="../process/installworker.cpp" line="228"/>
<location filename="../process/installworker.cpp" line="269"/>
<source>%n days remaining</source>
<translation>
<numerusform>%n dia restante</numerusform>
@ -33,7 +33,7 @@
</translation>
</message>
<message numerus="yes">
<location filename="../process/installworker.cpp" line="230"/>
<location filename="../process/installworker.cpp" line="271"/>
<source>%n hours remaining</source>
<translation>
<numerusform>%n hora restante</numerusform>
@ -41,7 +41,7 @@
</translation>
</message>
<message numerus="yes">
<location filename="../process/installworker.cpp" line="232"/>
<location filename="../process/installworker.cpp" line="273"/>
<source>%n minutes remaining</source>
<translation>
<numerusform>%n minuto restante</numerusform>
@ -49,7 +49,7 @@
</translation>
</message>
<message numerus="yes">
<location filename="../process/installworker.cpp" line="234"/>
<location filename="../process/installworker.cpp" line="275"/>
<source>%n seconds remaining</source>
<translation>
<numerusform>%n segundo restante</numerusform>

View file

@ -4,49 +4,49 @@
<context>
<name>InstallWorker</name>
<message>
<location filename="../process/installworker.cpp" line="78"/>
<location filename="../process/installworker.cpp" line="207"/>
<location filename="../process/installworker.cpp" line="88"/>
<location filename="../process/installworker.cpp" line="248"/>
<source>Downloading %1...</source>
<translation>Đang tải xuống %1...</translation>
</message>
<message>
<location filename="../process/installworker.cpp" line="107"/>
<location filename="../process/installworker.cpp" line="117"/>
<source>Unpacking %1...</source>
<translation>Đang giải nén %1...</translation>
</message>
<message>
<location filename="../process/installworker.cpp" line="124"/>
<location filename="../process/installworker.cpp" line="134"/>
<source>Configuring %1...</source>
<translation>Đang cấu hình %1...</translation>
</message>
<message>
<location filename="../process/installworker.cpp" line="216"/>
<location filename="../process/installworker.cpp" line="257"/>
<source>%1 of %2</source>
<translation>%1 trén %2</translation>
</message>
<message numerus="yes">
<location filename="../process/installworker.cpp" line="228"/>
<location filename="../process/installworker.cpp" line="269"/>
<source>%n days remaining</source>
<translation>
<numerusform>Còn %n ngày</numerusform>
</translation>
</message>
<message numerus="yes">
<location filename="../process/installworker.cpp" line="230"/>
<location filename="../process/installworker.cpp" line="271"/>
<source>%n hours remaining</source>
<translation>
<numerusform>Còn %n tiếng</numerusform>
</translation>
</message>
<message numerus="yes">
<location filename="../process/installworker.cpp" line="232"/>
<location filename="../process/installworker.cpp" line="273"/>
<source>%n minutes remaining</source>
<translation>
<numerusform>Còn %n phút</numerusform>
</translation>
</message>
<message numerus="yes">
<location filename="../process/installworker.cpp" line="234"/>
<location filename="../process/installworker.cpp" line="275"/>
<source>%n seconds remaining</source>
<translation>
<numerusform>Còn %n giay</numerusform>