Google Chrome aktualisiert sich automatisch alle fünf Stunden . Ich möchte genau diese Funktionalität in meiner eigenen Anwendung klonen. Was ist der beste Weg, um diese Funktionalität unter Windows zu implementieren?
windows-installer
auto-update
John Shedletsky
quelle
quelle
Antworten:
Um dieses Update-Verhalten zu replizieren, benötigen Sie zwei Dinge:
Eine Updater-Anwendung, die regelmäßig nach Updates sucht. Wenn ein Update gefunden wird, sollte es automatisch installiert werden. Die meisten kommerziellen Setup-Authoring-Tools enthalten gute Updater-Anwendungen. Sie können versuchen, selbst einen Updater zu schreiben, aber es ist nicht so einfach, wie es sich anhört.
Installationen pro Benutzer für jede Ihrer Produktversionen. Bei einer Installation pro Benutzer werden Daten nur in den Benutzerprofilordner (AppData, Roaming-Ordner usw.) und in HKEY_CURRENT_USER geschrieben. Keine Programmdateien oder HKEY_LOCAL_MACHINE.
Installationen pro Benutzer sind erforderlich, damit Sie das Upgrade unbeaufsichtigt durchführen können. Wenn die Installation pro Computer erfolgt, wird in der neueren Windows-Version die Aufforderung zur Erhöhung angezeigt, und der Benutzer weiß nicht, was passiert.
Der Updater
Einige Updater verwenden Dienste. Für automatisierte Updates ist dies keine echte Lösung, da für die Dienstinstallation Administratorrechte erforderlich sind. Ihr Installationsprozess und nachfolgende Updates zeigen also Aufforderungen zur Erhöhung an.
Ein anderer Ansatz ist die Verwendung einer Updater-Anwendung pro Benutzer. Es erfordert keine Erhebung und kann im Anwendungsordner installiert werden. Diese Art von Updater kann entweder als geplante Aufgabe oder in Ihrer Anwendung ausgeführt werden (führen Sie sie aus, wenn Ihre Anwendung gestartet wird).
In beiden Szenarien müssen Sie berücksichtigen, dass der Updater sich möglicherweise selbst aktualisieren muss. Der Prozess, der das Update ausführt, muss also ein temporärer Prozess sein (z. B. eine temporäre Kopie der Updater-Anwendung). Es sollte auch ohne Höhe laufen. Deshalb ist ein Service keine so gute Idee. Es müsste sich vor dem Update selbst stoppen, einen temporären Prozess verwenden, der das Update behandelt, und nach Abschluss erneut starten.
Andere Dinge zu beachten sind:
Die Updates
Ein häufiges Missverständnis ist, dass Updates die Anwendungsdateien sein sollten (wie die Hauptanwendung EXE). Dies ist selten der Fall, da ein Update möglicherweise mehr als nur eine Datei überschreiben muss.
Die meisten Updates sind Installationspakete (z. B. MSI) oder Patches (MSP). Dies ist der beste Ansatz, da sie die gesamte Aktualisierungslogik verarbeiten:
Installationspakete vereinfachen auch die Updater-Anwendung. Bei dieser Art von Updates muss der Updater nur verfügbare Updates erkennen, herunterladen und ausführen.
Updates funktionieren auf zwei Arten:
Windows Installer bietet eine hervorragende Unterstützung für beide, sodass Sie MSI-Pakete und MSP-Patches verwenden können . Es werden auch unbeaufsichtigte Installationen unterstützt, sodass Ihr Updater das Paket lediglich mit einem Befehlszeilenparameter ausführen muss.
Diese Pakete unterstützen auch Installationen pro Benutzer oder pro Computer über die ALLUSERS- Eigenschaft.
Verteilung aktualisieren
Nachdem Sie sich für einen Updater und einige Update-Pakete entschieden haben, benötigen Sie auch einen Verteilungsmechanismus:
All dies ist nicht sehr einfach. Aus diesem Grund verwenden viele Produkte Updater von Drittanbietern. Sogar einige kommerzielle Setup-Authoring-Tools bieten Updater für Ihre Pakete an.
Ein benutzerdefinierter Updater wird hauptsächlich von sehr großen Unternehmen mit vielen Produkten verwendet, da sich die Investition für sie lohnt.
quelle
Wenn Sie genau die gleiche Funktionalität haben möchten, können Sie. Google hat es als Open-Source-Lösung bereitgestellt.
https://github.com/google/omaha
quelle
Versuchen Sie es mit winsparkle - https://github.com/vslavik/winsparkle . Es ist eine C ++ - Bibliothek.
quelle