2015-12-16 6 views
7

Ich verwende derzeit das Qt Installer Framework und verwaltet, um ein Online-Repository einzurichten. Was ich wissen möchte, ist:Qt Installer Framework: Auto Update

Bietet das Framework eine Art von "Auto-Update" -Mechanismus, z. ein Plugin/Dienst, der bei jedem Start des Programms/Systems nach Updates sucht?
Nach Updates suchen wäre ausreichend, da die Installation selbst mit dem Wartungstool durchgeführt werden kann.

Alles, was ich zu diesem Thema war dieser kleine Satz gefunden:

Endanwender können verwenden, um das Wartungs-Tool zu installieren, zusätzliche Komponenten von dem Server nach der Erstinstallation, sowie automatisches Updates erhalten zum Inhalt, sobald die Updates auf dem Server veröffentlicht werden.

von hier: http://doc.qt.io/qtinstallerframework/ifw-overview.html#choosing-installer-type

Vielen Dank für Ihre Hilfe!

Edit: Vorschlag
Auf der Grundlage dieser akzeptiert answere Frage ich eine kleine Bibliothek erstellt automatisch nach Updates suchen den Installer Framework - https://github.com/Skycoder42/QtAutoUpdater

+0

Sie finden können [Mendeley/Update-Installer] (https://github.com/Mendeley/Update-Installer) interessant. –

Antwort

13

Was ich tue, ist das Wartungstool mit QProcess ausführen, und überprüfen Sie dann die Ausgabe. Es hat einen Modus, in dem die GUI nicht ausgeführt wird, sondern nur die Aktualisierungsinformationen ausgegeben werden, wenn sie verfügbar sind.

Beachten Sie, dass ich beim Start der Anwendungen das Arbeitsverzeichnis auf den Pfad der Anwendung setze, sodass ich nur MaintenanceTool ausführen kann.

QProcess process; 
process.start("maintenancetool --checkupdates"); 

// Wait until the update tool is finished 
process.waitForFinished(); 

if(process.error() != QProcess::UnknownError) 
{ 
    qDebug() << "Error checking for updates"; 
    return false; 
} 

// Read the output 
QByteArray data = process.readAllStandardOutput(); 

// No output means no updates available 
// Note that the exit code will also be 1, but we don't use that 
// Also note that we should parse the output instead of just checking if it is empty if we want specific update info 
if(data.isEmpty()) 
{ 
    qDebug() << "No updates available"; 
    return false; 
} 

// Call the maintenance tool binary 
// Note: we start it detached because this application need to close for the update 
QStringList args("--updater"); 
bool success = QProcess::startDetached("maintenancetool", args); 

// Close the application 
qApp->closeAllWindows(); 
0

Es gibt einen Abschnitt im Leitfaden darüber, wie es zu tun, aber Sie nennen es die Förderung von Updates anstelle von automatischen Updates, IFW Updates on doc.qt.io.

+0

Ich sah das, aber wenn ich richtig verstehe, muss der Benutzer das MaintananceTool laufen, um diese Updates zu bekommen? – Felix