Updateprogramm

Alle Fragen zur Netzwerkkommunikation
Ultrawipf
Beiträge: 3
Registriert: Sa 21. Aug 2010, 21:14

Updateprogramm

Beitrag von Ultrawipf »

Hey leute,
Ich versuche mich an einem updateprogramm aber ich habe fast keine ahnung von fpc.
Das programm kann eine einfache konsolenanwendung sein, die vielleicht in einer txt datei aufm server die version checkt
und ein zip archiv downloadet und entpackt.
Aber ich bin wie gesagt noch ein neuling im bereich fpc mit internet.
Ich habe gehört sowas könnte mit synapse realisiert werden.

Benutzeravatar
theo
Beiträge: 10856
Registriert: Mo 11. Sep 2006, 19:01

Re: Updateprogramm

Beitrag von theo »

Kann man machen. Und was ist jetzt deine Frage?

Ultrawipf
Beiträge: 3
Registriert: Sa 21. Aug 2010, 21:14

Re: Updateprogramm

Beitrag von Ultrawipf »

Wie man das macht.

ein codebeispiel oder so.
ich bin neuling in free pascal.

Live
Beiträge: 144
Registriert: So 22. Aug 2010, 16:06
OS, Lazarus, FPC: Backtrack 5 RC4 - 64bit Gnome
CPU-Target: 64bit
Wohnort: NRW
Kontaktdaten:

Re: Updateprogramm

Beitrag von Live »

Zunächst solltest du dir eine Komponente überlegen, ich empfehle HTTPSend.

Dann musst du dir überlegen, wie du dein Programm auf ein Update überprüfen willst.
Ich habe es mit dem Auslesen der eigenen Version und anschließendem Abgleich mit einer .conf Datei auf meinem Webserver gemacht.

Es gibt viele Möglichkeiten, ein "Updater" zu schreiben, Google hätte dir bestimmt gut geholfen.

Eigentlich bin ich nicht der Freund von Leuten, die sich alles aus der Nase ziehen lassen, bzw. direkt fertige Source-Codes wünschen und nicht selber denken.
Deswegen nur ein kleines Snippet :P

Code: Alles auswählen

procedure checkupdate;
var t:Tstringlist;
vers : string;
upvers : string;
begin
     with THTTPSend.Create do
     begin
          if HTTPMethod('GET', '') then
          try
          // Datei vom Server auslesen und 1. Zeile an upvers weitergeben.
          t := TStringlist.Create;
          t.LoadFromStream(Document);
          vers:=GetFileVersion( ParamStr(0) );
          upvers:=t.Strings[0];
          if not(vers = upvers) then
          begin
            // Hier was machen, wenn Programmversion ungleich Updateversion
          end
          else
          begin
          // No Update;
          end;
          t.free
          except
          // Error Handling
          end;
         Free;
     end;
end;
Grüße

Live

Socke
Lazarusforum e. V.
Beiträge: 3177
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Updateprogramm

Beitrag von Socke »

Ultrawipf hat geschrieben:Wie man das macht.

ein codebeispiel oder so.
ich bin neuling in free pascal.
Netzwerkzugriff ist nicht das, womit man als Einsteiger anfangen sollte - zumindest nicht, wenn man halbwegs hochwertigen Code produzieren will.
Ansonsten ganz einfach überlegen:
Was musst du (als Programm) tun um dein Ziel zu erreichen. Dann jeden einzelnen Schritt programmieren und am Ende alles zusammenfügen.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

carli
Beiträge: 657
Registriert: Sa 9. Jan 2010, 17:32
OS, Lazarus, FPC: Linux 2.6.x, SVN-Lazarus, FPC 2.4.0-2
CPU-Target: 64Bit

Re: Updateprogramm

Beitrag von carli »

Grundsätzlich in den Updater sollte rein:

- eine Oberfläche (kannst du schon mal designen)
- eine HTTP- oder FTP-Komponente, um die Dateien herunterzuladen
- Ein Archivformat, ich könnte dir z.B. die Units von gwGroups geben, das ist eine .tar.gz-ähnliche Kompression ;) Zip und Rar tuns aber auch.


