Archiv verlassen und diese Seite im Standarddesign anzeigen : [Inno Setup] Pfad automatisch erkennen
Hallo§wink
ich weiß nicht wie ich das beschreiben soll.
Wie lautet der Installationspfad von The Witcher?
Wenn man eine Mod installiert, weiß das Setup ja automatisch wo das Süiel installiert ist, wie bekomme ich das raus?
mfg Son-Goku
Wird eigentlich immer aus der Registry gelesen.
Mr. Bean
26.09.2008, 23:30
Hä,du meinst den Ort,wo das Spiel standardmässig hininstalliert wird,oder was?
Kannst eigentlich davon ausgehn,dass 99% aller Sachen sich unter C:\Programme installieren.Wenn nicht da,dann unter C:\Program Files.
Ansonsten Witcher in der Windowssuche eingeben oder im Regeditor,beide Wege werden dich wohl zum Ziel führen.
Es gibt ja immer einen Pfad der immer stimmt, egal auf Welche Festplatte es installiert ist.
ich glaube irgendwie so änlich:
{thewitcher}/
irdendwie so halt, ich kanns nicht genau beschreiben:(
Ich suche einen Allgemein gültigen pfad
ThielHater
27.09.2008, 03:37
OK^^ für den Post will ich dann nun aber auch Fame und nen Kuss auf die Wange.. bin extra um 4:14 Uhr aufgestanden, nur um zu posten. §ugly
Finde den Ordner heraus, unter dem du The Witcher installiert hast.
- Desktop > Arbeitsplatz > bspw. C:\Programme\TheWitcher > kopiere die Adresse, die in der Adresszeile steht
Finde den entsprechenden Registrywert heraus.
- Windowstaste + R > regedit > Strg + F > Strg + V > Haken bei "Daten" setzen, alle anderen entfernen > Suchen (danach ggf. F3 zum Weitersuchen)
- Du solltest dann irgendwann zu einem Wert kommen, der sich vermutlich so aufbaut:
HKCU oder HKLM\Software\Publisher oder Entwickler\Spielname\Install
Registrywert exportieren zur Pfadsicherheit (Optional, aber empfohlen):
- Mache einen Rechtsklick auf den Ordner (bzw. "Key"), der den Wert enthält und wähle "Exportieren", erstelle diese Datei am besten auf dem Desktop
- Rechtsklick auf die angelegte Datei > Bearbeiten
- Nun den Pfad und Wertnamen entnehmen, hier einmal anhand von Gothic 1:
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Piranha Bytes\Player-Kit]
"InstallLocation"="C:\\Programme\\Gothic"
Inno Setup den Wert auslesen und als Standardinstallationspfad definieren:
- siehe Beitrag #14 (http://forum.worldofplayers.de/forum/threads/465486-Inno-Setup-Pfad-automatisch-erkennen?p=8052432&viewfull=1#post8052432)
So ich glaube das sollte reichen^^ ich kann auch ganz, ganz nett sein.. wenn ich will. Und sollte nun vielleicht auch ins Bett.. :D
Ich bin mir nicht sicher ob du es verstanden hast^^
Mal ein Beispiel:
Die Gothic 2 Mods, werden ja automatisch un den richtigen Ordner installiert,
Genau das möchte ich auch bei The Witchter machen, aber ich weiß nicht wie.
der Pfad ist ja Variabel, Inno Soll automatisch in den richtigen Ordner installieren egal wo ich das Spiel installiert habe.
Genau das hat er beschrieben, der Pfad steht in der Registry, man kann ihn ja nicht "erraten". Er steht bei jedem Spiel wo anders und manche Firmen haben da ihre Finessen daher gibt es da auch keine immergleiche Lösung.
Gothic hat seinen Installationspfad auch in der Registry stehen, diesen muss man erstmal Wissen und kann ihn dann im Setup auch auslesen.
Achso.
Das ist mir irgendwie zuviel:dnuhr:
Ich löse das jetzt anders.
Dankt für eure Hilfe:gratz
Dann hätte ich noch eine kleine OT Frage:
Ich möchte dass eine Datei(12345.usw) beim deinstallieren nicht entfernt wird und in z.b. 54321.usw
umbenannt wird wie geht das?
ThielHater
27.09.2008, 13:26
Wie löst du das denn jetzt? :dnuhr: Da macht man sich die Arbeit das ausführlich zu beschreiben und dann.. :(
Ich finde einfach keinen Eintrag zum Spiel:dnuhr:
Und verstehen zu ich das auch nicht:(
Dann hätte ich noch eine kleine OT Frage:
Ich möchte dass eine Datei(12345.usw) beim deinstallieren nicht entfernt wird und in z.b. 54321.usw
umbenannt wird wie geht das?
kann mir hier jemand mit helfen?
[HKEY_LOCAL_MACHINE\SOFTWARE\CD Projekt Red\The Witcher]
"InstallFolder"="C:\\Program Files\\The Witcher"
müsste es sein.
@Chris: Habs gerade angepasst.
ich werd mal versuchen;)
Dann hätte ich noch eine kleine OT Frage:
Ich möchte dass eine Datei(12345.usw) beim deinstallieren nicht entfernt wird und in z.b. 54321.usw
umbenannt wird wie geht das?
OK das ist erledigt, es klappt, aber kann mir einer beim Problem helfen?
ThielHater
25.12.2008, 10:07
Ich habe da noch eine Anmerkung.. und zwar ist mir das selber erst vor einer Woche oder so aufgefallen. Wenn du den Installationspfad auf die Weise aus der Registry auslesen lässt, liest du sie zur Compiler- und nicht zur Laufzeit aus, dh. wenn der Wert nun "C:\Blubb" heißen sollte, so wird "C:\Blubb" als Standardpfad in den Installer "geschrieben" und das ist ja nicht was du wolltest. Du wolltest ja, dass er den Wert erst beim Start des Installers ausliest. :(
[Setup]
DefaultDirName={code:GetRegistryPath|Alternativer Installationspfad}
[Code*]
function GetRegistryPath(DefaultPath: string): string;
begin
if not RegQueryStringValue(Handle Key (bspw. HKCU oder HKLM), 'Pfad des auszulesenden Key (bspw. Software\Piranha Bytes\Player-Kit)', 'auszulesender Wert (bspw. InstallLocation)', Result) then Result := ExpandConstant(DefaultPath);
end;Blau sind jeweils die Bereiche in denen du was ändern musst (das Sternchen muss weg, ich musste es aufgrund des BBCode so schreiben)^^ ich hoffe damit hat sich das Problem erledigt. :)
Danke dafür, ich werds bei Gelegenheit mal versuchen.
Das Setup hat sich vorerst erledigt...
Es Sei denn jemand hat eine Lösung für meinen anderen Thread.
Die Sind beide für das gleiche Setup.
Frohe Weihnachten:)
ThielHater
25.12.2008, 11:20
Meinst du nen Setup mit Auswahl? Das ist doch nach deiner eigenen Auskunft erledigt.. ;)
Meinst du nen Setup mit Auswahl? Das ist doch nach deiner eigenen Auskunft erledigt.. ;)
Ja das meine ich, das war erledigt, da niemand geantwortet hat und ich gedacht habe dass da niemand drauf antworten wird.
Wenn du da helfen kannst, bitte.:gratz
Wäre schön^^
EDIT: Hab jetzt versucht, aber da kommt immernoch nur "C:\Programme":dnuhr:
[Code*]
function GetRegistryPath(DefaultPath: string): string;
begin
if not RegQueryStringValue(HKEY_LOCAL_MACHINE, 'SOFTWARE\Electronic Arts\Electronic Arts\Crysis', 'InstallLocation', Result) then Result := ExpandConstant(DefaultPath);
end;
ThielHater
25.12.2008, 13:47
Du sollst ja auch das Sternchen oben bei [Code*] wegmachen.. und anstatt HKEY_LOCAL_MACHINE einfach HKLM schreiben. :D
Das andere ist garkein Problem und das "täglich Brot" beim Erstellen von Installern. Lade dir einfach mal diese Dokumentation (http://www.spieleprogrammierer.de/index.php?page=Attachment&attachmentID=559&h=cbff6376ded4805297fb4d391da7c81681a509e9) von Mathias Simmack herunter (die ist wirklich gut und einfach) und les Seite 10-12. ;)
Du sollst ja auch das Sternchen oben bei [Code*] wegmachen.. :D
Hab ich ja.
Das HKLM anstatt HKEY_LOCAL_MACHINE bringt auch keine änderungen.....
ThielHater
25.12.2008, 14:04
Also ich würde HKLM nun auf jeden Fall stehen lassen. ;) Bist du dir auch sicher, dass der Wert, der ausgelesen werden soll, "InstallLocation" heißt?
Also ich würde HKLM nun auf jeden Fall stehen lassen. ;) Bist du dir auch sicher, dass der Wert, der ausgelesen werden soll, "InstallLocation" heißt?
Genau das ist das Problem, da steht nichts von ner Location oder so.....:dnuhr:
ThielHater
25.12.2008, 14:51
Dann macht das ja auch garkeinen Sinn das da anzugeben. §ugly
Dann macht das ja auch garkeinen Sinn das da anzugeben. §ugly
Aber was soll ich dann sonst da angeben?
Wenn ich da nichts hinschreibe kommt ne Fehlermeldung:(
In der datei steht nur
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Electronic Arts\Electronic Arts\Crysis]
[HKEY_LOCAL_MACHINE\SOFTWARE\Electronic Arts\Electronic Arts\Crysis\ergc]
@="FMXFFSTDB27DYEUA57JC"
ThielHater
25.12.2008, 14:57
Kopier einfach mal den Pfad deiner Crysis-Installation in die Zwischenablage, ruf den Registryeditor auf, benutz den Pfad als Suchbegriff und such nur nach "Daten"^^ dann findeste da hoffentlich was vernünftiges. ;)
Hab was interessante gefunden
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\GameUX\GamesToFindO nWindowsUpgrade\{36739348-71B8-4AF6-9D0B-B4036C4DC96E}]
"GDFBinaryPath"="D:\\Programme\\Electronic Arts\\Crytek\\Crysis\\Tools\\VistaEssentials.dll"
"GameInstallPath"="D:\\Programme\\Electronic Arts\\Crytek\\Crysis\\"
Nur ist mir das etwas zu viel^^
EDIT: Ich glaube ich habs hinbekommen.
Aber das sieht halt so komisch aus...
Was anderes finde ich allerdings nicht
ThielHater
25.12.2008, 15:03
Ich würde weitersuchen.. das scheint mir nicht optimal zu sein. :gratz
Naja, das kann man ja später machen, aber jetzt mal zu der Auswahl.
Die PDF ist wirklich gut, danke dafür.
Aber da steht nichts wie ich es mache dass sich die unterschiedlichen Componenten ausschließen:dnuhr:
ThielHater
25.12.2008, 16:00
Also sowas hatte ich auch noch nicht^^ frag doch mal im deutschen Inno Setup Forum (http://www.inno-setup.de/forumdisplay.php?f=17) nach. ;)
so um nochmal auf den Pfad zurückzukommen.
Ich finde nichts anderes.
Bei mir Funktioniert es, bei einem Freund allerdings nicht.:dnuhr:
ThielHater
25.12.2008, 17:37
Weil bei ihm einfach nicht der Wert existiert, der ausgelesen werden soll^^. ;)
Ich hab nun ca. 1 Minute google.de benutzt und bin auf folgenden Pfad gestoßen "HKEY_LOCAL_MACHINE\SOFTWARE\Crytek\Crysis" und als Wert "InstallDir".. wenn das klappt lach ich dich aus.. vorallem, da es meinem Beispiel
HKCU\Software\Publisher\Spielname\Install oder
HKLM\SOFTWARE\Publisher\Spielname\Install ähnelt. :D
Falls das auch nicht gehen sollte: Du könntest als Standardinstallationspfad bspw. {pf}\Crytek\Crysis angeben und eine Abfrage einbauen, ob crysis.exe in dem Verzeichnis existiert^^. Aber probiers erst einmal mit dem Pfad da oben. :)
Ich habs gerade vor 5 Minuten auch gefunden, genau den Selben.
Hab noch etwas de Registry durchforstet.;)
Los, fang an mich auszulachen
Gerade bei mir und nem Freund getestet, bei uns beiden klappts§gnah
Dann wird der wohl richtig sein....
Danke für deine Hilfe:gratz
PS:Crytek ist nicht der Publisher, es ist der Entwickler
Electronic Arts ist der Publisher:o
EDIT: Zur auswahl:
Ist es möglich einzustellen, dass man nur über dieCombobox einstellen kann welche Art der installation ausgeführt werden kann?
Dass dieses Feld zum Manuallen aktivieren gesperrt ist?
ThielHater
25.12.2008, 21:34
Das wusste ich.. also im Ernst. Dann noch viel Glück mit deinen Komponenten.^^ :gratz
Das wusste ich.. also im Ernst. Dann noch viel Glück mit deinen Komponenten.^^ :gratz
Danke:gratz
Hab aber noch ne Frage zur Auswahl.
Ist es möglich einzustellen, dass man nur über dieCombobox einstellen kann welche Art der installation ausgeführt werden kann?
Dass dieses Feld zum Manuallen aktivieren gesperrt ist?
ThielHater
26.12.2008, 01:03
Ja, erstell einfach keine benutzerdefinierte Installation.. warte mal.. könnte man damit nicht auch dein Problem lösen? Kommt auf die Komponenten an, aber bei einem simplen Beispiel könnte es so gehen. ;)
Ja, erstell einfach keine benutzerdefinierte Installation.. warte mal.. könnte man damit nicht auch dein Problem lösen? Kommt auf die Komponenten an, aber bei einem simplen Beispiel könnte es so gehen. ;)
Mit einer Benutzerdefinierten Installation klappt nicht so wie gewollt.
Sie sollen sich ja gegenseitig ausschließen.
Ist 1 aktiviert und man aktiviert 2, wird 1 abgewählt.
Wählt man dann 3 wird 2 abgewählt.
usw.....
Alternative ist dass man das Feld, wo einem die Komponenten gezeigt werden sperrt, dass man alles nurnoch über die ComboBox macht;)
Nur kann ich keines von Beiden^^
ThielHater
26.12.2008, 11:05
Könntest du mal nen Bild vom Installer posten / die Komponenten auflisten? Ich würde mir das gerne mal angucken.. ;)
Klar, wenn dir das Weiterhilft^^
KLICK (http://upload.worldofplayers.de/files/vUnbenannt.PNG)
In der ComboBox steht halt genau das Selbe wie in der Auflistung.
ThielHater
26.12.2008, 12:51
Wie wärs denn, wenn du es so machst:
Installationsroutine => Komponente(n)
Deutsch => Deutsch
Deutsch (erweitert) => Deutsch, englischer Nanosuit
Englisch => Englisch
Aber ich mein, dass ich irgendwo mal gelesen habe, wie man es hinkriegt, dass die eine Komponente die andere ausschließt.. mal nachgucken. ;)
edit:
So.. ich glaube ich habe die Lösung. Verpass den Komponenten "Komplett englisch" und "Komplett deutsch" mal beiden das Flag "exclusive".. das sollte klappen (gefunden in der Inno Setup Hilfe). :D
edit 2:
Achja.. du solltest deine Threads nicht unbedingt ins Unterforum für Pascal-code packen. §ugly
edit:
So.. ich glaube ich habe die Lösung. Verpass den Komponenten "Komplett englisch" und "Komplett deutsch" mal beiden das Flag "exclusive".. das sollte klappen (gefunden in der Inno Setup Hilfe). :D
Jop Damit klappts.
Das musste ich hinter alle drei schreiben;)
Danke für deine Hilfe:gratz
EDIT:
DefaultGroupName so einstellen, dass man die Möglichkeit hat zu sagen, dass man keine Startmenüeintrag haben will.
Das bekomme ich nicht hin.....
ThielHater
26.12.2008, 14:49
Noch ein Tipp: Mach "Deutsch mit Nanosuit" am besten als Unterkomponente von "Komplett Deutsch" und dann bei "Deutsch Nanosuit" das exlcusive-Flag entfernen. ;)
Für dein weiteres Problem kannst du DefaultGroupName bspw. einfach "Crytek\Crysis" setzen (oder wie der richtige Pfad lautet) und lässt einfach die entsprechenden Sachen aus der [Icons]- und [Task]-Sektion weg. AFAIK sollte er dann keinen Ordner im Startmenü erstellen. :)
Gib mir mal bitte dein ISS per PN. :D
Eigendlich hatte ich vor, dass das setup nur entpackt, mehr nicht:dnuhr:
1.)
Noch ein Tipp: Mach "Deutsch mit Nanosuit" am besten als Unterkomponente von "Komplett Deutsch" und dann bei "Deutsch Nanosuit" das exlcusive-Flag entfernen.
Das geht nicht..... es muss installiert werden oder nicht, anders geht das nicht
2)
Gib mir mal bitte dein ISS per PN.
was meinst du damit?
ThielHater
26.12.2008, 17:49
1. Das versteh ich nun nicht^^ du kannst doch Deutsch und Englisch exklusiv setzen und den Nanosuit als Unterkomponente.. es wird ja dann nicht zwangsweise mitinstalliert, wenn man "Deutsch" wählt.
2. Du sollst mir den Inhalt deiner .iss (Inno Setup Skript) Datei per PN geben. ;)
1. Das versteh ich nun nicht^^ du kannst doch Deutsch und Englisch exklusiv setzen und den Nanosuit als Unterkomponente.. es wird ja dann nicht zwangsweise mitinstalliert, wenn man "Deutsch" wählt.
Entweder verstehe ich dich nicht, oder du mich, aber ich befürchte eher dass ich was falsch verstehe.
Es sind 3 unterschiedliche Sprachpacks, da zweifle ich darann dass es klappt wie du es meinst.
Aber du kannst das Setup ja so bearbeiten wie du meinst^^
ThielHater
26.12.2008, 18:21
Also.. so wie ich das verstehe ist "Deutsch mit englischem Nanosuit" einfach "Komplett Deutsch" mit anderen Texturen für den Nanosuit, oder? :dnuhr:
Also.. so wie ich das verstehe ist "Deutsch mit englischem Nanosuit" einfach "Komplett Deutsch" mit anderen Texturen für den Nanosuit, oder? :dnuhr:
Deutsch--->Deutsche Sounds
Deutsch mit Nanosuit--->Deutsche Sounds mit Englischen nanosuit Sounds
Englisch--->Englische Sounds.
Daher geht es halt nicht;)
ThielHater
26.12.2008, 18:39
Wie hört sich ein Nanosuit auf englisch an? Übrigens wüsste ich nun nicht warum es nicht gehen sollte. Du packst in den Ordner "german suit_eng" einfach nur die zusätzlichen Sounds und definierst das als Unterkomponente.. siehe PN. :D
Wie hört sich ein Nanosuit auf englisch an? Übrigens wüsste ich nun nicht warum es nicht gehen sollte. Du packst in den Ordner "german suit_eng" einfach nur die zusätzlichen Sounds und definierst das als Unterkomponente.. siehe PN. :D
Die Sounds sind ja nicht einzeln enthalten, sondern in *.pak Archiven zusammengefasst;)
Ich Teste man die PN, kannst ja vllt noch verbessern, wo du die Info jetzt hast^^
ThielHater
26.12.2008, 19:07
Aber man kann die .pak doch sicherlich entpacken, die nicht nötigen Sounds löschen und eine neue erstellen, die nur die Sounds des englischen Nanosuit enthält, oder frisst Crysis das dann nicht? :) Was auch mögliche wäre, wenn es ein dafür geeignetes Programm gibt, ein .pak Datei während des Setups generieren zu lassen.. aber das ist mir zu experimentell. :( Wenn das erste nicht gehen sollte, werde ich halt wieder die Komponenten und Typen ändern. ;)
Aber man kann die .pak doch sicherlich entpacken, die nicht nötigen Sounds löschen und eine neue erstellen, die nur die Sounds des englischen Nanosuit enthält, oder frisst Crysis das dann nicht? :) Was auch mögliche wäre, wenn es ein dafür geeignetes Programm gibt, ein .pak Datei während des Setups generieren zu lassen.. aber das ist mir zu experimentell. :( Wenn das erste nicht gehen sollte, werde ich halt wieder die Komponenten und Typen ändern. ;)
Keine Ahnung ob Crysis dran was runzumeckern hat, das Archiv kann man auch einfach mit WinRar öffnen, aber der Aufbau der Ordner darin ist sowasvon komliziert und verstrickt, sowas generieren lassen oder so wäre selbstmord;)
Könntest du dann das Setup noch etwas Optimieren?:gratz
Wäre sehr nett
pcblizzard
27.02.2013, 13:36
Also folgendes Problem Ich will den Installationspfad von einem Spiel aus der Registry ausgelesen und habe mich dabei an Beitrag 14 (http://forum.worldofplayers.de/forum/threads/465486-Inno-Setup-Pfad-automatisch-erkennen?p=8052432&viewfull=1#post8052432) gehalten, was sonst auch immer gut geklappt hat nur diesmal gibt es ein Problem, der Schlüsselname besitzt ein Komma oben (') und somit bricht das Kompilieren mit Inno vorher immer ab und ohne Komma oben geht es zwar aber dann findet er das Installationsverzeichnis nicht.
So sieht es aktuell im Script aus:
[Code*]
function GetRegistryPath(DefaultPath: string): string;
begin
if not RegQueryStringValue(HKLM, 'SOFTWARE\BlaBla\BlaBla's Teil 4', 'InstallDir', Result) then Result := ExpandConstant(DefaultPath);
end; (das mit rot markierte ist das Problem"kind".
Gibt es eine Möglichkeit es trotzdem so zu kompilieren, dass das Komma oben vorhanden ist?
Verwendete Inno Setup Version ist 5.5.3 (u).
MfG
PoooMukkel
27.02.2013, 13:58
[Setup]
DefaultDirName={code:GetRegistryPath|Alternativer Installationspfad}
[Code*]
function GetRegistryPath(DefaultPath: string): string;
begin
if not RegQueryStringValue(Handle Key (bspw. HKEY_CURRENT_USER), 'Pfad des auszulesenden Key (bspw. Software\Piranha Bytes\Player-Kit)', 'auszulesender Wert (bspw. InstallLocation)', Result) then Result := ExpandConstant(DefaultPath);
end;Blau sind jeweils die Bereiche in denen du was ändern musst (das Sternchen muss weg, ich musste es aufgrund des BBCode so schreiben)
Ich suche schon den ganzen Tag nach einer funktionierenden und nicht zu schweren Umsetzung, den Installationspfad aus der Registry auslesen zu lassen und trotzdem einen Alternativpfad zu hinterlegen. Hier bin ich doch tatsächlich fündig geworden! Perfekt! Danke! §wink
Powered by vBulletin® Version 4.2.2 Copyright ©2025 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.