AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Inno Setup Script gesucht

Ein Thema von greenmile · begonnen am 16. Dez 2020 · letzter Beitrag vom 17. Dez 2020
Antwort Antwort
greenmile

Registriert seit: 17. Apr 2003
1.107 Beiträge
 
Delphi 10.3 Rio
 
#1

Inno Setup Script gesucht

  Alt 16. Dez 2020, 16:18
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.
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
2.824 Beiträge
 
Delphi 12 Athens
 
#2

AW: Inno Setup Script gesucht

  Alt 16. Dez 2020, 16:31
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.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.139 Beiträge
 
Delphi 12 Athens
 
#3

AW: Inno Setup Script gesucht

  Alt 16. Dez 2020, 16:35
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?
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
bcvs

Registriert seit: 16. Jun 2011
668 Beiträge
 
Delphi 12 Athens
 
#4

AW: Inno Setup Script gesucht

  Alt 17. Dez 2020, 07:16
Du könntest das DestDir für die exe variabel machen:
Etwas in der Art:
Code:
[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;
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.
  Mit Zitat antworten Zitat
greenmile

Registriert seit: 17. Apr 2003
1.107 Beiträge
 
Delphi 10.3 Rio
 
#5

AW: Inno Setup Script gesucht

  Alt 17. Dez 2020, 11:51
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.
Die Beispiele hatte ich als erstes durch, da war leider nichts brauchbares dabei.
  Mit Zitat antworten Zitat
Edelfix

Registriert seit: 6. Feb 2015
Ort: Stadtoldendorf
213 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: Inno Setup Script gesucht

  Alt 17. Dez 2020, 13:22
Wie sieht dein Quelltext aktuell aus?
  Mit Zitat antworten Zitat
greenmile

Registriert seit: 17. Apr 2003
1.107 Beiträge
 
Delphi 10.3 Rio
 
#7

AW: Inno Setup Script gesucht

  Alt 17. Dez 2020, 14:38
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;
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:06 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