Der Rest vom Code ergibt sich:
- Versionsflag abfragen
- falls neue Version da: Nutzer nach Aktualisierung fragen
- Update herunterladen
- alte Dateien entfernen
- Update entpacken
- Erfolgsmeldung ausspucken

Scotty
Beiträge: 768
Registriert: Mo 4. Mai 2009, 13:24
OS, Lazarus, FPC: Arch Linux, Lazarus 1.3 r44426M FPC 2.6.4
CPU-Target: x86_64-linux-qt/gtk2
Kontaktdaten:

Re: Updateprogramm

Beitrag von Scotty »

Schwierigkeiten kann es noch bei den folgenden Punkten geben
* Redirection der http-Adresse
* Crossplattform Packer
* Entpacken im laufenden Betrieb
* extra Programm vs. Methode
* manueller Download

Ich fände es nicht schön, wenn ich ein Programm haben möchte, soll dann aber nicht xy.zip installieren sondern updater.exe. Deswegen sollte IMHO der Updater Teil des Programms sein, wodurch man zum Problem kommt, im laufenden Betrieb entpacken zu müssen. Unter Linux ist das kein Problem und unter Windows geht angeblich die Exe umzubennen (aus irgendwelchen Gründen klappt das bei mir nicht mehr). Allerdings muss sichergestellt werden, dass der Benutzer nicht schon manuell aktualisiert hat oder auch gar nicht aktualisieren will. Entpacker gibt es ausreichend, hier im Forum liegt ein Codeschnipsel für Zip, das ausgezeichnet funktioniert. Und mit Redirection meine ich die serverseitige Umleitung der http-Adresse, die manchmal möglichst umständlich erfolgt, um solche Updater zu vermeiden (gilt natürlich nur für http).

carli
Beiträge: 657
Registriert: Sa 9. Jan 2010, 17:32
OS, Lazarus, FPC: Linux 2.6.x, SVN-Lazarus, FPC 2.4.0-2
CPU-Target: 64Bit

Re: Updateprogramm

Beitrag von carli »

Ich antworte einfach mal anstelle von Ultrawipf:

Es handelt sich hier nur um den Windows-Updater, da dieses **** Betriebssystem ja bekanntlich keine Paketverwaltung hat.
Demzufolge müsste auch der Updater ein extra Programm sein.

Ich hab Ultrawipf das Forum hier empfohlen, um mit FPC und Lazarus zurechtzukommen.
Dass er jetzt von euch den gesamten Sourcecode vorgekaut haben will, finde ich ein bisschen dreist.
Zumal er hier auch nur erfährt, wie man das Problem löst und nicht wie man es konkret implementiert :D

Ultrawipf
Beiträge: 3
Registriert: Sa 21. Aug 2010, 21:14

Re: Updateprogramm

Beitrag von Ultrawipf »

ich habe wie gesagt keine ahnung von free pascal...
ich muss das einfach erst lernen und vielleicht suchst du dir jemand anderen...
vb ist in ordnung aber fpc ist nicht mein ding.

carli
Beiträge: 657
Registriert: Sa 9. Jan 2010, 17:32
OS, Lazarus, FPC: Linux 2.6.x, SVN-Lazarus, FPC 2.4.0-2
CPU-Target: 64Bit

Re: Updateprogramm

Beitrag von carli »

Aber wenn du Probleme hast, von VB nach FPC umzulernen, dann stellst du doch nicht so was als Frage ins Forum.

und VB ist wegen .NET ausgeschlossen.

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6762
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Updateprogramm

Beitrag von af0815 »

War da nicht vor EINIGER Zeit genau so ein Artikel, bezüglich Updates und wie man die mit Pascal macht, in der Toolbox ?!
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

TKindermann
Beiträge: 22
Registriert: Mi 19. Mai 2010, 07:23

Re: Updateprogramm

Beitrag von TKindermann »

af0815 hat geschrieben:War da nicht vor EINIGER Zeit genau so ein Artikel, bezüglich Updates und wie man die mit Pascal macht, in der Toolbox ?!
Hallo zusammen,
auch ich (als quasi Wiedereinsteiger) suche eine Update Komponente für mein kleines Progrämmchen.

