Hi, ich habe mitbekommen, dass hier einige InnoSetup-Profis sind. Im Inno-Setup Forum wollen sie mich nicht (anscheindend weil ich eine gmx-Adresse habe), darum meine Hoffnung dass mir hier wer weiterhelfen kann. Ich habe mir aus den einzelnen Examples einen Installer "zusammenkopiert", der nun soweit funktioniert. Ich kann nur C und C++ aber kein Pascal, darum habe ich bei der Erstellung einige Verständnisschwierigkeiten: Ich habe ja folgende Funktion für den Deinstaller [code] procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep); var i : Integer; ValueNames : TArrayOfString; FileInstallPath : String; begin if (RegGetValueNames(HKEY_LOCAL_MACHINE, ExpandConstant(UNINSTALL_SUBKEY + '\{#ApplicationName}'), ValueNames)) then begin for i := 0 to GetArrayLength(ValueNames) - 1 do begin if (RegQueryStringValue(HKEY_LOCAL_MACHINE, ExpandConstant(UNINSTALL_SUBKEY + '\{#ApplicationName}'), ValueNames[i], FileInstallPath)) then begin if (DeleteFile(FileInstallPath)) then begin RegDeleteValue(HKEY_LOCAL_MACHINE, ExpandConstant(UNINSTALL_SUBKEY + '\{#ApplicationName}'), ValueNames[i]); end; end; end; end; end; [\code] Diese funktioniert wunderbar. Nun möchte ich im Anschluss an die Installation die exe des Programms noch starten. Dies funktioniert ja normalerweise so: [code] [Run] Filename: "{app}\{#AppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(ApplicationName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent [\code] Ich habe nur leider den Pfad nicht, da dieser anhand der Registry-Keys automatisch herausgesucht wurde. In der Uninstallerfunktion steckt er ja in der Variablen: "FileInstallPath", aber kann ich auch unter [RUN] darauf zugreifen? Wenn ja, wie?? Oder ist das wie in C, dass diese Variable nur innerhalb der procedure (=Funktion) gültig ist??
Ich weiß, ich hätte meinen Code anders formatieren sollen. Kann ihn nur nun leider nicht mehr ändern...
ist der pfad nicht in {app} gespeichert oder versteh ich dein Problem nicht
Nein, leider nicht. Der Pfad wird nur temporär über die Registry bestimmt. Und ich weiß nicht, wie ich die Info aus dieser Procedure speichern und in den Run-Befehl übertragen kann. Ich habe mir bereits einen String "path" erstellt, den Pfad in der Procedure abgespeichert, und wollte ihn wie folgt verwenden
1 | [run] |
2 | Filename: path; Description:path; Flags: nowait postinstall skipifsilent |
geht aber nicht :-( Ich denke die Variable path war nur Lokal gespeichert.
Hallo Inno Starter, der Pfad zu Deiner Anwendung ist nach der Installation in der globalen Variablen {app} gespeichert. Diese Variable zeigt immer auf das Installationsverzeichnis, welches Dir während der Installation angezeigt wird. Die Variable zeigt auch dann auf dieses Verzeichnis wenn Du es auf der entsprechenden Seite des Installers geändert hast. Dieser Eintrag Deiner Zeile {#AppExeName} deutet darauf hin, daß Du den Präprozessor benutzt. Bist Du Dir sicher, daß diese Variable auch wirklich Dein Programm enthält? Wie lautet denn die "DestDir" Deiner Exe in der Section [Files]? Poste mal die Zeile. Wenn Du nämlich die Exe nicht nach {app} sondern z.B. nach {app}\bin kopierst, dann müßte Deine Zeile
1 | Filename: "{app}\bin\{#AppExeName}"; Description:.... |
heißen. Lasse mal probeweise alle Schörkel weg und schreibe folgende Zeile rein:
1 | Filename: "{app}\Deine.Exe"; Description:"Programm ausführen"; Flags: nowait postinstall skipifsilent |
Diese Zeile sollte Dein Programm eigentlich starten. Gruß Twinsetter
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.