AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte TMSWebUpdate - eine neue WebUpdate-Komponente
Thema durchsuchen
Ansicht
Themen-Optionen

TMSWebUpdate - eine neue WebUpdate-Komponente

Ein Thema von Marco Steinebach · begonnen am 27. Feb 2008 · letzter Beitrag vom 11. Aug 2013
Antwort Antwort
Seite 12 von 16   « Erste     2101112 1314     Letzte »    
Marco Steinebach
Registriert seit: 4. Aug 2006
Hallo Listers,
vor gut einer Woche hatte ich entgültig die Nase voll. Ich suchte eine Komponente für ein automatisches WebUpdate, Internet-Update, ganz wie ihr wollt.
Entweder es gab lauter teures Zeug, oder Freeware, die zwar gut, aber meist recht wenig anpassbar war, dann noch ein paar Schnipsel hier, ein Textchen da, ein Code-Teilchen wo anders....
Also gut, selber schreiben...
Und hier ist das Ergebnis.

TMSWebUpdate ist ganz sicher nicht neu, aber
- Freeware mit Source
- Einfach zu integrieren
- Anpassbar, also keine Formulare die schon mit dabei sind
- Flexibel, was die Anzahl der runterzuladenden Dateien angeht
- Flexibel beim format der Steuerdatei auf dem Server.
- Nicht erst ab Delphi 2006 enterprise lauffähig.
- Auf Indy basierend, also geht ab Delphi 5.


Webupdate schaut auf einem Server in einer Infodatei nach, ob eine neuere Version, als die aktuelle, vorhanden ist. Falls ja, können eine, oder mehrere Dateien, heruntergeladen, und ggf. eine davon als Update ausgeführt werden.

Dazu einfach die Komponente auf die form.
Die zwei eigenschaften
UpdateURL und IniName müssen natürlich ausgefüllt werden.
UpdateUrl ist die Adresse zur ini-datei also z.B.
www.meine-seite.de/Software
(http und / am ende werden automatisch ergänzt)
IniName ist der Name der Datei, in der die Infos über ein evtl. Update stehen, also beispielsweise
MeinProg_Update.html

Und MeinProg_Update.html könnte dann ungefähr so aussehen:
[Version]
Major=1
Minor=0
Release=0
Build=99

[File001]
Name=MeinProg_Update.exe
Start=1

[File002]
name=EinSound.wav
Path=sounds

[New]
Ein Fehler beim entgültigen löschen von Dateien wurde beseitigt.

Mehrere kleine Sachen sind jetzt leider kaput. Ich bin noch dran!
...

Alles was nach dem Schlüsselwort
[New]
steht, wird gnadenlos als WhatsNew angezeigt, dann zu finden in der WhatsNewListe der Komponente.

Ach ja, die Anweisung zur Prüfung heißt
CheckForUpdates.
Das war’s schon, und 6 Ereignisse
OnUpdatefound
OnNoUpdateFound
OnDownloadProgress
OnDownloadComplete
OnNextFile und
OnError
Gibt’s natürlich auch noch.

So. und nun wünsche ich viel spaß beim ausprobieren, testen, einsetzen, was auch immer. Ich würde mich über verbesserungsvorschläge, wünsche, anregungen, kritik, besonders über Lob, natürlich sehr freuen. Wenn bedarf ist, können wir auch gerne ein Projekt daraus machen.

Viele Grüße
Marco
Angehängte Dateien
Dateityp: zip tmswebupdate_v1.10.1_174.zip (24,9 KB, 799x aufgerufen)
 
thestallion90

 
Delphi XE Starter
 
#111
  Alt 11. Mai 2011, 12:43
Hey Marco,

wenn ich die Komponente installieren will kommt folgender Fehler (den Int64 und den Indy10 Fehler habe ich beheben können, bei dem hier weiß ich nicht weiter) :

[DCC Fehler] MaryTools.pas(166): E2251 Doppeldeutiger überladener Aufruf von 'StrPas'

Der Fehler bezieht sich auf folgenden Code:

Delphi-Quellcode:
 function GetInfo(const aKey: string): string;
  begin
    Result := '';
    VerKey := Format('\StringFileInfo\%.4x%.4x\%s',
      [LoWord(Integer(VerBufValue^)), HiWord(Integer(VerBufValue^)), aKey]);
    if VerQueryValue(VerBuf, PChar(VerKey), VerBufValue, VerBufLen) then
      Result := StrPas(VerBufValue); //<---Fehler
  end;
Hast Du eine Idee, was ich da machen kann?

Habe Delphi XE, kann es daran liegen?

lg, Marco
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

 
Delphi 12 Athens
 
#112
  Alt 11. Mai 2011, 13:02
Delphi-Quellcode:
var
  VerBufValue: Pointer;
Es gibt zwei Version von StrPas ... einmal ANSI (PAnsiChar) und Unicode (PWideChar)
da VerBufValue aber nur als Pointer deklariert ist, kann Delphi nicht mehr entscheiden was genommen werden soll.

Lösung:
Deklariere VerBufValue als PChar.



Dank einer automatischen Typkonvertierung könnte man Delphi-Referenz durchsuchenStrPas auch weglassen.
Delphi-Quellcode:
var
  VerBufValue: PChar;

...

function GetInfo(const aKey: string): string;
begin
  VerKey := Format('\StringFileInfo\%.4x%.4x\%s',
    [LoWord(PInteger(VerBufValue)^), HiWord(PInteger(VerBufValue)^), aKey]);
  if VerQueryValue(VerBuf, PChar(VerKey), VerBufValue, VerBufLen) then
    Result := VerBufValue
  else
    Result := '';
