AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi update eures eigenen Programms: vorgehensweise
Thema durchsuchen
Ansicht
Themen-Optionen

update eures eigenen Programms: vorgehensweise

Ein Thema von Ajin · begonnen am 24. Apr 2007 · letzter Beitrag vom 17. Jan 2008
Antwort Antwort
Seite 1 von 3  1 23      
Ajin

Registriert seit: 23. Feb 2006
Ort: Mons
252 Beiträge
 
Delphi 2010 Professional
 
#1

update eures eigenen Programms: vorgehensweise

  Alt 24. Apr 2007, 11:33
Hallo Delphianer,

Sicherlich aben viele unter euch schon Programme geschrieben und auch veröffentlicht. Natürlich wird die Software auch gewartet und unterliegt einigen Versionsänderungen. Nun ich hab da eine kleine Anwendung bestehend aus einem .exe File und 3 DLLs als Innosetup im Internet zum download angeboten.
Dieses Programm ist in der Testphase und mein kleiner Nutzerkreis (bestehend aus 12 Leuten) testen die Software täglich. Wenn ich ne neue Version gebastelt habe wird diese wieder als Innosetup verpackt und hochgeladen. Bzw wird nur das .exe File hochgeladen oder eine geänderte DLL.
Dann geht ne Foren-Nachricht an alle raus und die Leute laden sich die aktuelle Version herunter.

Das find ich irgendwie uncool. Toll wäre es doch, wenn mein Programm nach dem Start in ner online Tabelle nachschaut, ob eine neue Version verfügbar ist und den nutzer dann mit einem "Versionsupdate verfügbar" Dialog nervt.
Optionen wären:

-herunterladen und manuell installieren
-herunterladen und automatisch installierenA
-jetzt nicht herunterladen (später erinnern)

Nun wie löst ihr soetwas? Ich habe mir das so vorgestellt und dabei treten dann einige Fragen auf.

(1) Anwendung registriert Versionsupdate.
(2) Nutzer möchte das update herunterladen und automatisch installieren
(3) eine versteckte TWebBrowser Komponente navigiert die update URL an (z.B. www.meineseite.de/neuedatei.exe)
und dann müsste ja der speichern Dialog des Browsers erscheinen.
(4) Mit der "ondownloadComplete" Methode kann ich dem user signalisieren, dass der download abgeschlossen ist.


(?) Tja was dann? Solange meine Anwendung läuft kann ich sie ja nicht mit den neuen Files ersetzen? Soll ich noch eine andere Anwendung schreiben, welche nur für das Aktualiseren der Hauptanwendung zuständig ist?


Nach dem Aktualisierungsvorgang müsste das update Proggie:

- Update Tabelle wieder zurücksetzen (es ist keine neuere Version mehr verfügbar)
- die Hauptanwendung wieder starten und sich selbst beenden

Wäre das okay oder viiiel zu umständlich?
  Mit Zitat antworten Zitat
Benutzerbild von zecke
zecke

Registriert seit: 17. Jan 2004
494 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: update eures eigenen Programms: vorgehensweise

  Alt 24. Apr 2007, 11:38


Ich würde dir eine *.bat-Datei empfehlen, die zuerst dein Programm schließt - die Files austauscht und dann dein Programm wieder startet. Bei Spybot S&D funktioniert das wunderbar (wenn ich mich nicht irre).


edit: Zu bat-Dateien gab es kürzlich einen Thread. Zum Umgang mit diesen, trotzdem hier ein Link: wuppdi
edit2: fehlerkorrektur
mfg zecke
  Mit Zitat antworten Zitat
Schubi

Registriert seit: 4. Nov 2003
Ort: Happurg (Nürnberg)
331 Beiträge
 
Delphi 2006 Professional
 
#3

Re: update eures eigenen Programms: vorgehensweise

  Alt 24. Apr 2007, 11:47
Bat-Dateien sinf recht praktisch für sowas!
Die kannst du z.B. direkt von deiner Homepage downloaden und lokal ausführen.

Delphi-Quellcode:
batchname := Pfad_Lokal+'Update.bat';

FileSetAttr(Pfad_Lokal+'TTS_Starter.exe', 0);
batchfile := TStringList.Create;
with batchfile do
begin
  try
    Add('@Echo off');
    Add(':Label1');
    Add('del "'+Pfad_Lokal+File1+'"'); //Löscht die alte Datei
    Add('copy "' + Pfad_Netz + File1 + '" "' + Pfad_Lokal + File1 + '"'); //Kopiert die Neue
    Add('if not Exist "' + Pfad_Lokal + File1 + '" goto Label1'); //Prüft, ob sie vorhanden ist
    Add(Pfad_Lokal + File1); //Startet sie
    Add('del ' + batchname); //und löscht die BAT
    SaveToFile(batchname);
    ChDir(ExtractFilePath(Application.ExeName));
    WinExec(PChar(batchname), SW_HIDE); //BAT starten
  finally
    batchfile.Free;
  end;
  Halt; //Programm beenden
end;
Christian Schubert
Ich fange gerade erst an, den Umfang meiner Ahnungslosigkeit zu begreifen...
  Mit Zitat antworten Zitat
manfred_h

Registriert seit: 4. Nov 2005
Ort: Basel
442 Beiträge
 
Delphi XE2 Enterprise
 
#4

Re: update eures eigenen Programms: vorgehensweise

  Alt 24. Apr 2007, 11:57
Hallo

schau Dir doch diese Komponente an:
http://www.tp-soft.de/index.php?T=rema&P=produkte

damit dannst Du das alles machen.
Habe diese bei mir imeinsatz und das ganze funktioniert einwandfrei.

Shalom
Manfred
  Mit Zitat antworten Zitat
Benutzerbild von Mazel
Mazel

Registriert seit: 11. Nov 2005
Ort: Leipzig
831 Beiträge
 
#5

Re: update eures eigenen Programms: vorgehensweise

  Alt 24. Apr 2007, 12:37
Als ob jemand meine Gedanken lesen kann, ich hatte auch demnächst vor diese Frage zu stellen.

Eine *.bat Datei scheint hier wirklich praktisch, aber wie kann man am einfachsten im Internet nach einem Update schauen? Ich habe mir vorgestellt eine html Datei hochzuladen und in ihr befindet sich ein Inhalt, vtl. die Build Nummer. Das Programm läd die html Datei und vergleicht die Buildnummern (neue und alte), wenn eine neuere vorhanden ist, dann die neue Datei laden. Nur wie geht das am einfachsten?

Gruß
Mazel
Marcel Jänicke
www.mj-software.net
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#6

Re: update eures eigenen Programms: vorgehensweise

  Alt 24. Apr 2007, 12:44
So kompliziert würde ich es nicht machen. Du legst einfach alle Informationen, die du brauchst, binär in eine Datei auf dem Server ab (muss ja nicht menschenlesbar sein) und lädst diese dann nach Bedarf herunter. Das wäre der allereinfachste Weg; wenn du es ein wenig komplizierter machen willst, benutzt du statt dem Binärformat eine XML-Datei, damit du ihren Inhalt leicht auch auf deiner Webseite anzeigen kannst.
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Schubi

Registriert seit: 4. Nov 2003
Ort: Happurg (Nürnberg)
331 Beiträge
 
Delphi 2006 Professional
 
#7

Re: update eures eigenen Programms: vorgehensweise

  Alt 24. Apr 2007, 13:07
Delphi-Quellcode:
//Auslesen der Versionsnummer aus einer Datei
type
  T_Version = Record
    Hauptversion, Nebenversion, Ausgabe, Build : Integer;
  end;

function GetVersion(Datei : String): T_Version;
var
  VerInfoSize: DWORD;
  VerInfo: Pointer;
  VerValueSize: DWORD;
  VerValue: PVSFixedFileInfo;
  Dummy: DWORD;

begin
  Result.Hauptversion := 0;
  Result.Nebenversion := 0;
  Result.Ausgabe := 0;
  Result.Build := 0;

  If FileExists(Datei) Then begin
    VerInfoSize := GetFileVersionInfoSize(PChar(Datei), Dummy);
    if VerInfoSize = 0 then Exit;
    GetMem(VerInfo, VerInfoSize);
    GetFileVersionInfo(PChar(Datei), 0, VerInfoSize, VerInfo);
    VerQueryValue(VerInfo, '\', Pointer(VerValue), VerValueSize);
    with VerValue^ do
    begin
      Result.Hauptversion := (dwFileVersionMS shr 16);
      Result.Nebenversion := (dwFileVersionMS and $FFFF);
      Result.Ausgabe := (dwFileVersionLS shr 16);
      Result.Build := (dwFileVersionLS and $FFFF);
    end;
    FreeMem(VerInfo, VerInfoSize);
  end
  else begin
    Result.Hauptversion := 0;
    Result.Nebenversion := 0;
    Result.Ausgabe := 0;
    Result.Build := 0;
  end;
end;
Dann musst du nur noch die aktuelle Version deiner EXE in eine Datei schreiben(z.B. binär)
Diese Datei lädst du runter, vergleichst den Inhalt der Datei(also die Versionsnummer) mit der Versionsnummer die die Prozedur oben für deine lokale EXE ausgibt.

Dann kannst du die EXE runterladen (in ein Update-Verzeichnis oder so) und mit der Batch-Datei aktualisierst du das Ganze.

Noch Fragen?
Christian Schubert
Ich fange gerade erst an, den Umfang meiner Ahnungslosigkeit zu begreifen...
  Mit Zitat antworten Zitat
messie

Registriert seit: 2. Mär 2005
Ort: Göttingen
1.592 Beiträge
 
Delphi 2009 Professional
 
#8

Re: update eures eigenen Programms: vorgehensweise

  Alt 24. Apr 2007, 13:44
Zitat von Ajin:
Das find ich irgendwie uncool.
Cooler wäre, statt einer Batchdatei einen Dienst mitzuinstallieren, der im Fall eines Updates gestartet wird, die Arbeit erledigt und sich dann beendet.
Grüße, Messie
  Mit Zitat antworten Zitat
Schubi

Registriert seit: 4. Nov 2003
Ort: Happurg (Nürnberg)
331 Beiträge
 
Delphi 2006 Professional
 
#9

Re: update eures eigenen Programms: vorgehensweise

  Alt 24. Apr 2007, 13:47
Zitat von messie:
Zitat von Ajin:
Das find ich irgendwie uncool.
Cooler wäre, statt einer Batchdatei einen Dienst mitzuinstallieren, der im Fall eines Updates gestartet wird, die Arbeit erledigt und sich dann beendet.
Grüße, Messie
Dafür muss ich mein System nicht mit einem Dienst "zumüllen", das geht auch mit einer simplen exe.
Die Batch-Datei ist aber kleiner und genauso wirksam.
Christian Schubert
Ich fange gerade erst an, den Umfang meiner Ahnungslosigkeit zu begreifen...
  Mit Zitat antworten Zitat
Ajin

Registriert seit: 23. Feb 2006
Ort: Mons
252 Beiträge
 
Delphi 2010 Professional
 
#10

Re: update eures eigenen Programms: vorgehensweise

  Alt 24. Apr 2007, 14:22
da muss ich Schubi zustimmen. Sicherlich ist eine Batch Datei "unprofessionell", aber äusserst wirksam und schnell. Ich werde diese Methode mal heute Nachmittag ins Auge fassen.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:46 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz