Entwickler-Ecke

Programmierwerkzeuge - Vollbild im Wizard nach der Begrüßungsseite


Rhodium70 - So 03.07.22 00:46
Titel: Vollbild im Wizard nach der Begrüßungsseite
Hallo,

ich habe ein kleines Problem bei Inno Setup. Der Titel erwähnt es ja schon. Ich habe auch erfolgreich mein Setup erstellt und es funktionier auch (jedenfalls auf meinem PC). Den passenden Code dafür hab ich ja auch. Und dieser funktioniert auch soweit. Nun wollte ich das Programm auf meinem Laptop ausführen und dieser gibt mir ein Fehler aus. "WizardHintergrund.bmp" kann nicht angezeigt werden bzw. fehlt.


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
[Files]
Source: "WizardHintergrund.bmp"; DestDir: "{tmp}"; Flags: ignoreversion dontcopy

/// großes Bild als Wizard


var
  WelcomePageID: Integer;
  BitmapImage: TBitmapImage;

procedure InitializeWizard4;
var
  WelcomePage: TWizardPage;  
begin
  WelcomePage := CreateCustomPage(wpWelcome, '', '');
  WelcomePageID := WelcomePage.ID;
  BitmapImage := TBitmapImage.Create(WizardForm);
  BitmapImage.Bitmap.LoadFromFile('D:\Source\WizardHintergrund.bmp');
  BitmapImage.Top := 0;
  BitmapImage.Left := 0;
  BitmapImage.AutoSize := True;
  BitmapImage.Cursor := crHand;
  BitmapImage.Visible := False;
  BitmapImage.Parent := WizardForm.InnerPage;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
  BitmapImage.Visible := CurPageID = WelcomePageID;
  WizardForm.Bevel1.Visible := CurPageID <> WelcomePageID;
  WizardForm.MainPanel.Visible := CurPageID <> WelcomePageID;
  WizardForm.InnerNotebook.Visible := CurPageID <> WelcomePageID;
end;


Begrüßungsseite

user defined image [https://bilderupload.org/bild/f84102335-zwischenablage01]

2. Seite mit Vollbild

user defined image [https://bilderupload.org/bild/f8ab02128-zwischenablage02]

3. Seite und so weiter

user defined image [https://bilderupload.org/bild/fa1802529-zwischenablage03]

So sieht es, soll es aussehen. Funktioniert aber nur wenn das Hintergrundbild auf dem PC oder Laptop bereits in dem entsprechenden Verzeichnis liegt. Das sollte es aber nicht. Es soll in dem TMP Verzeichnis {tmp} liegen was Inno Setup bei der Installation anlegt. Jetzt meine Frage. Wie muss ich den Code in Zeile 18 anpassen?

Für Eure Hilfe wäre ich echt sehr dankbar. Ich suche schon seit Monaten im Netz nach einer Lösung und finde nur ähnliche Codes mit fester Verzeichnisangabe.

Moderiert von user profile iconNarses: Beitragsformatierung überarbeitet: Hightlight-Tag eingefügt.
Moderiert von user profile iconNarses: Topic aus Alle Sprachen - Alle Plattformen verschoben am So 03.07.2022 um 01:56


Narses - So 03.07.22 01:54

Moin und :welcome: in der EE!

Du suchst schon Monate nach einer Lösung und hast das hier [https://stackoverflow.com/questions/37552286/inno-setup-reading-a-file-from-installer-during-uninstallation] übersehen? :zwinker: 1min googlen... ;)

cu Narses


Rhodium70 - So 03.07.22 02:10

Moin Narses,

nein hab ich nicht übersehen. Dort habe ich das selbe Problem geschildert. Nur kann ich kein Englisch und die Leute haben mich nicht wirklich verstanden. Ich hab über 4.000 Einträge da angesehen, mit Google übersetzen lassen, was Inno Setup angeht. Und der Code soll für eine De-Installation sein. Und das andere Problem ist, das die Grafik dann nicht komplett von der Kopf bis zur Fußzeile und von links nach rechts angezeigt wird. Aber danke für die erste Info. :)


Narses - So 03.07.22 02:17

Moin!

OK, du kannst kein Englisch, da wäre ich so ohne weiteres nicht drauf gekommen. Dann dürfte Programmieren in Pascal aber eine ziemliche Herausforderung für dich sein... :shock:

Dann wollen wir dir mal auf die Sprünge helfen. Die erste Antwort/Lösung im referenzierten SO-Thread lautet:
Zitat:
If you need to use some file during uninstallation, you have to install it in the installer and then use the installed copy in the uninstaller.

liefert in Goole Translate:
Zitat:
Wenn Sie während der Deinstallation eine Datei verwenden müssen, müssen Sie sie im Installationsprogramm installieren und dann die installierte Kopie im Deinstallationsprogramm verwenden.

und wird mit diesem Code-Beispiel demonstriert:

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
[Files]
Source: "WizardSmallImageFile.bmp"; DestDir: "{app}";

[Code]

function InitializeUninstall(): Boolean;
begin
  ...
  BitmapImage := TBitmapImage.Create(...);
  ...
  BitmapImage.Bitmap.LoadFromFile(
    ExpandConstant('{app}\WizardSmallImageFile.bmp'));
  ...
end;

Ich hab´s nicht ausprobiert, aber ich würde das als die Lösung einstufen. :nixweiss:

cu
Narses


Rhodium70 - So 03.07.22 03:15

Moin noch mal ...

Ich hab dank deiner Hilfe die Lösung endlich gefunden. Wahnsinn. Jetzt läuft mein Setup endlic so wie es soll.

Mit transparrenten Splash, Musik im Hintergrund und dem Vollbild im Wizard. Auch auf meinem Laptop ohne Fehler.

Hier noch mal der geänderte Code, falls mal jemand Interesse hat.


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
 /// großes Bild als Wizard

[Files]
Source: "WizardHintergrund.bmp"; DestDir: "{tmp}"; Flags: ignoreversion dontcopy


var
  WelcomePageID: Integer;
  BitmapImage: TBitmapImage;

procedure InitializeWizard4;
var
  WelcomePage: TWizardPage;  
begin
  WelcomePage := CreateCustomPage(wpWelcome, '', '');
  WelcomePageID := WelcomePage.ID;
  BitmapImage := TBitmapImage.Create(WizardForm);
  ExtractTemporaryFile('WizardHintergrund.bmp');
  BitmapImage.Bitmap.LoadFromFile(ExpandConstant('{tmp}\WizardHintergrund.bmp'));
  BitmapImage.Top := 0;
  BitmapImage.Left := 0;
  BitmapImage.AutoSize := True;
  BitmapImage.Cursor := crHand;
  BitmapImage.Visible := False;
  BitmapImage.Parent := WizardForm.InnerPage;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
  BitmapImage.Visible := CurPageID = WelcomePageID;
  WizardForm.Bevel1.Visible := CurPageID <> WelcomePageID;
  WizardForm.MainPanel.Visible := CurPageID <> WelcomePageID;
  WizardForm.InnerNotebook.Visible := CurPageID <> WelcomePageID;
end;


Die jetzige Zeile 18 hat gefehlt. Und Zeile 19 verweist jetzt auf den TMP Ordner. Danke noch mal, dein Hinweis hat mich in die richtige Richtung verwiesen.