FS Updater 1.4

Anwendungen, Tools, Userlibs und anderes nützliches.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Forge hat geschrieben: Ja, dachte ich anfangs auch, aber welches gadget soll ich dafür opfern? :mrgreen:
Gar keins, die 3 in der Mitte weiter zusammen, links und rechts 2 cm weg,
oben und unten 4 cm weg, und schon ist alles gut, ich kann beim updaten
weiter fernsehen, chatten und proggen (alles gleichzeitig, bin ich so gewohnt :mrgreen: =
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
X0r
Beiträge: 2770
Registriert: 15.03.2007 21:47
Kontaktdaten:

Beitrag von X0r »

Dann muss ich den Updater wohl noch für Multitasking-fähige Menschen optimieren. :mrgreen:
KingKong
Beiträge: 10
Registriert: 18.09.2004 17:32

Beitrag von KingKong »

Hallo Forge,
dein Updater gefällt mir sehr gut. :D
Leider habe ich ein Projekt, wo mit dem Update auch neue Datenfiles hinzukommen können (da hast du für den Uninstaller ev. ein zusätzliches DLL angekündigt) aber was noch wichtiger ist:
Es müssen manchmal auch div. Datenfiles gelöscht werden !
Hier sollte der Updater auch die Möglichkeit bieten, Files und ev. zur Abrundung auch ganze Verzeichnisse zu löschen.
Aber erst einmal für einfache Projekte schon sehr hilfreich. :allright:

Gruß
KingKong
Benutzeravatar
X0r
Beiträge: 2770
Registriert: 15.03.2007 21:47
Kontaktdaten:

Beitrag von X0r »

Ok, diese Funktionen werden in der nächsten Version verfügbar sein.

Edit:


Bevor ich das heute einbaue, hätte ich noch eine Frage an dich. Wie wäre es für dich am einfachsten? Etwa eine extra Datei, die der Updater dann parst und jenachdem Dateien löscht, Verzeichnisse löscht etc.?
Z.B so:

Code: Alles auswählen

#DF           //Delete file
Help.chm  
#DD          // Delete dir
Temp
#CD         // Create dir

Benutzeravatar
X0r
Beiträge: 2770
Registriert: 15.03.2007 21:47
Kontaktdaten:

Beitrag von X0r »

FSU 1.2 Update
Nun kann man mit FSU nicht nur Dateien runterladen, sondern auch Dateien löschen, Ordner erstellen und Ordner löschen.

Dies tut FSU über die UpdateFileList.

Beispiel:

Code: Alles auswählen

//UP
ifsetupde.exe

wcst.exe
Datas\
wcst.exe
%Windir%
//End

//UP
ifsetupde.exe
Datas/
//End

//DD
Rofl
//End

//CD
Temp
//End

Zwischen
//UP
und
//End
werden die Dateien runtergeladen. Die 1. Zeile ist immer der Name der Datei im Updateordner, die 2. immer der Ordner, in den die Datei runtergeladen werden soll.

Zwischen
//DD
und
//End
werden die Ordner gelöscht.

Zwischen
//CD
und
//End
werden die Ordner erstellt.

Zwischen
//DF
und
//End
werden die Dateien gelöscht.


Folgende Parameter können bei allen Methoden angegeben werden:
%Sysdir% (System32-Ordner)
%Windir% (Windows-Ordner)
%Tempdir% (Temp-Ordner)


Download: http://www.forgesoft.net/Products/FSU/FSU.zip
Benutzeravatar
X0r
Beiträge: 2770
Registriert: 15.03.2007 21:47
Kontaktdaten:

Beitrag von X0r »

FSU 1.3 Update
Nun kann man den FSU eine DLL-Funktion aufrufen lassen.

Code: Alles auswählen

[Update]
Product = Product
Version = 1.0
ProductVersion_File = http://www.forgesoft.net/Products/Test/currentversion.ini
UpdateFileList = http://www.forgesoft.net/Products/Test/update_files.ini
UpdateDir = http://www.forgesoft.net/Products/Test/Updates/
ProgramFile = ifsetupde.exe
Language = English
DLL = 
Bei "DLL = " muss der Name der DLL angegeben werden.

FSU ruft die Funktion "Update" auf. Sie muss folgende 8 Parameter unterstützen:
1. Parameter : Name des Produkts
2. Parameter : Aktuelle Version des Produkts(bzw. alte Version)
3. Parameter : Neue Version des Produkts
4. Parameter : URL der Versiondatei
5. Parameter : URL der UpdateFileList
6. Parameter : URL des Updateordners
7. Parameter : Datei, die nach dem Update gestartet werden soll.
8. Parameter : Sprache, die während des Updates benutzt wird.

Beispiel einer solchen DLL in PureBasic:

Code: Alles auswählen

ProcedureDLL Update(Product.s,OldVersion.s,NewVersion.s,VersionFile.s,FileList.s,UpdateDir.s,Program.s,Language.s)

//Dies und das machen

  If Language="German"
    MessageRequester(Product+" Update",Product+" wurde erfolgreich aktualisiert! ")
  Else
    MessageRequester(Product+" Update",Product+" was updated successfully! ")
  EndIf

EndProcedure
Download: http://www.forgesoft.net/Products/FSU/FSU.zip

So, alle Wünsche wurden erfüllt. :)
Was wünschen sich die FSU-User noch?
KingKong
Beiträge: 10
Registriert: 18.09.2004 17:32