Ich selber komme von der Datenbankseite und um so eine Komponente selber schreiben zu können fehlen wir einfach die nötigen (Netzwerk-)Grundlagen.
D.h. aber nicht, das ich zu faul bin mir das anzueignen, aber man kann nicht alles wissen...

Ich habe auch schon versucht die Internettools von http://www.benibela.de/sources_de.html#internettools zu verwenden, aber ich habe schon nicht das Beispiel Programm zum laufen gebracht. Es fehlte immer irgendeine Datei.

Nun möchte ich hier höflich Fragen, wo ich den besagten Artikel bekommen könnte (bin nämlich keine Abbonent :-)), bzw wo ich eine AutoUpdate Komponente/Klasse beziehen könnte (natürlich kostenlos) oder wer mir eine lauffähige Anleitung für die Demo der oben genannten Internettools vermitteln könnte.

Viele Grüße aus Düsseldorf

Thomas

Benutzeravatar
theo
Beiträge: 10856
Registriert: Mo 11. Sep 2006, 19:01

Re: Updateprogramm

Beitrag von theo »

TKindermann hat geschrieben: Ich habe auch schon versucht die Internettools von http://www.benibela.de/sources_de.html#internettools zu verwenden, aber ich habe schon nicht das Beispiel Programm zum laufen gebracht. Es fehlte immer irgendeine Datei.
Aussagen wie "Es geht nicht", "Es gibt einen Fehler" oder "Da fehlt was" bringen nichts, wenn dir geholfen werden soll.
Welche Datei fehlt denn?

TKindermann
Beiträge: 22
Registriert: Mi 19. Mai 2010, 07:23

Re: Updateprogramm

Beitrag von TKindermann »

Entschuldigung für die schlechte Beschreibung:

Fehlermeldung: Can't open include file "progressdialog.lrs"

Die Datei kann ich auch so leider nicht finden...

Live
Beiträge: 144
Registriert: So 22. Aug 2010, 16:06
OS, Lazarus, FPC: Backtrack 5 RC4 - 64bit Gnome
CPU-Target: 64bit
Wohnort: NRW
Kontaktdaten:

Re: Updateprogramm

Beitrag von Live »

TKindermann hat geschrieben:Entschuldigung für die schlechte Beschreibung:

Fehlermeldung: Can't open include file "progressdialog.lrs"

Die Datei kann ich auch so leider nicht finden...
Ich habe mir die Komponenten mal heruntergeladen und im Ordner "internet" findet sich die Datei progressdialog.pas . Das sollte eigtl die richtige sein, sie ist ja auch in der autoupdate unit eingebunden.

Code: Alles auswählen

interface
{$DEFINE showProgress}
uses
  Classes, SysUtils, internetaccess,bbutils,simplexmlparser,  dialogs, {$IFDEF showProgress}progressdialog{$ENDIF}
  ;
Die Progressdialog.lrs lässt sich bei mir jedoch auch nicht ausfindbar machen. Ist ja auch logisch, wir brauchen eine Lazarus Form-Datei und die heisst in diesem fall progressdialog.lfm

In progressdialog.pas

Code: Alles auswählen

initialization
  {$I progressdialog.lfm}
 
end.
Hier nochmal Inhalt meines Directory:

Code: Alles auswählen

24.09.2010  16:28    <DIR>          .
24.09.2010  16:28    <DIR>          ..
28.02.2010  15:56            16.179 autoupdate.pas
24.09.2010  16:28    <DIR>          examples
22.09.2010  22:57            12.327 internetaccess.pas
25.09.2010  01:25             1.427 progressdialog.lfm
25.09.2010  01:25             1.648 progressdialog.pas
24.09.2010  14:23             6.910 synapseinternetaccess.pas
24.09.2010  15:26            19.147 w32internetaccess.pas
               6 Datei(en)         57.638 Bytes
               3 Verzeichnis(se), 80.004.059.136 Bytes frei

Antworten