Added 7za for Windows + work on updating.

This commit is contained in:
Martin Rotter 2014-04-10 20:10:05 +02:00
parent 163ec6f0f8
commit ef873433e8
9 changed files with 551 additions and 24 deletions

View File

@ -161,6 +161,13 @@ Status auto-aktualizace: %5</translation>
</translation>
</message>
</context>
<context>
<name>FeedsToolBar</name>
<message>
<source>Toolbar spacer</source>
<translation>Mezera</translation>
</message>
</context>
<context>
<name>FeedsView</name>
<message>
@ -1176,6 +1183,22 @@ Autoři této aplikace nenesou žádnou odpovědnost za ztrátu Vašich dat.</tr
<source>custom external browser is not set correctly</source>
<translation>vlastní externí prohlížeč není správně nastaven</translation>
</message>
<message>
<source>Toolbars</source>
<translation>Nástrojové lišty</translation>
</message>
<message>
<source>Toolbar for feeds list</source>
<translation>Lišta seznamu kanálů</translation>
</message>
<message>
<source>Toolbar for messages list</source>
<translation>Lišta seznamu zpráv</translation>
</message>
<message>
<source>Select toolbar to edit</source>
<translation>Zvolte lištu, kterou chcete upravit</translation>
</message>
</context>
<context>
<name>FormStandardCategoryDetails</name>
@ -1762,6 +1785,45 @@ Přejít na web aplikace a stáhnout jej ručně.</translation>
<translation>Obsah zprávy.</translation>
</message>
</context>
<context>
<name>MessagesToolBar</name>
<message>
<source>Search messages</source>
<translation>Hledat zprávy</translation>
</message>
<message>
<source>Message search box</source>
<translation>Hledací panel zpráv</translation>
</message>
<message>
<source>Menu for highlighting messages</source>
<translation>Menu pro zvýrazňování zpráv</translation>
</message>
<message>
<source>No extra highlighting</source>
<translation>Nic nezvýrazňovat</translation>
</message>
<message>
<source>Highlight unread messages</source>
<translation>Zvýraznit nepřečtené zprávy</translation>
</message>
<message>
<source>Highlight important messages</source>
<translation>Zvýraznit důležité zprávy</translation>
</message>
<message>
<source>Display all messages</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Message highlighter</source>
<translation>Zvýrazňovač zpráv</translation>
</message>
<message>
<source>Toolbar spacer</source>
<translation>Mezera</translation>
</message>
</context>
<context>
<name>MessagesView</name>
<message>
@ -1951,6 +2013,37 @@ Přejít na web aplikace a stáhnout jej ručně.</translation>
<translation>Otevřít nový tab webového prohlížeče.</translation>
</message>
</context>
<context>
<name>ToolBarEditor</name>
<message>
<source>Dialog</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Activated actions</source>
<translation>Aktivované akce</translation>
</message>
<message>
<source>Available actions</source>
<translation>Dostupné akce</translation>
</message>
<message>
<source>Insert separator</source>
<translation>Vložit oddělovač</translation>
</message>
<message>
<source>Insert spacer</source>
<translation>Vložit mezeru</translation>
</message>
<message>
<source>Separator</source>
<translation>Oddělovač</translation>
</message>
<message>
<source>Toolbar spacer</source>
<translation>Mezera</translation>
</message>
</context>
<context>
<name>TrayIconMenu</name>
<message>

View File

@ -151,6 +151,13 @@ Auto-update status: %5</source>
</translation>
</message>
</context>
<context>
<name>FeedsToolBar</name>
<message>
<source>Toolbar spacer</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>FeedsView</name>
<message>
@ -1150,6 +1157,22 @@ Authors of this application are NOT responsible for lost data.</source>
<source>custom external browser is not set correctly</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Toolbars</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Toolbar for feeds list</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Toolbar for messages list</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Select toolbar to edit</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>FormStandardCategoryDetails</name>
@ -1738,6 +1761,45 @@ Go to application website to obtain it manually.</source>
<translation>Inhalt der Nachricht.</translation>
</message>
</context>
<context>
<name>MessagesToolBar</name>
<message>
<source>Search messages</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Message search box</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Menu for highlighting messages</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>No extra highlighting</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Highlight unread messages</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Highlight important messages</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Display all messages</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Message highlighter</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Toolbar spacer</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>MessagesView</name>
<message>
@ -1927,6 +1989,37 @@ Go to application website to obtain it manually.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ToolBarEditor</name>
<message>
<source>Dialog</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Activated actions</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Available actions</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Insert separator</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Insert spacer</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Separator</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Toolbar spacer</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>TrayIconMenu</name>
<message>

View File

@ -151,6 +151,13 @@ Auto-update status: %5</source>
</translation>
</message>
</context>
<context>
<name>FeedsToolBar</name>
<message>
<source>Toolbar spacer</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>FeedsView</name>
<message>
@ -1148,6 +1155,22 @@ Authors of this application are NOT responsible for lost data.</source>
<source>custom external browser is not set correctly</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Toolbars</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Toolbar for feeds list</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Toolbar for messages list</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Select toolbar to edit</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>FormStandardCategoryDetails</name>
@ -1733,6 +1756,45 @@ Go to application website to obtain it manually.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>MessagesToolBar</name>
<message>
<source>Search messages</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Message search box</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Menu for highlighting messages</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>No extra highlighting</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Highlight unread messages</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Highlight important messages</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Display all messages</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Message highlighter</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Toolbar spacer</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>MessagesView</name>
<message>
@ -1922,6 +1984,37 @@ Go to application website to obtain it manually.</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>ToolBarEditor</name>
<message>
<source>Dialog</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Activated actions</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Available actions</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Insert separator</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Insert spacer</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Separator</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Toolbar spacer</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>TrayIconMenu</name>
<message>

View File

@ -157,6 +157,13 @@ Statut de la mise à jour automatique : %5</translation>
</translation>
</message>
</context>
<context>
<name>FeedsToolBar</name>
<message>
<source>Toolbar spacer</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>FeedsView</name>
<message>
@ -1172,6 +1179,22 @@ Les auteurs de cette application NE sont PAS responsable de la perte de données
<source>custom external browser is not set correctly</source>
<translation>Le navigateur externe n&apos;a pas é correctement défini</translation>
</message>
<message>
<source>Toolbars</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Toolbar for feeds list</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Toolbar for messages list</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Select toolbar to edit</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>FormStandardCategoryDetails</name>
@ -1761,6 +1784,45 @@ Aller sur le site de l&apos;application pour les obtenir manuellement.</translat
<translation>Contenu du message.</translation>
</message>
</context>
<context>
<name>MessagesToolBar</name>
<message>
<source>Search messages</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Message search box</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Menu for highlighting messages</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>No extra highlighting</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Highlight unread messages</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Highlight important messages</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Display all messages</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Message highlighter</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Toolbar spacer</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>MessagesView</name>
<message>
@ -1950,6 +2012,37 @@ Aller sur le site de l&apos;application pour les obtenir manuellement.</translat
<translation type="unfinished">Ouvrir un nouvel onglet de navigation web.</translation>
</message>
</context>
<context>
<name>ToolBarEditor</name>
<message>
<source>Dialog</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Activated actions</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Available actions</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Insert separator</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Insert spacer</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Separator</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Toolbar spacer</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>TrayIconMenu</name>
<message>

View File

@ -158,6 +158,13 @@ Status automatisch bijwerken: %5</translation>
</translation>
</message>
</context>
<context>
<name>FeedsToolBar</name>
<message>
<source>Toolbar spacer</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>FeedsView</name>
<message>
@ -1174,6 +1181,22 @@ Auteurs van Rssguard zijn NIET verantwoordelijk voor verlies van gegevens.</tran
<source>custom external browser is not set correctly</source>
<translation>Aangepaste externe browser in niet correct ingesteld</translation>
</message>
<message>
<source>Toolbars</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Toolbar for feeds list</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Toolbar for messages list</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Select toolbar to edit</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>FormStandardCategoryDetails</name>
@ -1763,6 +1786,45 @@ Ga naar RRSguard website en download het handmatig.</translation>
<translation>Inhoud van het bericht.</translation>
</message>
</context>
<context>
<name>MessagesToolBar</name>
<message>
<source>Search messages</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Message search box</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Menu for highlighting messages</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>No extra highlighting</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Highlight unread messages</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Highlight important messages</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Display all messages</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Message highlighter</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Toolbar spacer</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>MessagesView</name>
<message>
@ -1952,6 +2014,37 @@ Ga naar RRSguard website en download het handmatig.</translation>
<translation>Open een nieuw webbrowser tabblad.</translation>
</message>
</context>
<context>
<name>ToolBarEditor</name>
<message>
<source>Dialog</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Activated actions</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Available actions</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Insert separator</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Insert spacer</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Separator</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Toolbar spacer</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>TrayIconMenu</name>
<message>

BIN
resources/7za/7za.exe Normal file

Binary file not shown.

View File

