Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Fragen zu Innos Setup Handling? (https://www.delphipraxis.net/19917-fragen-zu-innos-setup-handling.html)

The Knight 10. Apr 2004 20:29


Fragen zu Innos Setup Handling?
 
Ich bete den tag an, an dem es eine komplett deutsche Documentation gibt! Bis dahin, könnt ihr mir diese Fragen beantworten:

- wie kann ich die Erstellungen einer Programmgruppe im Startmenü verbieten
- wie kann ich die Deisntallationsdateien verbieten (oder überhaupt die Deinstall)
- wie kann ich die Komprimierung/das Packen der Dateien so einstellen, dass sie so klein werden wie mit Winrar gepackte Dateien
- wie kann ich meinem Setup eine beliebige Sprache verpassen (ich meine die Standarttexte, Fehlermeldungen usw… bzw. wie kann ich solche Texte meinen Wünschen anch abändern..)??

Wäre nett, wenn ihr mir gleich die Scriptzeilen geben könntet.
THX

DP-Maintenance 10. Apr 2004 20:34

DP-Maintenance
 
Dieses Thema wurde von "Christian Seehase" von "Tutorials und Kurse" nach "Programmieren allgemein" verschoben.
Thread ist kein Tutorial oder Kurs

Luckie 10. Apr 2004 20:38

Re: Fragen zu Innos Setup Handling?
 
Eine gute Dokumentation gibt es auf www.simmack.de

Aber so klein wie eine WinRar-datei wirst du sie nicht bekommen. Der Entpacker bzw das Setup muss ja noch dazukommen. Den kleinest Overhead, den ich kenne erzeugt allerdings der Setupmaker von NSIS.

The Knight 10. Apr 2004 23:42

Re: Fragen zu Innos Setup Handling?
 
Ich habe dann noch ein Anliegen, weiß aber nicht, ob das etchnisch möglich ist. In der Systemregistrierung gibt es einen Eintrag/Schlüssel zu meinem Spiel. Ich selbst entwickle aber einen inoffiziellen Patch dazu. Ich möchte aus Sicherheitsgründen das Setup testen lassen, ob der Wert/Schlüssel/Eintrag gesetzt wurde, also ob das Spiel überhaupt installiert ist. Ich hätte nun gerne gewusst, ob und wie das möglich ist? :)

MathiasSimmack 11. Apr 2004 07:40

Re: Fragen zu Innos Setup Handling?
 
Ja, das ist möglich. Inno Setup bietet mit der eingebauten Pascal-Sprache die Möglichkeit an, Werte aus der Registry zu lesen und ggf. auch Meldungen anzuzeigen. Inno Setup stellt einige Funktionen zur Verfügung, mit denen du das Suchen nach dem Registry-Eintrag bspw. gleich beim Start des Setups erledigen kannst. Fällt die Suche negativ aus, gibst du FALSE als Ergebnis der Inno Setup-Funktion zurück, und das Setup wird erst gar nicht durchgeführt.

Schau dazu mal in die Hilfe, und schau dir auch die Beispiele (*.iss) im Inno Setup-Ordner an.

The Knight 11. Apr 2004 08:27

Re: Fragen zu Innos Setup Handling?
 
Sehr gut, werde ich gleich machen!!

Das Tutorial PDF von simmack ist wirklich gut gemacht, fast meine ganzen Fragen wurden geklärt. Bis auf zwei, die von mir genannte und wie man bei der Install Dateien im Zielordner löscht? Ich habe es mit

[Delete]
Filename: xy

Probiert, geht aber nicht, weil es [Delete] nicht gibt. Wie ist also der Löschbefehl (nicht mit uninstalldelete verwechseln!)?

MrKnogge 11. Apr 2004 10:49

Re: Fragen zu Innos Setup Handling?
 
Ich glaub kaum, dass man bei der installation Datn löschen kann, aber such doch mal "delete" in der beigefügten Hilfe, darf man fragen wozu du bei einer Installation Dateien löschen musst ?

MathiasSimmack 11. Apr 2004 11:14

Re: Fragen zu Innos Setup Handling?
 
Zitat:

Zitat von The Knight
Das Tutorial PDF von simmack ist wirklich gut gemacht, [...]

Danke schön. Allgemein ziehe ich aber eine Anrede mit meinem Vornamen vor. Zu irgendwas muss der ja da sein.

Zitat:

Zitat von MrKnogge
Ich glaub kaum, dass man bei der installation Datn löschen kann, [...]

Doch, das müsste gehen. Und ich bin sicher, es steht in der Hilfe drin.

MathiasSimmack 11. Apr 2004 14:29

Re: Fragen zu Innos Setup Handling?
 
So, ich noch mal.

A) Ich wusste doch, dass es geht. Die Lösung heißt "[InstallDelete]", und das Prinzip ist exakt das gleiche wie bei "[UninstallDelete]", nur das eben während der Installation Dateien gelöscht werden können.

B) Ich war gerade mal so frei, die Doku zu aktualisieren. ;) Hauptsächlich weil´s die zwei Programme, mit denen ich die Beispielinstallation gemacht habe, nicht mehr gibt. Jetzt stimmt´s wieder.

C) Um auch diese Frage noch schnell zu beantworten:
Zitat:

Zitat von MrKnogge
darf man fragen wozu du bei einer Installation Dateien löschen musst ?

Mögliche Situation: Deine alte Version 1.0 benutzt irgendeine Datei (DLL, Konfig-Datei, was auch immer), aber die neue Version 1.1 benötigt diese nicht mehr. Nun musst du aber davon ausgehen, dass evtl. jemand von der noch installierten (!) Version 1.0 aktualisiert (geht ja mit Inno Setup). In dem Fall sollte dein neues Setup die nicht mehr benötigten Dateien der alten Version entfernen.

The Knight 11. Apr 2004 14:43

Re: Fragen zu Innos Setup Handling?
 
Herr simmack.de hat es erkannt, alte nicht gebrauchte Dateien sollen gelöscht werden! ;) Danke für eure Hilfe.

Aber die Hilfe Dateimacht mich wahnsinnig, die is nur für Profis! :mad: Ich bekomme das nicht hin mit dem Registrycheck. Weiß einer von euch, wie das geht? Die IS-Fehlermeldungen kann ich echt net mehr ersehen! :o

MathiasSimmack 11. Apr 2004 16:26

Re: Fragen zu Innos Setup Handling?
 
Als Beispiel: Diese Funktion versucht beim Start den "SourcePath" von Windows zu ermitteln. Klappt das nicht, startet das Setup nicht.
[code=delphi]
Code:
function InitializeSetup: boolean;
var
  szSourcePath : string;
begin
  Result := (RegQueryStringValue(HKEY_LOCAL_MACHINE,'Software\Microsoft\Windows\CurrentVersion\Setup',
    'SourcePath',szSourcePath)) and (szSourcePath <> '');

  if(Result) then MsgBox(szSourcePath,mbInformation,MB_OK);
end;
Im Prinzip habe ich das auch nur mit den Angaben aus der Hilfedatei zusammengebaut.

The Knight 11. Apr 2004 22:00

Re: Fragen zu Innos Setup Handling?
 
Mmmh, ich hab mir die Hilfe mal angesehen, kann dieser RegistryCheck vielleicht "function RegGetSubkeyNames" sein? Fallsja, wo gibts dazu Beispiele, vom Programmieren habe ich nämlich absolut keine Ahnung... :(

MathiasSimmack 11. Apr 2004 22:13

Re: Fragen zu Innos Setup Handling?
 
Ich glaube, dass du ein Verständnisproblem hast. Mag sein, dass das passiert wenn du (wie du selbst sagst) keine Ahnung vom Programmieren hast, aber wie sieht´s mit deinem Englisch aus? Kannst du dir unter dem Wort
Zitat:

Zitat von The Knight
RegGetSubkeyNames

nichts vorstellen?

Noch mal kurz: Du willst beim Start des Setup nach einem bestimmten Schlüssel/Wert in der Registry suchen. Einen
Zitat:

RegistryCheck
in dem Sinn gibt es nicht. Den musst du schon selbst schreiben. Ich hab´s dir mit einem Beispiel beim Start demonstriert. Nimm dein Setupskript und hänge das Code-Beispiel aus meinem letzten Posting an (so wie es da steht, inkl. der "[Code]"-Sektion). Dann kompiliere und starte es, und du siehst was dabei passiert.

Es gibt noch eine Funktion, "RegValueExists", die ich in meinem Beispiel nicht benutzt habe. Diese Funktion liest den Wert nicht aus sondern prüft nur ob er da ist. Ein Aufrufbeispiel wäre:
[code=delphi]
Code:
function InitializeSetup: boolean;
var
  szSourcePath : string;
begin
  Result := RegValueExists(HKEY_LOCAL_MACHINE,
    'Software\Microsoft\Windows\CurrentVersion\Setup',
    'SourcePath');
end;
Damit startet das Setup nur, wenn es den Eintrag "SourcePath" in "HKLM\...\Setup" gibt. Allerdings ist damit nicht sichergestellt, dass der Wert auch das enthält, was du erwartest. Dazu müsstest du ihn (wie im ersten Beispiel gezeigt) auslesen und ggf. mit einem Vorgabewert vergleichen.

The Knight 12. Apr 2004 09:41

Re: Fragen zu Innos Setup Handling?
 
Bist du sicher, dass das stimmt, was du da schreibst? :/ Ich habe den kompletten Code, genauso wie du ihn geschrieben hast übernommen, aber er geht nicht. Der Pfad zur dem Reg-Schlüssel stimmt aber!! Ich habs auch mit anderen Sachen in "Software" probiert, geht trotzdem nicht. Richtig geschrieben habe ich aber alles.

Hier mein kompletter Code:

[code=delphi][Setup]
AppName=TPR Patch Pack Build 62 German Edition
AppVerName=TPR Patch Pack Build 62 German Edition
DefaultDirName=C:\Knights and Merchants
InfoAfterFile=C:\Eigene Dateien\Patch Pack Quellcode\Docs DE\text.txt
Compression=lzma
SolidCompression=yes
uninstallable=no

[Languages]
Name: "de"; MessagesFile: "compiler:Languages\German.isl"

[Files]
Source: "C:\Eigene Dateien\Patch Pack Quellcode\PP1 DE\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs


[Run]
Filename: "{app}\KM_TPR.exe"; Description: "Knights and Merchants jetzt starten"; Flags: nowait postinstall skipifsilent
Filename: "{app}\Patch_Pack_Readme.htm"; Description: "Liesmich-Datei lesen (empfohlen)"; Flags: nowait postinstall skipifsilent

Code:
function InitializeSetup: boolean;
var
  szSourcePath : string;
begin
  Result := (RegQueryStringValue(HKEY_LOCAL_MACHINE,'Software\JOYMANIA Entertainment\KnightsandMerchants TPR',
    'SourcePath',szSourcePath)) and (szSourcePath <> '');

  if(Result) then MsgBox(szSourcePath,mbInformation,MB_OK);
end;

MathiasSimmack 12. Apr 2004 21:53

Re: Fragen zu Innos Setup Handling?
 
Zitat:

Zitat von The Knight
Bist du sicher, dass das stimmt, was du da schreibst? :/

In dem Fall: Ja.

Zitat:

Der Pfad zur dem Reg-Schlüssel stimmt aber!
Hm, der Schlüssel ... na gut ... Aber heißt der Eintrag, den du suchst, wirklich "SourcePath":
Zitat:

[code=pre]
Code:
function InitializeSetup: boolean;
var
  szSourcePath : string;
begin
  Result := (RegQueryStringValue(HKEY_LOCAL_MACHINE,
    'Software\JOYMANIA Entertainment\KnightsandMerchants TPR',
    [color=#ff0000]'SourcePath'[/color],szSourcePath)) and (szSourcePath <> '');

  if(Result) then MsgBox(szSourcePath,mbInformation,MB_OK);
end;

Das wäre ein witziger Zufall, weil das nur ein Beispiel von mir war.

The Knight 13. Apr 2004 00:39

Re: Fragen zu Innos Setup Handling?
 
Ach so, das rote musste ich ändern!!! Das musst du gleich sagen, das konnte ich ja nicht wissen… bin doch Anfänger, wie du weißt.
Aber super, jetzt klappt es. Bin sehr dankbar und mehr als zufrieden! :)

The Knight 13. Apr 2004 16:33

Re: Fragen zu Innos Setup Handling?
 
Vergeßt es, Frage hat sich erledigt! Edit!

The Knight 14. Apr 2004 12:46

Re: Fragen zu Innos Setup Handling?
 
Uuh, jetzt hätte ich doch noch eine Frage! Ich habe ja einen Patch hier und man muß den Installationspfad angeben. Da der aber schon existiert, kommt eine Aufforderung, ob der Ordner überschrieben werden soll oder nicht. Wie kann ich diese Frage umgehen/automatisieren?

Ich hab in der Hilfe nach overwrite gesucht, dazu gibt’s aber nichts, was hinkommt oder (also für Flags:). Was muß man da schreiben?

The Knight 20. Aug 2004 08:20

Re: Fragen zu Innos Setup Handling?
 
Ich habe meinen Installer erfolgreich benutzen können, habe aber festgestellt, das manche User zum dumm für die Bedienung sind. In dem Installationspfad soll daher ein ganz bestimmter Pfad stehen.

Inno soll also zur Regsitry connecten und dort aus einem bestimmten Eintrag einen Wert auslesen (das ist ein Pfad). Dieser Pfad (oder Variable...) soll dann den Wert der Variable bilden, die für den Installationspfad verwendet wird.

Könnt ihr mir helfen?

PS: Kann man mit Inno eigentlich auch solche Vollbild-Hintergründe machen, wie mit InstallShield?

Phoenix 20. Aug 2004 08:25

Re: Fragen zu Innos Setup Handling?
 
Zitat:

Zitat von The Knight
PS: Kann man mit Inno eigentlich auch solche Vollbild-Hintergründe machen, wie mit InstallShield?

Zum Glück nicht. :zwinker: Das sind noch Relikte aus der Windows 3.11 Zeit.

MathiasSimmack 20. Aug 2004 09:03

Re: Fragen zu Innos Setup Handling?
 
Zitat:

Zitat von The Knight
In dem Installationspfad soll daher ein ganz bestimmter Pfad stehen. Inno soll also zur Regsitry connecten und dort aus einem bestimmten Eintrag einen Wert auslesen (das ist ein Pfad). Dieser Pfad (oder Variable...) soll dann den Wert der Variable bilden, die für den Installationspfad verwendet wird.

Auch das lässt sich über die eingebaute Skriptsprache machen. Wenn du dir mal das Beispiel "CodeSample1.iss" ansiehst, da steht folgendes:
[code=pre][Setup]
DefaultDirName={code:MyConst}\My Program

Code:
function MyConst(Default: String): String;
begin
  Result := ExpandConstant('{pf}');
end;
Wichtig ist eigentlich der fett markierte Teil, der auf die entsprechende Funktion in der "Code"-Sektion verweist. Ähnlich wie bei deinem alten Problem könntest du auch hier wieder auf die Registry zugreifen und den entsprechenden Wert auslesen. Ggf. solltest du im Setup auch
Code:
[Setup]
DisableDirPage=yes
setzen, damit der User gar keine Chance hat, ein anderes Verzeichnis zu wählen. Ist für einen Patch ohnehin die beste Lösung. Es setzt aber voraus, dass du tatsächlich in der Registry genug Infos findest, um das bereits installierte Spiel zu finden.

Du musst mal in die Hilfe schauen. Es gibt noch ein paar "Disable*"-Direktiven, mit denen du bspw. auch die Auswahl der Programmgruppe usw. verhindern kannst.

Zitat:

PS: Kann man mit Inno eigentlich auch solche Vollbild-Hintergründe machen, wie mit InstallShield?
Zitat:

Zitat von Phoenix
Zum Glück nicht. :zwinker:

Eine glatte Lüge :mrgreen:
Code:
[Setup]
WindowVisible=yes
WindowShowCaption=no ; <-- optional ohne Titelzeile
Aber zugegeben, schön sieht so was nicht aus. ;)

The Knight 20. Aug 2004 09:17

Re: Fragen zu Innos Setup Handling?
 
Zitat:

Zitat von Phoenix
Zum Glück nicht. :zwinker: Das sind noch Relikte aus der Windows 3.11 Zeit.

Wow, das ging schnell.

Ich probiere es heute abend mal aus.

Was? Die Hintergründe gibt es doch heute noch bei PC Spiel-Installationen. Eigentlich kenne ich gar kein Spiel, dass keinen Vollbild-Hintergrund bei der Installation hat!? ;)

MathiasSimmack 20. Aug 2004 09:55

Re: Fragen zu Innos Setup Handling?
 
Ich kenne es eigentlich nur noch so, dass im Hintergrund Bilder aus dem Spiel angezeigt werden. Wie sagt man: billboards? Sprich: solange die Installation läuft, solange wechseln im Hintergrund die Bilder. Dieser einfarbige Hintergrund (auch wenn er einen Farbverlauf hat) ist aber mittlerweile recht selten geworden.

The Knight 11. Sep 2004 20:49

Re: Fragen zu Innos Setup Handling?
 
Also das war echt das letzte mal, dass ich mit Delphi in Inno irgendwas versucht habe zu coden! :mad: Ich brings nicht.

Könnt ihr mir daher den Quellcode geben? Ich meine die Funktion, mit der man einen Pfad (das ist ein Wert) eines Unterschlüssels aus einem Schlüssel rauslesen kann. Das ganze wird in den Installpfad des Installers kopiert.

Ich gebs auf, ich hasse Delphi coden!! :(

City Light 11. Sep 2004 21:22

Re: Fragen zu Innos Setup Handling?
 
Zitat:

Zitat von The Knight
Ich bete den tag an, an dem es eine komplett deutsche Documentation gibt! Bis dahin, könnt ihr mir diese Fragen beantworten:

- wie kann ich die Erstellungen einer Programmgruppe im Startmenü verbieten
- wie kann ich die Deisntallationsdateien verbieten (oder überhaupt die Deinstall)
- wie kann ich die Komprimierung/das Packen der Dateien so einstellen, dass sie so klein werden wie mit Winrar gepackte Dateien
- wie kann ich meinem Setup eine beliebige Sprache verpassen (ich meine die Standarttexte, Fehlermeldungen usw… bzw. wie kann ich solche Texte meinen Wünschen anch abändern..)??

Wäre nett, wenn ihr mir gleich die Scriptzeilen geben könntet.
THX


Schon mal mit ISTool gearbeitet? nein! na dann schau mal hier


Es nimmt dir jegliche arbeit einfach ab...

The Knight 12. Sep 2004 10:25

Re: Fragen zu Innos Setup Handling?
 
Die von dir zitierten Dinge habe ich schon seit Ewigkeiten auf dem Kasten. ;) Das ist nicht das Problem, sondern das mit dem Registrypfad!

MathiasSimmack 12. Sep 2004 10:43

Re: Fragen zu Innos Setup Handling?
 
Zitat:

Zitat von The Knight
Also das war echt das letzte mal, dass ich mit Delphi in Inno irgendwas versucht habe zu coden! :mad: Ich brings nicht.

[...]

Ich gebs auf, ich hasse Delphi coden!! :(

Ja, aber was hat das jetzt mit Delphi zu tun? Es geht doch um Inno Setup. Oder nicht?

Zitat:

Könnt ihr mir daher den Quellcode geben? Ich meine die Funktion, mit der man einen Pfad (das ist ein Wert) eines Unterschlüssels aus einem Schlüssel rauslesen kann.
Wie oft denn noch?

Also gut: Öffne mal deine Registry (regedit.exe) und suche unter HKEY_LOCAL_MACHINE den Pfad "Software\Microsoft\Windows\CurrentVersion" heraus. (Wie du dahin kommst, wirst du wohl wissen.) Dort findest du einen Wert namens "RegisteredOrganziation", der nachfolgend ausgelesen wird. Es kann bei NT/2000/XP auch im Schlüssel "Windows NT" anstelle von "Windows" stehen. Kann, muss aber nicht. Das ist das einzige, das du beachten musst. Hier also der Skriptcode:
[code=pre]
Code:
function InitializeSetup: boolean;
var
  MeineStringVariable : string;
begin
  if(RegQueryStringValue(HKEY_LOCAL_MACHINE,     // Root-Schlüssel
    'Software\Microsoft\Windows\CurrentVersion', // Pfad zum Wert
    'RegisteredOrganization',                    // Wert
    MeineStringVariable)) then                   // Deine String-Variable

  MsgBox(MeineStringVariable,mbInformation,MB_OK);
end;
Damit hast du den Inhalt von "RegisteredOrganziation" in deiner String-Variablen. Das gleiche Prinzip machst du nun mit deinem von dir gesuchten/gewünschten Wert. Und was du dann vorhast, das könntest du noch mal erklären:
Zitat:

Das ganze wird in den Installpfad des Installers kopiert.
:gruebel:

The Knight 12. Sep 2004 11:09

Re: Fragen zu Innos Setup Handling?
 
Ich denke, du hast mich niucht verstanden. Ichmeinte aus registry einen bestimmten wert auslesen und diesen dann in "DefaultDirName=" einsetzen. Das geht mit variablen und so, aber ich bin da selber gescheitert. Der ausgelesene Wert ist ein Pfad (könnte auch Text oder Zahlen usw. sein).... verstehste jetzt?

MathiasSimmack 12. Sep 2004 13:07

Re: Fragen zu Innos Setup Handling?
 
Ja, aber so was findest du in der Inno Setup-Hilfe bzw. in den mitgelieferten Beispielen. Beides wird meist unterschätzt bzw. komplett ignoriert.

Eine Möglichkeit:
Code:
[b][Setup][/b]
DefaultDirName={reg:HKLM\Software\Microsoft\Windows\CurrentVersion\App Paths\Delphi32.exe,Path|{pf}\My Program}
was bedeutet, dass das Setup den in der Registry eingetragenen Pfad der "delphi32.exe" benutzt. Wenn es diesen Eintrag nicht gibt, wird stattdessen der Standard "%programme%\My Program" benutzt.

Das gleiche mit dem Umweg über die [Code]-Sektion:
[code=pre][Setup]
DefaultDirName={code:GetRegValue|{pf}\My Program}

Code:
function GetRegValue(DefaultValue: string): string;
begin
  // wenn nicht gefunden, ...
  if(not RegQueryStringValue(HKEY_LOCAL_MACHINE,
    'Software\Microsoft\Windows\CurrentVersion\App Paths\Delphi32.exe',
    'Path',
    Result)) then
  // ... dann den Pfad %programme% zurückliefern
  Result := ExpandConstant(DefaultValue);
end;
Hier wird der Alternativpfad als Vorgabewert (DefaultValue) übergeben.
Und? War das nun so schwer? ;)


@meuternde Moderatoren: Wie wär´s mit einem Inno Setup-Highlighter? ;)

The Knight 12. Sep 2004 17:31

Re: Fragen zu Innos Setup Handling?
 
Sagen wir es so: darauf wäre ich NIE gekommen und so sahen meine eigenen Versuche auch nicht aus. Ich danke dir für deine Kooperation. Meine fertigen Patches werden von 100en Usern benutzt und du kannst dich freuen, einen Teil dazu beigetragen zu haben. Übrigens gutes Inno-Handbuch, was du da angelegt hast, es hat mir einiges gebracht! ;)

MathiasSimmack 12. Sep 2004 18:51

Re: Fragen zu Innos Setup Handling?
 
Zitat:

Zitat von The Knight
Sagen wir es so: darauf wäre ich NIE gekommen und so sahen meine eigenen Versuche auch nicht aus.

Ich möchte nicht, dass du mich falsch verstehst, aber was ich bei solchen Sachen immer mache: Ich gucke nach, wie es andere gemacht haben. Und zu irgendwas müssen die Beispieldateien usw. ja gut sein.

Zitat:

Ich danke dir für deine Kooperation. Meine fertigen Patches werden von 100en Usern benutzt und du kannst dich freuen, einen Teil dazu beigetragen zu haben.
Gern geschehen.

Zitat:

Übrigens gutes Inno-Handbuch, was du da angelegt hast, es hat mir einiges gebracht! ;)
Der 10-Euro-Schein für diese selbstverständlich nicht vorher verabredete Lobeshymne ist unterwegs. :mrgreen:

