Ich möchte Prozent done, verstrichene Zeit und geschätzte Zeitwerte für den Installationsprozess zeigen. Gibt es eine Möglichkeit, Textbeschriftungen hinzuzufügen, die im folgenden Screenshot markiert sind?Wie zeigen Sie Prozent abgeschlossen, verstrichene Zeit und geschätzte Zeit Fortschritt?
10
A
Antwort
18
Es war nicht so einfach, diese Funktion zu implementieren, bevor die CurInstallProgressChanged
Ereignismethode in Inno Setup 5.5.4 eingeführt wurde. Aber jetzt, mit diesem Ereignis, können Sie ein Skript wie folgt schreiben:
Besonderer Dank an user1662035 für die vorgeschlagene Idee für die Behebung von Etiketten beim Rollback-Prozess zu verbergen.
[Setup]
AppName=My Program
AppVersion=1.5
DefaultDirName={pf}\My Program
[Files]
Source: "MyProg.exe"; DestDir: "{app}"
Source: "MyProg.chm"; DestDir: "{app}"
Source: "Readme.txt"; DestDir: "{app}"
[Code]
function GetTickCount: DWORD;
external '[email protected] stdcall';
var
StartTick: DWORD;
PercentLabel: TNewStaticText;
ElapsedLabel: TNewStaticText;
RemainingLabel: TNewStaticText;
function TicksToStr(Value: DWORD): string;
var
I: DWORD;
Hours, Minutes, Seconds: Integer;
begin
I := Value div 1000;
Seconds := I mod 60;
I := I div 60;
Minutes := I mod 60;
I := I div 60;
Hours := I mod 24;
Result := Format('%.2d:%.2d:%.2d', [Hours, Minutes, Seconds]);
end;
procedure InitializeWizard;
begin
PercentLabel := TNewStaticText.Create(WizardForm);
PercentLabel.Parent := WizardForm.ProgressGauge.Parent;
PercentLabel.Left := 0;
PercentLabel.Top := WizardForm.ProgressGauge.Top +
WizardForm.ProgressGauge.Height + 12;
ElapsedLabel := TNewStaticText.Create(WizardForm);
ElapsedLabel.Parent := WizardForm.ProgressGauge.Parent;
ElapsedLabel.Left := 0;
ElapsedLabel.Top := PercentLabel.Top + PercentLabel.Height + 4;
RemainingLabel := TNewStaticText.Create(WizardForm);
RemainingLabel.Parent := WizardForm.ProgressGauge.Parent;
RemainingLabel.Left := 0;
RemainingLabel.Top := ElapsedLabel.Top + ElapsedLabel.Height + 4;
end;
procedure CurPageChanged(CurPageID: Integer);
begin
if CurPageID = wpInstalling then
StartTick := GetTickCount;
end;
procedure CancelButtonClick(CurPageID: Integer; var Cancel, Confirm: Boolean);
begin
if CurPageID = wpInstalling then
begin
Cancel := False;
if ExitSetupMsgBox then
begin
Cancel := True;
Confirm := False;
PercentLabel.Visible := False;
ElapsedLabel.Visible := False;
RemainingLabel.Visible := False;
end;
end;
end;
procedure CurInstallProgressChanged(CurProgress, MaxProgress: Integer);
var
CurTick: DWORD;
begin
CurTick := GetTickCount;
PercentLabel.Caption :=
Format('Done: %.2f %%', [(CurProgress * 100.0)/MaxProgress]);
ElapsedLabel.Caption :=
Format('Elapsed: %s', [TicksToStr(CurTick - StartTick)]);
if CurProgress > 0 then
begin
RemainingLabel.Caption :=
Format('Remaining: %s', [TicksToStr(
((CurTick - StartTick)/CurProgress) * (MaxProgress - CurProgress))]);
end;
end;
Verwandte Themen
- 1. Berechne verstrichene Zeit
- 2. berechnete verstrichene Zeit Javascript
- 3. Auf Remand Ressourcen - Geschätzte Zeit (und wie man eine Warnung abhängig vom Download-Fortschritt zeigt)
- 4. Get verstrichene Zeit eines Videos
- 5. verstrichene Zeit in Qt Get
- 6. mclapply Benutzer Zeit größer als die verstrichene Zeit
- 7. Verstrichene Zeit mit nur 2 Ziffern
- 8. Geschätzte verbleibende Zeit, was fehlt mir?
- 9. Verstrichene Zeit zum Ausführen eines C-Programms
- 10. Wie kann die verstrichene Zeit zwischen Datetime-Feldern verglichen werden?
- 11. Zeit in AVPlayer verstrichene zeigt seltsame Zahlen in schnellen
- 12. Code ausführen x Prozent der Zeit
- 13. Zeit, bis verbleibende Ladung abgeschlossen ist, iOS
- 14. Datei herunterladen & Prozent abgeschlossen
- 15. Berechne die verstrichene Zeit zwischen zweimaligem Drücken der gleichen Taste
- 16. verstrichene Zeit des Videos mit Media Recorder in Android
- 17. finden die verstrichene Zeit zwischen zwei Daten in Oracle SQL
- 18. Add to waitbar ein Zähler für die verstrichene Zeit - Matlab
- 19. Polynomische Zeit und exponentielle Zeit
- 20. Wie zeigen Sie Millisekunden auf die Zeit auf Vb
- 21. So erhalten Sie Zeit und Datum von Datum-Zeit-Stempel
- 22. CPU-Zeit im Vergleich zur verstrichenen Zeit in T-SQL
- 23. Wie heute Rekord min (Zeit) und Vortages Rekord max (Zeit)
- 24. Wie wird die verstrichene Zeit angezeigt, während eine lange SQL-Abfrage ausgeführt wird?
- 25. jplayer Spiel zwischen bestimmten Prozent der Zeit in jquery
- 26. Zeit zu Zeit verschmelzen
- 27. überprüfen, um von Zeit zu Zeit, wenn alle Threads abgeschlossen haben zu sehen
- 28. Wie berechnet man vorhergesagte Burst-Zeit?
- 29. Wie d3 tickFormat von (Tag, Zeit) haben aber nur Zeit zeigen, wenn der Tag derselbe ist?
- 30. SharedElementTransition und ContentTransition verzögerte Zeit
Tolle Arbeit, TLama, danke! Ich denke, die einzige Lösung, um die Etiketten zu verbergen, wäre ein benutzerdefiniertes Nachrichtenfeld und die Stornierung manuell aufzurufen. Vielleicht macht das den Trick: [link] (http://pastebin.com/SJwjVGvs) Aber ich habe es nicht getestet. – user1662035
@ user1662035, ja, das war der unmittelbare Gedanke, den ich hatte. Aber ich werde versuchen, noch etwas genauer zu betrachten. Wie auch immer, du kannst die fertige ['ExitSetupMsgBox'] (http://www.jrsoftware.org/ishelp/index.php?topic=isxfunc_exitsetupmsgbox) Funktion verwenden, um den Exit-Bestätigungsdialog anzuzeigen. Ist diese Nachricht jedoch nicht anders als "* Möchten Sie das Setup beenden? *". Ich habe Inno Setup zu diesem Zeitpunkt noch nicht manuell überprüft ... – TLama
Ich habe diese Funktion total vergessen ... Ich habe beide Versionen getestet und beide zeigen den üblichen Exit-Dialog. Darf ich fragen, was Sie mit "genauer" meinen? – user1662035