2015-12-16 15 views
7

Attualmente sto utilizzando Qt Installer Framework e sono riuscito a configurare un repository online. Quello che voglio sapere è:Qt Installer Framework: Auto Update

Il Framework fornisce un qualche tipo di meccanismo di "auto-aggiornamento", ad es. un plugin/servizio che controlla gli aggiornamenti ogni volta che il programma/sistema inizia?
Controllare gli aggiornamenti sarebbe sufficiente, poiché l'installazione può essere eseguita utilizzando lo strumento manutenzione.

Tutto quello che potevo trovare su questo argomento è stato questo piccolo frase:

Gli utenti finali possono utilizzare lo strumento di manutenzione per installare componenti aggiuntivi dal server dopo l'installazione iniziale, così come per ricevere gli aggiornamenti automatici al contenuto non appena gli aggiornamenti sono pubblicati sul server.

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

Grazie per il vostro aiuto!

Edit: Suggerimento
sulla base di answere accettato di questa domanda ho creato una piccola biblioteca per il controllo automatico degli aggiornamenti tramite il framework di installazione - https://github.com/Skycoder42/QtAutoUpdater

+0

Si possono trovare [Mendeley/Update-Installer] (https://github.com/Mendeley/Update-Installer) interessante. –

risposta

13

Quello che faccio, è eseguire lo strumento di manutenzione usando QProcess, e quindi controllare l'uscita. Ha una modalità in cui non esegue la GUI, ma fornisce solo le informazioni di aggiornamento, se disponibili.

Nota che imposto la directory di lavoro sul percorso dell'applicazione all'avvio delle applicazioni, quindi posso eseguire solo maintenancetool.

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

C'è una sezione nella guida su come farlo, ma lo chiamano promuovere gli aggiornamenti piuttosto che gli aggiornamenti automatici, IFW Updates on doc.qt.io.

+0

L'ho visto, ma se ho capito bene, l'utente dovrà eseguire il MaintananceTool per ottenere quegli aggiornamenti? – Felix