AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Inno Setup ISCmplr.dll in eigene Anwendung einbauen ?
Thema durchsuchen
Ansicht
Themen-Optionen

Inno Setup ISCmplr.dll in eigene Anwendung einbauen ?

Ein Thema von Bernd Nowak · begonnen am 28. Apr 2008 · letzter Beitrag vom 29. Apr 2008
Antwort Antwort
Bernd Nowak

Registriert seit: 18. Jan 2006
Ort: Duisburg
61 Beiträge
 
Turbo Delphi für Win32
 
#1

Inno Setup ISCmplr.dll in eigene Anwendung einbauen ?

  Alt 28. Apr 2008, 14:17
Hallo,
ich habe jetzt schon viel mit Inno gemacht aber ich habe ein paar Projekte, wo ich dem Benutzer mittels Delphi Applikation die Anpassung des Inno Skripts abnehmen möchte.
Ich könnte natürlich nur die Kommandozeilen Tools mitliefern und die Delphi Applikation dann so programmieren, das zuletzt das Kommando "iscc skriptname.iss" ausgeführt wird.
Es erscheint jedoch kein Fortschrittsbalken während der Abarbeitung und es muss doch einen Weg geben die ISCmplr.dll in eine eigene Anwendung zu integrieren.
Habe auch schon in der Mailingliste von Inno gesucht aber bin noch nicht fündig geworden ausser verweisen auf die Quelltexte.

Hat jemand sowas schon einmal realisiert und kann mir ein bisschen unter die Arme greifen ?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Inno Setup ISCmplr.dll in eigene Anwendung einbauen ?

  Alt 28. Apr 2008, 14:27
InnoSetup ist doch in Delphi geschrieben. Ein Blick in den Source sollte eigentlich helfen.
Markus Kinzler
  Mit Zitat antworten Zitat
Bernd Nowak

Registriert seit: 18. Jan 2006
Ort: Duisburg
61 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Inno Setup ISCmplr.dll in eigene Anwendung einbauen ?

  Alt 29. Apr 2008, 09:07
Danke für den Hinweis. Ich habe mir mal die ISTool Sources heruntergeladen und nun ja, die sind in C(++) geschrieben. Die Lösung scheint in DlgCompile.cpp zu stecken aber bin zu blöd dafür da ich mit C++ noch nicht so viel gemacht habe.
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.483 Beiträge
 
Delphi 10.1 Berlin Professional
 
#4

Re: Inno Setup ISCmplr.dll in eigene Anwendung einbauen ?

  Alt 29. Apr 2008, 12:10
Zitat von Bernd Nowak:
ISTool Sources
Du kannst auch die InnoSetup Sources herunterladen. Die enthalten den "Editor" Compil32.exe, der in Delphi geschrieben ist.
  Mit Zitat antworten Zitat
Bernd Nowak

Registriert seit: 18. Jan 2006
Ort: Duisburg
61 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Inno Setup ISCmplr.dll in eigene Anwendung einbauen ?

  Alt 29. Apr 2008, 12:55
Schaue ich mir mal an. Habe zwar massig ??? nach kurzem Drübersehen aber vielleicht klärt sich das ja noch
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#6

Re: Inno Setup ISCmplr.dll in eigene Anwendung einbauen ?

  Alt 29. Apr 2008, 15:54
Zitat von Bernd Nowak:
ISCmplr.dll
Wie kommst du darauf, dass diese Bibliothek mit C geschrieben wurde? Das Ding ist ein normales Delphi-Projekt (ISCmplr.dpr)
Delphi-Quellcode:
function ISDllCompileScript(const Params: TCompileScriptParamsEx): Integer; stdcall;
function ISDllGetVersion: PCompilerVersionInfo; stdcall;

exports
  ISDllCompileScript,
  ISDllGetVersion;
Dürfte dann ab hier nicht mehr schwer sein.
  Mit Zitat antworten Zitat
Bernd Nowak

Registriert seit: 18. Jan 2006
Ort: Duisburg
61 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: Inno Setup ISCmplr.dll in eigene Anwendung einbauen ?

  Alt 29. Apr 2008, 16:24
Zitat von MathiasSimmack:
Zitat von Bernd Nowak:
ISCmplr.dll
Wie kommst du darauf, dass diese Bibliothek mit C geschrieben wurde? Das Ding ist ein normales Delphi-Projekt (ISCmplr.dpr)
Delphi-Quellcode:
function ISDllCompileScript(const Params: TCompileScriptParamsEx): Integer; stdcall;
function ISDllGetVersion: PCompilerVersionInfo; stdcall;

exports
  ISDllCompileScript,
  ISDllGetVersion;
Dürfte dann ab hier nicht mehr schwer sein.
Ich hatte mir gestern nur die Sources von ISTool angesehen, und die sind in C. Und das ISDllCompileScript exportiert wird hatte ich auch schon mit dem PE Explorer gesehen.
Was ich noch nicht gesehen habe ist welche Parameter übergeben werden (TCompileScriptParamsEx) und wie es gemacht wird, das man einen Fortschrittsbalken sieht.

Vielen Dank schonmal. Bin gar nicht auf die Idee gekommen mir die Source von ISCmplr anzusehen.

Also die Parameter die an ISDllCompielScript übergeben werden können scheint wohl dieser Record zu sein:

Delphi-Quellcode:
  TCompileScriptParamsEx = record
    Size: Cardinal; { [in] Set to SizeOf(TCompileScriptParamsEx). }
    CompilerPath: PChar; { [in] The "compiler:" directory. This is the
                            directory which contains the *.e32 files. If this
                            is set to NULL, the compiler will use the directory
                            containing the compiler DLL/EXE. }

    SourcePath: PChar; { [in] The default source directory, and directory to
                            look in for #include files. Normally, this is
                            the directory containing the script file. This
                            cannot be NULL. }

    CallbackProc: TCompilerCallbackProc;
                          { [in] The callback procedure which the compiler calls
                            to read the script and for status notification. }

    AppData: Longint; { [in] Application-defined. AppData is passed to the
                            callback function. }

    Options: PChar; { [in] Additional options. Each option is a
                            null-terminated string, and the final option is
                            followed by an additional null character.
                            If you do not wish to specify any options, set this
                            field to NULL or to point to a single null
                            character.

                            Currently supported options:

                            OutputBaseFilename=[filename]
                              Overrides any OutputBaseFilename setting in the
                              script; causes the compiler to use [filename]
                              instead.
                            OutputDir=[path]
                              Overrides any output directory in the script;
                              causes the compiler to use [path] instead. }

  end;
Aber irgendwie fehlt mir da das ISS skript und der Weg den Fortschrittsbalken zu setzen. Ich schätze das das etwas mit dem CallBack Proc zu tun hat.
  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 08:23 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