LabVIEWForum.de
Programmatischer Softwareupdate - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Programmatischer Softwareupdate (/Thread-Programmatischer-Softwareupdate)



Programmatischer Softwareupdate - unicorn - 08.03.2010 22:29

Hallo,

ich möchte gerne meine LabVIEW-Applikation dahin erweitern, dass der Endnutzer der Software diese über einen Button auf die neueste Programmversion aktualisieren kann, also einen automatischen Download mit anschließender Installation startet. Wer hat so etwas schon einmal unter LabVIEW umgesetzt und kann mir ein paar Tipps geben?

Die von mir erstellte Software wird mit einem Gerät ausgeliefert. Derzeit entwickelt sich die Software sehr schnell weiter, so dass ein Update der Software über das Internet praktisch wäre.


Programmatischer Softwareupdate - jg - 09.03.2010 21:56

Gemacht noch nicht, aber schon mal über so eine Thematik nachgedacht.

Das "Doofe" ist, dass du eigentlich eine zweite Software brauchst. Denn solange deine "Originalsoftware" läuft, kannst du ja nicht einfach eine neue Exe drüberkopieren, da spukt Windows dazwischen. Auf einem RT-System wäre das je nach Version etwas anderes.

Also grundsätzliche Idee:
Benutzer drückt Button
-> Software schaut per Internet (z.B FTP) nach, ob eine neue Version vorliegt.
-> Software startet eine Update-Software und beendet sich selbst.
-> Die Update-Software führt den Download durch und kopiert neue Version an die richtige Stelle.
-> Update-Software könnte noch den Neustart der Originalsoftware durchführen.

Gruß, Jens


Programmatischer Softwareupdate - RoLe - 10.03.2010 09:17

Meine Anwendungen haben alle ein Auto-Update bei Programmstart.
Es wird geprüft, ob eine neue EXE (Build Version) vorliegt, wenn ja wird ein Dialog eingeblendet mit den Änderungen und Ja/Nein Taster.
Soll ein Update durchgeführt werden, wird eine Batch-Datei mit den entsprechenden Wait und Kopier Funktionen erstellt.
Die alte Anwendung wird beendet, wenn die neue (mit anderem Namen) kopiert (heruntergeladen) ist, die Batch-Datei löscht die alte, macht ein Rename der neuen und startet die Anwendung neu.
Ich benötige das aber nur im internen Netzwerk und kopiere nur Dateien, kein Install.


Programmatischer Softwareupdate - unicorn - 10.03.2010 11:29

' schrieb:Meine Anwendungen haben alle ein Auto-Update bei Programmstart.
Es wird geprüft, ob eine neue EXE (Build Version) vorliegt, wenn ja wird ein Dialog eingeblendet mit den Änderungen und Ja/Nein Taster.
Soll ein Update durchgeführt werden, wird eine Batch-Datei mit den entsprechenden Wait und Kopier Funktionen erstellt.
Die alte Anwendung wird beendet, wenn die neue (mit anderem Namen) kopiert (heruntergeladen) ist, die Batch-Datei löscht die alte, macht ein Rename der neuen und startet die Anwendung neu.
Ich benötige das aber nur im internen Netzwerk und kopiere nur Dateien, kein Install.

Ist denn die erste Installation der Software mit einem Installer erfolgt?

Ein solche Vorgehensweise würde ja prinzipiell auch über das Internet möglich sein.


Programmatischer Softwareupdate - RoLe - 11.03.2010 09:59

' schrieb:Ist denn die erste Installation der Software mit einem Installer erfolgt?
Ja mache ich so, einmal muss installiert werden.
Danach brauche ich nur die EXE und ev. eine INI zu aktualisieren, bis jetzt ging das immer.

' schrieb:Ein solche Vorgehensweise würde ja prinzipiell auch über das Internet möglich sein.
Ja, eigentlich schon. Was ich nicht weis, ob die Versionsinfo direkt von der EXE gelesen werden kann, oder ob es da eine Hilfsdatei (Versionsnummer.txt) braucht.


Programmatischer Softwareupdate - unicorn - 11.03.2010 11:20

Soweit ich es verstehe, kopiert der Installer die EXE auch nur in das Installationsverzeichnis. Zusätzlich kann man weitere Komponenten mit Installer kopieren oder installieren.

In meinem Programm verwende ich verschiedene Klassen und X-Controls. Das führt mit der Standardeinstellungen der Build Specifications für eine Application dazu, dass eine ganze Reihe von Unterverzeichnissen neben der EXE erstellt werden, in die die VIs der Klassen und XControls kopiert werden. Das macht die Angelegenheit etwas schwieriger.


Programmatischer Softwareupdate - rolfk - 12.03.2010 07:43

' schrieb:Ja, eigentlich schon. Was ich nicht weiss, ob die Versionsinfo direkt von der EXE gelesen werden kann, oder ob es da eine Hilfsdatei (Versionsnummer.txt) braucht.

Die neuste LabVIEW Version hat da glaube ich sogar Support an Board um die Windows Versionresource zu lesen, aber es gibt viele VIs im Netz die eine Widnows API aufrufen um das auch zu machen.

' schrieb:Soweit ich es verstehe, kopiert der Installer die EXE auch nur in das Installationsverzeichnis. Zusätzlich kann man weitere Komponenten mit Installer kopieren oder installieren.

Ich würde das Ganze mit meiner ZIP Library 1:1 in ein Archive zippen und dann im Updater auf dem Rechner wieder ins Zieldirectory entzippen. Dann ist der Download selber noch immer einfach und die Verteilung der Files wird durch die bereits vorhandene und getestete ZIP Library gemacht.

Aber der Installer macht schon mehr als nur das. Er registriert die App beim Betriebssytem so dass sie auch wieder deinstalliert werden kann, registriert allenfalls ein ActiveX Server Interface, and last but certainly not least, installiert er auch noch die notwendige Runtime Engine wenn sie nicht schon vorhanden ist. Also eine Erstinstallation auf dem Rechner ist wärmstens anzubefehlen.


Programmatischer Softwareupdate - RoLe - 12.03.2010 08:22

' schrieb:Die neuste LabVIEW Version hat da glaube ich sogar Support an Board um die Windows Versionresource zu lesen, aber es gibt viele VIs im Netz die eine Widnows API aufrufen um das auch zu machen.
Ich verwende das ja auch, mit einem "lokalen" Dateipfad.
Die Frage ist, ob das auch mit einem FTP oder HTML Pfad geht.


Programmatischer Softwareupdate - rolfk - 12.03.2010 13:00

' schrieb:Ich verwende das ja auch, mit einem "lokalen" Dateipfad.
Die Frage ist, ob das auch mit einem FTP oder HTML Pfad geht.

Nein, Gott behüte! Kannst natürlich Deinen Server weit offen setzen um per DCOM von jedem beliebigen Rechner aus Windows Componenten anzurufen aber das schiene mir nicht ganz der Sinn der Übung. Big Grin

Natürlich könnte man per PHP bei einem HTTP Server zum Beispiel eine lokale Methode aufrufen um die Versionsnummer zu extrahieren, aber das scheint mir etwas Overkill. Ich würde da wohl ganz einfach eine entsprechende Namensgebung des eigentlichen Archives machen mit einer Redirection von einer generieken URL, oder wie schon von Dir erwähnt das parallele Textfile.