MCeddy 12. Sep 2004 20:31

Re: Fragen zu Innos Setup Handling?
 
Hallo, ich habe jetzt mangels Zeit :cry: nicht alles gelesen... Ich nehme dazu immer noch "ISTool", damit kann man auf einfache Weise seine Inno-Scripts erstellen und muss nicht mit der Hand im Script wühlen (da passt der Spruch wieder, den ich vorige Woche zu hören bekommen habe: "Programmierer sind faul" = :roll: :zwinker: )

http://www.istool.org/

mfg

MCeddy

The Knight 16. Feb 2005 18:56

Re: Fragen zu Innos Setup Handling?
 
…ich möchte bei meinem Installer am Ende eine Datei ausführen (exe). Das gehört in die [Run] Section, ich weiß. Aber der Installer MUSS die exe ausführen, es darf am Ende nicht da stehen, wenn das Setup abgeschlossen ist, ob die exe ausgeführt werden soll oder nicht. Das soll der Inno-Installer automatisch machen. Besser gesagt er MUSS.

Wie geht das?

MathiasSimmack 16. Feb 2005 19:34

Re: Fragen zu Innos Setup Handling?
 
Und? Du willst vermutlich wissen, wie. War [InstallRun] das mit der Option auf der letzten Seite, oder ließen sich die Programme nicht auch so starten? :gruebel: Na, wenn´s nicht geht, dann musst du per [Code] aktiv werden und dein Programm bspw. gleich nach der Installation der Dateien ausführen lassen (s. Hilfe -> CurStepChanged -> ssPostInstall, als eine Möglichkeit).

The Knight 17. Feb 2005 13:40

Re: Fragen zu Innos Setup Handling?
 
[Run]
Filename: "{app}\gp.exe"; Flags: runhidden

Damit dürfte es funktionieren. :)

The Knight 10. Mär 2005 08:51

Re: Fragen zu Innos Setup Handling?
 
Ich möchte meinem Patch-Setup einer Kontrolle unterziehen. Er soll einen Registry-Pfad/Wert suchen und ein bestimmte Datei. Wenn eines von beiden NICHT gefunden wurde, soll eine Messagebox erscheinen und dann das Setup abbrechen.

Ich habe es bisher hinbekommen mit den Codeschnippseln hier, dass der Installer abbricht, wenn der reg-Pfad nicht gefundne wurde:

Code:
[b] [ Code ][/b]
function InitializeSetup: boolean;
var
  szSourcePath : string;
begin
  Result := (RegQueryStringValue(HKEY_LOCAL_MACHINE,'Software\JOYMANIA Entertainment\KnightsandMerchants TPR',
    'Version',szSourcePath)) and (szSourcePath <> '');
end;

function GetRegValue(DefaultValue: string): string;
begin
  // wenn nicht gefunden, ...
  if(not RegQueryStringValue(HKEY_LOCAL_MACHINE,'Software\JOYMANIA Entertainment\KnightsandMerchants TPR','DIR',Result)) then
  // ... dann den Pfad %programme% zurückliefern
  Result := ExpandConstant(DefaultValue);
