Wie würden Sie eine Anwendung von einer Netzwerkfreigabe ausführen, damit Sie die Anwendung aktualisieren können?

Wie würden Sie eine Anwendung von einer Netzwerkfreigabe ausführen, damit Sie die Anwendung aktualisieren können?

Wir haben eine interne Desktop-Anwendung, die wir auf einer Netzwerkfreigabe bereitgestellt haben. In diesem Verzeichnis befinden sich Unterverzeichnisse für jede Version, z:\Apps\ApplicationX\1.0 z:\Apps\ApplicationX\2.0 z:\Apps\ApplicationX\2.1

Ich möchte eine Verknüpfung auf den Benutzer-Desktops erstellen, die auf die neueste Version der Anwendung verweist. Meine aktuelle Lösung besteht darin, die aktuelle Version in ein Verzeichnis namens „z:\Apps\ApplicationX\Current“ zu legen und auf dem Desktop eine Verknüpfung zur dortigen EXE-Datei zu erstellen.

Das Problem besteht darin, dass ich die Anwendung nicht aktualisieren kann, wenn sie ausgeführt wird, da die Datei gesperrt ist.

Ich habe versucht, die Verknüpfung so zu ändern, dass sie auf eine Batchdatei verweist, die die Datei lokal kopiert und dann von dort ausführt, aber wir verwenden alle Windows 7 und UAC verursacht Probleme beim Kopieren der Datei auf das Laufwerk C:, wo ich die Installation erwarten würde.

Ich könnte die ausführbare Datei vermutlich auf das private Laufwerk des Benutzers kopieren und von dort aus ausführen, aber mir gefällt die Idee nicht, eine ausführbare Datei auf dem privaten Laufwerk des Benutzers zu haben. Das bedeutet auch, dass mehrere Kopien der Anwendung im Netzwerk vorhanden sind, was mir nicht gefällt.

Ich dachte auch, dass ich vielleicht eine Verknüpfung zu einer Verknüpfung haben könnte und einfach die Verknüpfung aktualisieren würde, aber das funktioniert auch nicht.

Meine aktuelle Lösung besteht aus einer Batchdatei, die den Startbefehl enthält, der auf die aktuelle Version verweist, und einer Verknüpfung zu dieser Batchdatei.

Hat jemand sonst noch mögliche Lösungen?

Antwort1

Meine bevorzugte Methode: zwei Anwendungen. Die Haupt-App haben Sie bereits. Die zweite ist ein Launcher/Updater. Erstellen Sie eine Verknüpfung zum Launcher. Dieser prüft eine Konfigurationseinstellung (verschlüsseltes Kauderwelsch, XML, einfacher Text, direkt im Launcher fest codiert, was auch immer) auf den Pfad der zu startenden ausführbaren Datei und startet sie dann. Sobald die Haupt-App gestartet ist, wird der Loader beendet.

Immer wenn Sie eine neue Version erhalten, aktualisieren Sie die Konfigurationsdatei des Launchers und bei zukünftigen Programmstarts wird dann die neue Version geöffnet.

Es handelt sich um einen Prozess im Stil eines „Bootloaders“. Es gibt eine kleine Hilfs-App, die auf die Vollversion der App verweist. Clients starten die kleine App und werden dann zur richtigen Vollversion der App weitergeleitet.

Bonuspunkte erhalten Sie, wenn Sie Ihren Launcher so einstellen, dass er Hash-Fingerabdrücke oder Signaturen der Apps in voller Größe überprüft, um sicherzustellen, dass niemand kreativ wird und versucht, vom Launcher aus eine Verknüpfung mit einer anderen App herzustellen.

Antwort2

Klingt nach einer veralteten Anwendung. Am besten ist es, die Anwendung nicht zu kompliziert zu machen und nur Ausfallzeiten für Updates einzuplanen.

Antwort3

Ich stimme mit DanBig überein, dass Sie in Ihrer einfachen Situation, sofern Sie nicht viel umbauen möchten (wie Ruscal vorschlägt, was eine gute Idee ist), einfach eine „Unterbrechung“ einplanen sollten, bei der Sie die Dateisperre(n) aufheben und die EXE-Datei ersetzen (vielleicht über Nacht oder am Wochenende).

„Ich möchte eine Verknüpfung auf den Benutzer-Desktops platzieren, die auf die neueste Version der Anwendung verweist“ – OP

Um sie auf dem Desktop zu erhalten, warum lassen Sie Ihre Verknüpfung nicht auf z:\Apps\ApplicationX\ zeigen und platzieren Sie die aktuelle EXE dort? Dann erstellen Sie nach Bedarf Unterordner für frühere Revisionen/Versionen wie z:\Apps\ApplicationX\revisions. Auf diese Weise ändert sich die Clientverknüpfung nie und bei Updates verschieben Sie einfach die vorhandene EXE in einen rev#-Ordner und platzieren die neue/aktualisierte EXE in den Ordner z:\Apps\ApplicationX\.

Antwort4

Sie können einen Samba-Server verwenden, der unter Linux läuft. Wenn Sie die Anwendung aktualisieren müssen, benennen Sie einfach den Ordner „current“ um und erstellen Sie einen neuen mit dem Namen „current“. Die Freigabe muss schreibgeschützt sein.

Unter Linux (Unix) ist das Umbenennen oder Löschen einer Datei zulässig und Prozesse, in denen die Dateien geöffnet sind, können die alte Version verwenden, bis der Dateideskriptor geschlossen wird.

verwandte Informationen