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
Dieses Thema wurde von "Christian Seehase" von "Tutorials und Kurse" nach "Programmieren allgemein" verschoben.
Thread ist kein Tutorial oder Kurs |
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. |
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? :)
|
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. |
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!)? |
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 ?
|
Re: Fragen zu Innos Setup Handling?
Zitat:
Zitat:
|
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:
|
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 |
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:
Im Prinzip habe ich das auch nur mit den Angaben aus der Hilfedatei zusammengebaut.
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; |
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... :(
|
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:
Noch mal kurz: Du willst beim Start des Setup nach einem bestimmten Schlüssel/Wert in der Registry suchen. Einen Zitat:
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:
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.
function InitializeSetup: boolean;
var szSourcePath : string; begin Result := RegValueExists(HKEY_LOCAL_MACHINE, 'Software\Microsoft\Windows\CurrentVersion\Setup', 'SourcePath'); end; |
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; |
Re: Fragen zu Innos Setup Handling?
Zitat:
Zitat:
Zitat:
|
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! :) |
Re: Fragen zu Innos Setup Handling?
Vergeßt es, Frage hat sich erledigt! Edit!
|
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? |
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? |
Re: Fragen zu Innos Setup Handling?
Zitat:
|
Re: Fragen zu Innos Setup Handling?
Zitat:
[code=pre][Setup] DefaultDirName={code:MyConst}\My Program
Code:
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
function MyConst(Default: String): String;
begin Result := ExpandConstant('{pf}'); end;
Code:
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.
[Setup]
DisableDirPage=yes 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:
Zitat:
Code:
Aber zugegeben, schön sieht so was nicht aus. ;)
[Setup]
WindowVisible=yes WindowShowCaption=no ; <-- optional ohne Titelzeile |
Re: Fragen zu Innos Setup Handling?
Zitat:
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!? ;) |
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.
|
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!! :( |
Re: Fragen zu Innos Setup Handling?
Zitat:
Schon mal mit ISTool gearbeitet? nein! na dann schau mal hier Es nimmt dir jegliche arbeit einfach ab... |
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!
|
Re: Fragen zu Innos Setup Handling?
Zitat:
Zitat:
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:
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:
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; Zitat:
|
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?
|
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:
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.
[b][Setup][/b]
DefaultDirName={reg:HKLM\Software\Microsoft\Windows\CurrentVersion\App Paths\Delphi32.exe,Path|{pf}\My Program} Das gleiche mit dem Umweg über die [Code]-Sektion: [code=pre][Setup] DefaultDirName={code:GetRegValue|{pf}\My Program}
Code:
Hier wird der Alternativpfad als Vorgabewert (DefaultValue) übergeben.
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; Und? War das nun so schwer? ;) @meuternde Moderatoren: Wie wär´s mit einem Inno Setup-Highlighter? ;) |
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! ;)
|
Re: Fragen zu Innos Setup Handling?
Zitat:
Zitat:
Zitat:
|
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 |
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? |
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).
|
Re: Fragen zu Innos Setup Handling?
[Run]
Filename: "{app}\gp.exe"; Flags: runhidden Damit dürfte es funktionieren. :) |
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:
Nur erscheint keine MsgBox. Und wie man die Suche nahc einer Datei einbaut, weiß ich auch nicht.
[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; Kann mir das bitte jemand programmieren? Würde mich freuen. :) |
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:
Was die Datei angeht:
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;
Code:
Wenn das auch schon beim Start geprüft werden soll, dann musst du diese Bedingungen mit in "InitializeSetup" bei deinem
Result :=
(RegQueryStringValue(HKLM,'...','DIR',TempPath)) and (TempPath <> '') and (FileExists(TempPath + '\DeineDatei.dat'));
Code:
anhängen. Aber so, dass es Sinn ergibt. ;)
(RegQueryStringValue(HKEY_LOCAL_MACHINE,'...','Version',szSourcePath)) and
(szSourcePath <> ''); |
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:
Was habe ich falsch gemacht?
[ 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; |
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