Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Fortschritt bei Setuproutinen - Wie wird dieser errechnet? (https://www.delphipraxis.net/73004-fortschritt-bei-setuproutinen-wie-wird-dieser-errechnet.html)

noHuman 10. Jul 2006 19:48


Fortschritt bei Setuproutinen - Wie wird dieser errechnet?
 
Hi!

Nach längerer Suche und testen von Inno Setup und NSIS möchte ich nun meinen eigenen Setup schreiben.

Das ist auch ken großes Problem, bis auf die ProgressBar die den Fortschritt anzeigt.
Ich habe mir schon die Sourcen von Inno Setup angeschaut, konnte aber weit und breit nichts
finden, was den Fortschritt berechnet.

Deswegen frage ich euch mal, ob ihr das wisst oder Ideen dazu habt.
(Und an Code mit lauter sleep() oder delay()'s denke ich erst garnicht :shock:)

Danke im Voraus!

MfG, noHuman

DGL-luke 10. Jul 2006 19:53

Re: Fortschritt bei Setuproutinen - Wie wird dieser errechne
 
Nuja, ich nehm mal an, da wird erst mal ein grober überschlag genommen, wie viel MB insgesamt zu kopieren sind. Progressbar.Maximum := MB_gesamt * 1024; , und dann eben immer nachm kopieren einer datei die progressbar akutalisieren.

noHuman 10. Jul 2006 20:11

Re: Fortschritt bei Setuproutinen - Wie wird dieser errechne
 
Hi!

Danke für deine Antwort!

Nuja, ich habe eine Menge an Dateien die insgesamt 1,2 MB groß sind.
Dazu noch 30 Registryeinträge...

Also Inno schafft das dann trotzdem irgendwie aufzuteilen...

DGL-luke 10. Jul 2006 20:18

Re: Fortschritt bei Setuproutinen - Wie wird dieser errechne
 
evtl. werden reigstry-einträge einfach pauschal als z.B. 1 kB genommen... is ja nicht so der große batzen.

Nicolai1234 10. Jul 2006 20:34

Re: Fortschritt bei Setuproutinen - Wie wird dieser errechne
 
Zitat:

Zitat von DGL-luke
evtl. werden reigstry-einträge einfach pauschal als z.B. 1 kB genommen... is ja nicht so der große batzen.

Ich denke auch, dass da ein großer Teil nur au "Erfahrung" beruht... Teste also ein bisschen, welche Aktionen wie lange dauern.

Meflin 11. Jul 2006 15:25

Re: Fortschritt bei Setuproutinen - Wie wird dieser errechne
 
Ziemlich viele dieser Fortschrittsanzeigen sind sowieso für den Popo :roll: wie oft ist es mir schon passiert, dass ein Setup minutenlang bei einem x-beliebigen Wert hängt, um den Rest dann im Bruchteil einer Sekunde zu durchlaufen. Insofern kann es wohl nicht wirklich berechnet werden...


Namenloser 11. Jul 2006 15:34

Re: Fortschritt bei Setuproutinen - Wie wird dieser errechne
 
[OFFTPOIC]
Ähnliche Erfahrungen hatte ich auch schon (insbesondere bei Flash-Objekten)^^

als ich noch kein dsl hatte, ging der Fortschrittsbalken zuerst kontinuierlich nach oben, auch ziemlich schnell.

Und, ganz logisch, bei 99% hat es dann 10 minuten gedauert :stupid:

[/OffTopic]

himitsu 11. Jul 2006 15:50

Re: Fortschritt bei Setuproutinen - Wie wird dieser errechne
 
Also bei den Dateien würde ich nicht nur die Dateigröße nehmen ... das Anlegen des Verzeichniseintrags, die Clustergröße und noch anderes kommt och noch mit dazu ... merkt man vorallem auf langsamen Datenträgern (z.B. Diskette, USB 1.0-Speicherstifte), da sind 1000 1 Byte-Dateien nicht so schnell kopiert, wie eine 1 KB-Datei ^^

Also ich würde da z.B. in Clustern Rechnen ... erstmal is die Zahl dann kleiner, man kann also auch bei mehr als 2 GB den Wert noch direkt an die Progressbar übergeben (die meisten Komponenten kennen ja nur einen Integer und der is nich so groß).

Also etwa für jede Datei:
(Dateigröße - 1) div (ClustersPerSector * BytesPerSector) + 3

Dateigröße:
(Dateigröße - 1) div (ClustersPerSector * BytesPerSector) + 1
Verzeichiseintrag (lesen, verändern und neu schreiben):
nochmal 2 Schritte

für's Anlegen von Verzeichnissen auch jeweils 2 Schritte

für andere Dinge könnte man dann z.B. für 100 Registryeinträge jeweils nocheinen Schritt zurechnen und so weiter ...



Ganz genan wirst du es nie hinbekommen ... weil du ja sonst jedesmal vom nInstallieren 'nen Testlauf fahren müßtest, dann anhand der Werte den Fortschritt berechnen,

Und/oder wärend des Installierens diese Werte dann nochmal anpassen.


Aber sobald der Use dann mal die Maus bewegt, wird sich bestimmt wieder irgendwo 'ne keinigkeit verändern, so daß es wieder nicht stimmt.

Also kannst due (wie es schon gesagt wurde) nur mit Erfahrungswerten rechnen

Windows XP geht z.B. von einer Installationsdauer von 60 minuten aus ... ja klar, als Win XP rauskam waren die Rechner noch langsamer und jetzt is der schon nach 'ner 1/4 Stunde fertig

markusl 11. Jul 2006 15:53

Re: Fortschritt bei Setuproutinen - Wie wird dieser errechne
 
Inno Setup weiss beim Packaging der Daten ja, wie gross die Datenmenge, die Anzahl der Dateien usw. ist.
Daher kann es zumindest während der Kopierphase recht genau darstellen, wie weit das Setup fortgeschritten ist.
Alle weiteren Aktionen, die bei Inno Setup z.B. im [Run]-Block durchgeführt werden, führen nicht automatisch
zu einem Updaten des Fortschritt-Balkens. Da kommt man ohne eigenes Setzen des Progressbar oder Custom-Pages nicht weiter.

HTH

Markus

noHuman 12. Jul 2006 07:49

Re: Fortschritt bei Setuproutinen - Wie wird dieser errechne
 
Hi!

Danke für eure Antworten :thumb:

Ich werde mir das hier heute Abend ansehen...

MfG, noHuman


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:37 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