Beitrag von KingKong »

Super :allright:
Das ging ja schnell.
Ist ja schon mal alles drin, was ich für meine Projekte momentan bräuchte.

Meinst du aber nicht, daß es besser gewesen wäre, statt den 2 Zeilen
für Filenamen und Verzeichnis dies (wie in meiner privaten PN gezeigt) in einer Zeile unterzubringen.
Dein Parser müßte dann die Zeile nur nach den gültigen Konventionen auflösen
Partition\Verzeichnis..Unterverzeichnis\File.
Wäre dann auch besser zu Bearbeiten und lesbar.
Auch wäre es sicherlich sinnvoller gewesen, die Kenner wie in deinem ersten Vorschlag bei #DD zu belassen anstatt //DD zu nehmen.
Mit "//" hätte man Hinweistexte signalisieren können.
Auch hätte man jedesmal das //End sparen können, denn ein nächster Kenner z.B. #CD zeigt ja, daß eine andere Funktion eingeleitet wird.

Ist nur meine Meinung, eventuell melden sich auch andere Nutzer die das anders sehen oder noch bessere Vorschläge machen können.

Gruß
KingKong
Benutzeravatar
X0r
Beiträge: 2770
Registriert: 15.03.2007 21:47
Kontaktdaten:

Beitrag von X0r »

Ich wollte eigentlich auch # nehmen. Auch wollte ich es ohne "..End" machen, jedoch gibt es dann eventuell ein Problem beim Download von Dateien. Eine Dateie könnte auch mit # beginnen und dann würde der parser denken, dass es hier schon zu ende ist. Und // kann man in Dateinamen nicht benutzen.
Hast du vielleicht ne Idee, wie mans doch mit # geschickt hinbekommt?
//XY & //End nerven mich auch.
Dein Parser müßte dann die Zeile nur nach den gültigen Konventionen auflösen
Partition\Verzeichnis..Unterverzeichnis\File.
Wollte ich auch erst so machen, aber wäre es dann nicht eventuell für den einen oder anderen unlogisch? Ich meine, würde man nicht denken "Woher will der Updater denn wissen, welche Datei er runterladen soll".
KingKong
Beiträge: 10
Registriert: 18.09.2004 17:32

Beitrag von KingKong »

X0r hat geschrieben:Ich wollte eigentlich auch # nehmen. Auch wollte ich es ohne "..End" machen, jedoch gibt es dann eventuell ein Problem beim Download von Dateien. Eine Dateie könnte auch mit # beginnen und dann würde der parser denken, dass es hier schon zu ende ist. Und // kann man in Dateinamen nicht benutzen.
Werde aber mal sehen, was sich da tun lässt. Eventuell finde ich ja doch eine Lösung.
Dein Parser müßte dann die Zeile nur nach den gültigen Konventionen auflösen
Partition\Verzeichnis..Unterverzeichnis\File.
Wollte ich auch erst so machen, aber wäre es dann nicht eventuell für den einen oder anderen unlogisch? Ich meine, würde man nicht denken "Woher will der Updater denn wissen, welche Datei er runterladen soll".
1.)
Man kann ja die Kenner noch erweitern
z.B. "#DD//" oder "#DD//FSU#", damit kann dein Parser auch zwischen
Anweisung und Hinweistexte unterscheiden.
Du darfst natürlich mit dem Parser nicht nur nach # suchen, sondern nach dem ganzen Kenner der auch alleinig in der Zeile stehen muß.
2.)
Nun, man beschreibt dem Anwender daß alle angegeben Files sich in einem Verzeichnis auf seinem Server befinden muß und daß die Pfadangaben sich immer auf das Zielverzeichnis beziehen.
Natürlich gehört dann auch mal eine erweiterte Beschreibung dazu
worin man die Wirkungsweise der diversen Angaben erfährt.
Ähnlich, wie ich es in der privaten PN an dich aufgelistet hatte.

Gruß
KingKong
Benutzeravatar
X0r
Beiträge: 2770
Registriert: 15.03.2007 21:47
Kontaktdaten:

Beitrag von X0r »

>Du darfst natürlich mit dem Parser nicht nur nach # suchen, sondern nach dem ganzen Kenner der auch alleinig in der Zeile stehen muß.

Stimmt schon, aber...
...ich zeig dir einfach den Code:

Code: Alles auswählen

;...

While Not Eof(0)
  line.s=ReadString(0)

  If Left(line,4)="//UP"
    
    Repeat
      line=ReadString(0)
      ;...
      
    Until Left(line,5)="//End" Or Eof(0)

  EndIf
  
Wend

;...
Dann müsste ich bei Until Left(line,5)="//End" immer die ganzen anderen Befehle dazuschreiben. Bin etwas faul, werds aber trotzdem so machen. :mrgreen:
Zuletzt geändert von X0r am 19.10.2009 00:08, insgesamt 1-mal geändert.
Antworten