@ -29,7 +29,7 @@
#include <QDesktopServices>
#include <QProcess>
#if defined(Q_OS_WIN32)
#if defined(Q_OS_WIN)
#include "qt_windows.h"
#endif
@ -82,7 +82,7 @@ void FormUpdate::checkForUpdates() {
m_ui->m_lblAvailableRelease->setText(update.first.m_availableVersion);
m_ui->m_txtChanges->setText(update.first.m_changes);
if (update.first.m_availableVersion >= APP_VERSION) {
if (update.first.m_availableVersion > APP_VERSION) {
m_ui->m_lblStatus->setStatus(WidgetWithStatus::Ok,
tr("New release available."),
tr("This is new version which can be\ndownloaded and installed."));
@ -116,7 +116,9 @@ void FormUpdate::startUpdate() {
// On Windows/OS2 we can update the application right away.
// Download the files.
QByteArray output;
//NetworkFactory::downloadFile(url_file, DOWNLOAD_TIMEOUT, output);
QNetworkReply::NetworkError download_result = NetworkFactory::downloadFile(url_file,
10 * DOWNLOAD_TIMEOUT,
output);
#if QT_VERSION >= 0x050000
QString temp_directory = QStandardPaths::writableLocation(QStandardPaths::TempLocation);
@ -128,11 +130,7 @@ void FormUpdate::startUpdate() {
QString output_file_name = url_file.mid(url_file.lastIndexOf('/') + 1);
QFile output_file(temp_directory + QDir::separator() + output_file_name);
if (output_file.exists()) {
output_file.remove();
}
if (output_file.open(QIODevice::WriteOnly)) {
if (output_file.open(QIODevice::WriteOnly | QIODevice::Truncate)) {
output_file.write(output);
output_file.flush();
output_file.close();
@ -147,9 +145,10 @@ void FormUpdate::startUpdate() {
#if defined(Q_OS_WIN32)
ShellExecute(0,
0,
(wchar_t *)QString("updater.exe").utf16(),
(wchar_t *) QString("\"%1\" \"%2\"").arg(qApp->applicationFilePath(),
output_file.fileName()).utf16(),
(wchar_t *) QString("updater.exe").utf16(),
(wchar_t *) QString("\"%1\" \"%2\" \"%3\"").arg(temp_directory,
qApp->applicationFilePath(),
output_file.fileName()).utf16(),
0,
SW_SHOWNORMAL);
#elif defined(Q_OS_OS2)

View File

@ -6,7 +6,7 @@ Detector::Detector(QObject *parent) : QObject(parent) {
void Detector::handleMessage(const QString &message) {
if (message == "app_is_running") {
qDebug("Detected another instance of RSS Guard/Updater was starting...");
qDebug("Another instance of RSS Guard/Updater was starting...");
}
else if (message == "app_quit") {
// zprava na vypnuti, tu ignorujeme.

View File

@ -22,22 +22,56 @@
#include <QDebug>
#include <QThread>
#include <QProcess>
#include <QFileInfo>
#include <QDir>
bool removeDir(const QString & dirName) {
bool result = true;
QDir dir(dirName);
if (dir.exists(dirName)) {
foreach (QFileInfo info, dir.entryInfoList(QDir::NoDotAndDotDot | QDir::System | QDir::Hidden | QDir::AllDirs | QDir::Files, QDir::DirsFirst)) {
if (info.isDir()) {
result = removeDir(info.absoluteFilePath());
}
else {
result = QFile::remove(info.absoluteFilePath());
}
if (!result) {
return result;
}
}
result = dir.rmdir(dirName);
}
return result;
}
int main(int argc, char *argv[]) {
// Instantiate base application object.
QtSingleCoreApplication application("rssguard", argc, argv);
qDebug("Instantiated QtSingleApplication class.");
if (argc != 3) {
qDebug("Insufficient arguments passed. Quitting updater...");
}
else {
// Print input data.
qDebug("RSS Guard application executable: %s", argv[1]);
qDebug("File with update to be installed: %s", argv[2]);
if (argc != 4) {
qDebug("Insufficient arguments passed. Quitting RSS Guard updater...");
return EXIT_FAILURE;
}
QString temp_directory = QDir::toNativeSeparators(argv[1]);
QString rssguard_executable = QDir::toNativeSeparators(argv[2]);
QString rssguard_path = QDir::toNativeSeparators(QFileInfo(rssguard_executable).absolutePath());
QString update_archive = QDir::toNativeSeparators(argv[3]);
// Print input data.
qDebug("\n===== directories & files =====");
qDebug("TEMP folder:\n\t %s", qPrintable(temp_directory));
qDebug("RSS Guard application executable:\n\t %s", qPrintable(rssguard_executable));
qDebug("RSS Guard application path:\n\t %s", qPrintable(rssguard_path));
qDebug("File with update to be installed:\n\t %s", qPrintable(update_archive));
qDebug("===== directories & files =====\n");
// Check if main RSS Guard instance is running.
if (application.sendMessage("app_quit")) {
qDebug("RSS Guard application is running. Quitting it...");
@ -52,10 +86,39 @@ int main(int argc, char *argv[]) {
QObject::connect(&application, SIGNAL(messageReceived(QString)),
&detector, SLOT(handleMessage(QString)));
// Everything is set up, file is downloaded, RSS Guard is not running.
// TODO: nahradit spravne "/" > "\\" v argumentech pro 7za
// https://code.google.com/p/quite-rss/source/browse/src/mainwindow.cpp?repo=updater#393
QProcess::startDetached("7za", QStringList() << "e" << argv[2]);
QString extractor_program("7za.exe");
QStringList arguments;
QString output_temp_directory = temp_directory + QDir::separator() + "rssguard";
// Remove old folders.
if (QDir(output_temp_directory).exists()) {
removeDir(output_temp_directory);
}
arguments << "x" << update_archive << "-r" <<
"-y" << QString("-o%1").arg(output_temp_directory);
switch (QProcess::execute(extractor_program, arguments)) {
case -1:
qDebug("\nDecompressor crashed. Upgrading process failed.");
return EXIT_FAILURE;
case -2:
qDebug("\nDecompressor was not started successfully. Upgrading process failed.");
return EXIT_FAILURE;
case 0:
qDebug("\nDecompression is done.");
break;
default:
qDebug("\nUnspecified error occured.");
return EXIT_FAILURE;
}
// All needed files are now decompressed in temporary directory.
// Copy all possible files to RSS Guard application path and
// do final cleanup.
// Enter global event loop.
return QtSingleCoreApplication::exec();