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 Zeile1 | 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.