end;
PS:
Zitat von OH:
StrPas ist nur aus Gründen der Abwärtskompatibilität vorhanden.

Geändert von himitsu (11. Mai 2011 um 13:05 Uhr)
  Mit Zitat antworten Zitat
thestallion90

 
Delphi XE Starter
 
#113
  Alt 11. Mai 2011, 13:14
Hey himitsu,

wow, nicht schlechte Reaktionszeit für einen aufgewärmten Thread

Allein VerBufValue anders zu deklarieren hat nicht funktionert, da Delphi die Variable an anderer Stelle im Code nichtmehr geschmeckt hat. Habe es jetzt so gelöst:

Delphi-Quellcode:
 function GetInfo(const aKey: string): string;
  var PCharVerBufValue : PChar; //<--- neue Variable als PChar
  begin
    Result := '';
    VerKey := Format('\StringFileInfo\%.4x%.4x\%s',
      [LoWord(Integer(VerBufValue^)), HiWord(Integer(VerBufValue^)), aKey]);
    if VerQueryValue(VerBuf, PChar(VerKey), VerBufValue, VerBufLen) then
      PCharVerBufValue := VerBufValue; //<---Wert wird aus VerBufValue in PChar "umformatiert"
      Result := SysUtils.StrPas(PCharVerBufValue); //<-- Delphi schluckt
  end;
  Mit Zitat antworten Zitat
thestallion90

 
Delphi XE Starter
 
#114
  Alt 11. Mai 2011, 13:21
Also verstehe ich es richtig, dass

- StrPas nur aus einem PChar einen PAnsiChar macht
- und man das aber mittlerweile nichtmehr braucht weil Delphi das automatisch übernimmt wenn man einem PAnsiChar ein PChar zuweist?
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

 
Delphi 12 Athens
 
#115
  Alt 11. Mai 2011, 13:22
Delphi-Referenz durchsuchenSysUtils.StrPas

[edit] IIRC hat man das unter Delphi 1 noch gebraucht, ab Delphi 2 nicht mehr. [/edit]
Detlef
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

 
Delphi 12 Athens
 
#116
  Alt 11. Mai 2011, 13:27
StrPas macht aus einem PAnsiChar einen AnsiString
und seit Delphi 2009 wird auch noch aus einem PWideChar ein UnicodeString gemacht.

Als es die Unicodeversion noch nicht gab, konnte man auch einen untypisierten Zeiger (Pointer) verwenden, welcher dann als PAnsiChar angesehn wurde,
da es nur eine Variante von StrPas, mit einem Zeigertypen gab (die mit PAnsiChar/PChar).
  Mit Zitat antworten Zitat
thestallion90

 
Delphi XE Starter
 
#117
  Alt 12. Mai 2011, 18:17
mal noch ne andere Sache:

Ich hab die Update Komponente jetzt eingebunden und in dem Projekt ne neue Form angelegt. Heute morgen war meine exe noch schlanke 2,x MB groß, jetzt sind es fast 10 MB
Dadurch dauert natürlich jedes Update 1000 mal länger *übertreib*

Mal ehrlich, die units und die Komponente wiegen fast gar nichts, das sind ein paar kB. Auf der Form ist auch nix drauf außer n Memo und ne ProgressBar. Wo kommen denn von jetzt auf gleich die MBs her? Hab auch in den Projekt-Optionen nichts verändert von wegen Debug-Infos und so (die Suche stieß mich immer wieder auf dicke Debug-Infos in der EXE). Kommt das daher, dass in dem Programm jetzt die Indy-komponente integriert ist? Die hatte ich vor dem MSWebUpdate ja noch nicht? Was kann man da machen?
  Mit Zitat antworten Zitat
shmia

 
Delphi 5 Professional
 
#118
  Alt 12. Mai 2011, 18:26
Kommt das daher, dass in dem Programm jetzt die Indy-komponente integriert ist?
Ja, Indy vergrössert dein Programm relativ stark.
Hätte man auf das gehört, was ich auf Seite 6 im Beitrag #54 geschrieben habe, dann wäre es jetzt kein Problem Indy durch etwas Schlankeres zu ersetzen.
Andreas
  Mit Zitat antworten Zitat
thestallion90

 
Delphi XE Starter
 
#119
  Alt 12. Mai 2011, 18:46
Ja, Indy vergrössert dein Programm relativ stark.
Hätte man auf das gehört, was ich auf Seite 6 im Beitrag #54 geschrieben habe, dann wäre es jetzt kein Problem Indy durch etwas Schlankeres zu ersetzen.
hngrrr, schadee naja, dann muss ich halt in den saueren Apfel beißen...
  Mit Zitat antworten Zitat
generic

 
Delphi XE5 Professional
 
#120
  Alt 12. Mai 2011, 20:48
Ich hab euch mal meinen Vortrag von den letzten Delphi-Tagen angehängt.
  • nutzt keine Komponenten von dritten
  • nutzt keine Indys
  • nutzt OS integrierte Funktionen wie msxml / bits

Wenn ihr nochmal nach lesen wollt, im Entwickler Mag. 04/10 ist der passende Artikel.
Angehängte Dateien
Dateityp: 7z OnlineUpdates - delphitage 2010.7z (391,6 KB, 69x aufgerufen)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 12 von 16   « Erste     2101112 1314     Letzte »    


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 08:28 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