end;
Nur erscheint keine MsgBox. Und wie man die Suche nahc einer Datei einbaut, weiß ich auch nicht.

Kann mir das bitte jemand programmieren? Würde mich freuen. :)

MathiasSimmack 10. Mär 2005 09:19

Re: Fragen zu Innos Setup Handling?
 
Du bist der Erste, der immer wieder seinen alten Thread rausholt. Finde ich gut. :thumb: Nebenbei verweise ich dich aber mal an das deutsche Inno Setup-Forum. Ich rate jetzt einfach mal was deine Probleme angeht. Eine MessageBox wirst du nur sehen, wenn du sie selbst einfügst. Ich nehme mal an, du willst sie anzeigen, wenn der Registryschlüssel nicht gefunden wurde. Dann also:
Code:
function InitializeSetup: boolean;
begin
  Result := { ... } // was du schon im Code hast

  if(not Result) then
    MsgBox('Auf Grund schlechter Sicht wird das Setup abgebrochen.',
      mbError,MB_OK);
end;
Was die Datei angeht:
Code:
Result :=
  (RegQueryStringValue(HKLM,'...','DIR',TempPath)) and
  (TempPath <> '') and
  (FileExists(TempPath + '\DeineDatei.dat'));
Wenn das auch schon beim Start geprüft werden soll, dann musst du diese Bedingungen mit in "InitializeSetup" bei deinem
Code:
  (RegQueryStringValue(HKEY_LOCAL_MACHINE,'...','Version',szSourcePath)) and
  (szSourcePath <> '');
anhängen. Aber so, dass es Sinn ergibt. ;)

The Knight 12. Mär 2005 15:18

Re: Fragen zu Innos Setup Handling?
 
Hoh, super! :) Hab mich gleich mal dort registriert, aber hier bekomme ich doch auch guten Support. ;)

Ich würde sagen, es geht. Zumindest der Teil mit der Registry-Suche. Aber mit der Angabe des Pfades zu der Datei habe ich noch meine Probleme. Es handelt sich da um die Datei C:\1.txt:

Code:
[ Code ]
// Code für Reg.-Pfad- und Dateisuche
function InitializeSetup: boolean;
var
  TempPath : string;
begin
  Result := (RegQueryStringValue(HKLM,'Software\JOYMANIA Entertainment\KnightsandMerchants TPR','Version',TempPath)) and (TempPath <> '') and (FileExists(TempPath + 'C:\1.txt'));
  if(not Result) then
    MsgBox('Auf Grund schlechter Sicht wird das Setup abgebrochen.',
      mbError,MB_OK);
end;
Was habe ich falsch gemacht?


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:30 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