Ich habe eine allgemeine Frage für die Gruppe. Ich bin im Begriff, ein großes Projekt für mein Team zu starten, das wir als Desktop-Anwendung machen werden (ich bin generell ein Web-Typ in meinem Bewerbungsausblick, aber ich bin offen für Veränderungen.)
Mein großes Anliegen ist es, dass die aktuellen Desktop-Anwendungen im Unternehmen bereits eine Nervensache sind, zu pflegen, oder genauer gesagt, zu verteilen, wenn eine Änderung vorgenommen werden muss. Daher möchte ich etwas entwickeln, das den Benutzer (unsere Mitarbeiter) dazu veranlasst hat, die Software zu aktualisieren, wenn sie auf ihrem Computer veraltet ist.
Diejenigen von euch, die das schon einmal gemacht haben, ich würde mich über jeden Tipp freuen, auf welche Fallstricke Sie achten sollten. Außerdem würde ich mich für alle Online-Ressourcen interessieren, die jeder hilfreich fand, um ähnliche Anforderungen zu erfüllen.
Danke.
EDIT: Mir ist klar, dass ich lutsche !! Ich habe vergessen, einige der wichtigsten Details zu erwähnen. Es wird eine Window-Anwendung sein, die mit dem .NET-Framework geschrieben wurde und auf Win XP und höher abzielt.
Wenn Sie es selbst implementieren möchten, ist es auch ziemlich einfach. Unsere Anwendung fragt einen Webdienst regelmäßig nach Informationen mit ungefähr der folgenden API ab:
%Vor%Pros: Indem Sie die Logik in Ihre getVersion-Methode codieren, können Sie verschiedene Versionen an verschiedene Kunden weitergeben. Außerdem können Sie Beta-Versionen zuerst an eine begrenzte Anzahl von Kunden weitergeben.
Wenn Sie den Hash-Wert für alle heruntergeladenen Dateien prüfen, stellen Sie sicher, dass Ihre Anwendung die Dateien ordnungsgemäß herunterlädt. Dies kann auch verwendet werden, um beschädigte Anwendungsdateien zu reparieren. Wenn der Hash für die Version mit dem Hash für alle heruntergeladenen Dateien übereinstimmt, ist es an der Zeit, sie zu installieren.
Um zu installieren, lassen Sie Ihr Hauptprogramm eine Update-Anwendung starten und beenden Sie es. Das Update sollte alle geänderten Anwendungsdateien ersetzen. Das Aktualisierungsprogramm kann auch SQL-Änderungsskripts oder Registrierungsänderungen ausführen, die sich auf das Release beziehen.
Am Ende des Aktualisierungsprogramms starten Sie Ihre Hauptanwendung erneut und lassen Sie das Update-Programm bei Bedarf von der Hauptanwendung aktualisieren. Sie aktualisieren sich gegenseitig, sodass Sie Bugfixes sowohl an das Update-Programm als auch an die Hauptanwendung weitergeben können.
Ich empfehle auch, das Downgrade zu testen, bevor Sie eine neue Version an Kunden weitergeben, damit Sie automatisch zu einer alten stabilen Version wechseln können, wenn kritische Fehler gefunden werden.
Da Sie .NET und Windows verwenden, sollte ClickOnce für Sie gut funktionieren, wie Daniel sagte.
Eine andere Option ist die Schattenkopie . Im Grunde sagen Sie Ihren Assemblies, dass sie von einem anderen Ort als dem, auf dem sie installiert sind, ausgeführt werden. Dadurch kann Ihre Anwendung ihre eigenen Dateien aktualisieren, obwohl die Assemblys geladen sind. Ich habe das nicht vor mir selbst benutzt, aber ich habe es ein paar Mal gesehen.
ClickOnce wäre eine einfachere Lösung und ich würde mich dafür entscheiden, es sei denn, Sie haben ein Bedürfnis, das es nicht erfüllt. Mit ClickOnce können Sie die Anwendung auf einem Webserver oder in einer Netzwerkfreigabe veröffentlichen und Ihren Benutzern ermöglichen, ihre Kopie automatisch zu aktualisieren, wenn eine neue Version verfügbar ist. Aus dem Speicher wird automatisch geprüft und der Benutzer wird aufgefordert, die Anwendung zu starten.
Was wir machen ist; wenn die Anwendung startet oder jede Stunde oder so, machen wir eine GET-Anfrage an unseren Webserver.
Das Skript überprüft die Datenbank und vergleicht die Versionen. Wenn die Version anders ist, wird "UPGRADE" zurück an das Dienstprogramm gesendet, ansonsten "GOOD"
Wenn das Dienstprogramm "UPGRADE" empfängt, sendet es die Benutzer an eine vorgegebene URL, um die neueste Version des Dienstprogramms herunterzuladen.
Dies funktioniert gut mit kleineren Dienstprogrammen (& lt; 20 MB).
Vorschläge
Sie haben nicht angegeben, welche Sprache / Plattform / welches Framework Sie verwenden, aber ich würde empfehlen, eine zu verwenden, in der diese Funktionalität integriert ist.
Microsoft hat ClickOnce Bereitstellungen, und ich kenne Adobe Air macht etwas ähnliches . Hier ist eine Frage, die sich auf die Funktion zur automatischen Aktualisierung in Java bezieht.
Tags und Links .net desktop-application