![]() |
Inno Setup Script gesucht
Hallo zusammen,
sorry, mir ist kein besserer Titel eingefallen. Ich möchte ein Setup basteln, bei dem der User beim Start entscheiden kann, ob die EXE temporär (aus dem Tempverzeichnis) gestartet oder ins Programme-Verzeichnis installiert werden soll. Irgendwie funktioniert das aber alles nicht. Bin testhalber dazu übergegangen, ein weiteres Setup ("Installation") sowie die EXE selbst ("Temporär") als Files aufzunehmen und je nach Option zu starten. Das kanns aber auch nicht sein und ich finde leider keine Beispielcodes, wo genau das gemacht wird. Vielleicht ist mein Weg auch der einzig sinnvolle? Erscheint mir aber nicht so :) Hat da ev jemand einen Beispielsource für mich, den ich übernehmen oder aus dem ich zumindest Ideen klauen kann? Das würde mir echt helfen. |
AW: Inno Setup Script gesucht
Hast du schon auf der InnoSetup Webseite geschaut (falls hier keine Ideen kommen)?
Dort gibt's auch irgendso ein Google Forum oder so zu Inno Setup. Evtl. mal dort fragen, falls hier nix kommt. |
AW: Inno Setup Script gesucht
Da es im Temp-Ordner nicht wirklich installiert wird (ein Uninstall-Eintrag in der Systemsteuerung ist unnötig),
wirst du hier wohl selbst kopieren und starten müssen und dann das setup selbst abbrechen (vielleicht gibt es dafür schon fertige Beispielcodes) .... denk ich mal? |
AW: Inno Setup Script gesucht
Du könntest das DestDir für die exe variabel machen:
Etwas in der Art:
Code:
Dann brauchst du natürlich noch eine vorgeschaltete Seite, auf der der User die Auswahl treffen kann. Entsprechend muss dort die Variable InstallTemp gesetzt werden.
[Files]
Source: "MyProgram.exe"; DestDir: "{code:GetDestDir}"; [Run] Filename: {code:GetDestDir}\MyProgram.exe; Description: MyProgram starten; Flags: nowait postinstall skipifsilent; [Code ] function GetDestDir:String; begin if InstallTemp then result:=ExpandConstant('{tmp}') else result:=ExpandConstant('{app}'); end; |
AW: Inno Setup Script gesucht
Zitat:
|
AW: Inno Setup Script gesucht
Wie sieht dein Quelltext aktuell aus?
|
AW: Inno Setup Script gesucht
Quick and Dirty, aber für den Moment besser als nix.
Wenn "temporär" angeklickt ist, überspringe ich einfach alles bis zur "Fertig für die Installation" Seite. Dort entpacke ich die EXE ins Temp Verzeichnis, starte sie und breche das Setup dann ab.
Code:
var
UsagePage: TInputOptionWizardPage; const Url = 'https://www.google.de'; Url_Caption = 'Google'; procedure UrlLabelClick(Sender: TObject); var errorCode : integer; myURL: String; begin myURL := Url; ShellExec('open',myURL,'','',SW_SHOWNORMAL,ewNoWait,errorCode); end; procedure InitializeWizard; var UrlLabel :TNewStaticText; CancelBtn :TButton; begin CancelBtn := WizardForm.CancelButton; UrlLabel := TNewStaticText.Create(WizardForm); UrlLabel.Top := CancelBtn.Top + (CancelBtn.Height div 2) -(UrlLabel.Height div 2); UrlLabel.Left := WizardForm.ClientWidth - CancelBtn.Left -CancelBtn.Width; UrlLabel.Font.Style := UrlLabel.Font.Style + [fsUnderline]; UrlLabel.Cursor := crHand; UrlLabel.Font.Color := clHighlight; UrlLabel.OnClick := @UrlLabelClick; UrlLabel.Parent := WizardForm; UrlLabel.Anchors := [akLeft, akBottom]; UrlLabel.Caption := ExpandConstant(Url_Caption); UsagePage := CreateInputOptionPage(wpInfoBefore,CustomMessage('ProgMode_What1'), '',CustomMessage('ProgMode_SelectTxt'),True, False); UsagePage.Add(CustomMessage('ProgMode_Txt_Install')); UsagePage.Add(CustomMessage('ProgMode_Txt_TempRun')); UsagePage.SelectedValueIndex := 0; end; function NextButtonClick(CurPageID: Integer): Boolean; var ResultCode: Integer; begin Result := true; if (CurPageID=wpReady) and (UsagePage.SelectedValueIndex=1) then begin ExtractTemporaryFile('myapp.exe'); ExecAsOriginalUser(ExpandConstant('{tmp}\myapp.exe'), '-temp', '',SW_SHOWNORMAL, ewNoWait, ResultCode); WizardForm.Close; Result := false; end; end; procedure CancelButtonClick(CurPageID: Integer; var Cancel, Confirm: Boolean); begin Confirm := (UsagePage.SelectedValueIndex=0); end; function UpdateReadyMemo(Space, NewLine, MemoUserInfoInfo, MemoDirInfo, MemoTypeInfo, MemoComponentsInfo, MemoGroupInfo, MemoTasksInfo: String): String; begin if (UsagePage.SelectedValueIndex=1) then Result := ''; end; function ShouldSkipPage(PageID: Integer): Boolean; begin Result := false; If (UsagePage.SelectedValueIndex=1) then begin If (PageID = wpSelectDir) or (PageID = wpSelectProgramGroup) or (PageID = wpSelectTasks) or (PageID=wpFinished) then Result := true; End; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:39 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz