AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Inno Setup Datei Existenz überprüfen vor der Installation?

Inno Setup Datei Existenz überprüfen vor der Installation?

Ein Thema von timsen96 · begonnen am 25. Mai 2017 · letzter Beitrag vom 27. Mai 2017
Antwort Antwort
Seite 1 von 2  1 2   
timsen96

Registriert seit: 25. Mai 2017
17 Beiträge
 
#1

AW: Inno Setup Datei Existenz überprüfen vor der Installation?

  Alt 26. Mai 2017, 08:38
Ich habe es mal über die Registry probiert.

[Setup]
DefaultDirName={code:GetRegistryPath}

[Code]
function GetRegistryPath(DefaultPath: string): string;
begin
if not RegQueryStringValue(HKEY_CURRENT_USER, 'Software\Classes\Local Settings\Software\Microsoft\Windows\Shell\MuiCache ', 'TestProgramm', Result) then Result := ExpandConstant(DefaultPath);
end;

Wenn ich dann das Setup ausführe bekomme ich die Meldung: "Interner Fehler: An attempt was made to expand the "app" constant before it was initialized."
  Mit Zitat antworten Zitat
SneakyBagels
(Gast)

n/a Beiträge
 
#2

AW: Inno Setup Datei Existenz überprüfen vor der Installation?

  Alt 26. Mai 2017, 09:46
if not RegQueryStringValue(HKEY_CURRENT_USER, 'Software\Classes\Local Settings\Software\Microsoft\Windows\Shell\MuiCache ', 'TestProgramm', Result) then Result := ExpandConstant(DefaultPath);

1) du holst dir hier den Pfad aus der Registry ("Dateiname") (siehe Code da oben) was schonmal schief geht denn in MultiCache stehen nur abolute Pfade
2) wenn der String nicht in der Registry steht, dann expandierst du DefaultPath wobei DefaultPath = {code:GetRegistryPath} ist ( DefaultDirName={code:GetRegistryPath} )

Das kann nicht funktionieren... Ich werde jetzt eh wieder angemeckert weil ich ja so frech bin und weil man Mimik so schön über eine Internetleitung sehen kann:
aber kopierst du den Code von irgendwo her oder machst du dir selber Gedanken?
Das ist nicht böse gemeint sondern wir müssen ja wenigstens wissen was Sache ist damit man ordentlich helfen kann.

Geändert von SneakyBagels (26. Mai 2017 um 09:55 Uhr)
  Mit Zitat antworten Zitat
timsen96

Registriert seit: 25. Mai 2017
17 Beiträge
 
#3

AW: Inno Setup Datei Existenz überprüfen vor der Installation?

  Alt 26. Mai 2017, 10:16
Wieso denn angemeckert? Ist doch alles gut Ich bin froh das mir jemand überhaupt versucht zu helfen
Danke dafür erstmal!
Ich habe im Internet gesucht und es kopiert aber natürlich mach ich mir selber Gedanken, nur mein Wissen ist noch nicht sehr weit...

In der Registry ist das das einzige was ich finden kann, sonst gibt es keine Einträge. Ich dachte man könnte über den Wert an den Pfad kommen. Aber wenn das nicht funktioniert und es keinen weiteren Eintrag gibt, was kann ich denn dann machen?
  Mit Zitat antworten Zitat
SneakyBagels
(Gast)

n/a Beiträge
 
#4

AW: Inno Setup Datei Existenz überprüfen vor der Installation?

  Alt 26. Mai 2017, 10:48
Zitat:
In der Registry ist das das einzige was ich finden kann, sonst gibt es keine Einträge. Ich dachte man könnte über den Wert an den Pfad kommen.
In Shell\MuiCache ist es leider so, dass der "Name" der Pfad ist und die "Daten" den Dateinamen enthalten.
Es müsste aber andersherum sein, wenn du über den Dateinamen den Pfad auslesen möchtest.

Beispiel:
ein Programm scheibt in die Registry language, das steht in der Spalte Name.
Der Wert ist zum Beispiel de. Wenn ich jetzt Name auslese, erhalte ich de.
Bei Shell\MuiCache steht aber leider in Name der Pfad und in der Spalte Daten der Dateiname. Ergo: braucht man gar nicht erst drin rumzusuchen finde ich.

Zitat:
In der Registry ist das das einzige was ich finden kann, sonst gibt es keine Einträge.
Genau, du. Wer sagt denn, dass andere Nutzer das auch finden?

Dir wird absolut nichts anderes übrig bleiben als direkt den Dialog anzuzeigen damit der Nutzer in das Verzeichnis navigiert.
Diesen ganzen "existiert die Datei und wenn nicht..." kannst du dir sparen.
  Mit Zitat antworten Zitat
bcvs

Registriert seit: 16. Jun 2011
737 Beiträge
 
Delphi 12 Athens
 
#5

AW: Inno Setup Datei Existenz überprüfen vor der Installation?

  Alt 26. Mai 2017, 11:06
2) wenn der String nicht in der Registry steht, dann expandierst du DefaultPath wobei DefaultPath = {code:GetRegistryPath} ist
Nein. DefaultPath ist hier leer. Da hätte man explizit einen Parameter übergeben müssen mit
[Setup]
DefaultDirName={code:GetRegistryPath|Parameter}

GetRegistryPath gibt also einen Leerstring zurück, worauf Innosetup wahrscheinlich das DefaultDirMane auf {app} setzen will, war wiederum zu diesem Zeitpunkt noch nicht bekannt ist.

Also mach entweder meine Lösung aus #23 oder so was:

[Files]
Source: "C:\Quelldatei"; DestDir: {code:GetRegistryPath};

[Code]
function GetRegistryPath(DefaultPath: string): string;
begin
if not RegQueryStringValue(...., result) then
Result := ExpandConstant('{app}'); // jetzt ist es ja bekannt
end;

Wobei man für die Ermittlung des Pfades aus der Registry noch eine funktionierende Lösung finden müsste, wie SneakyBagels schon gesagt hat.
  Mit Zitat antworten Zitat
bcvs

Registriert seit: 16. Jun 2011
737 Beiträge
 
Delphi 12 Athens
 
#6

AW: Inno Setup Datei Existenz überprüfen vor der Installation?

  Alt 26. Mai 2017, 11:23
Noch eine anderer Lösung:

Du musst in deiner Zusatz-Installation nur die AppId auf den selben wert setzen wie in der Hauptinstallation:

[Setup]
AppId=selbe ID wie Hauptinstallation

Dann findet InnoSetup den Installationspfad der Hauptanwendung selbst und du kannst mit {app} darauf zugreifen.
  Mit Zitat antworten Zitat
bcvs

Registriert seit: 16. Jun 2011
737 Beiträge
 
Delphi 12 Athens
 
#7

AW: Inno Setup Datei Existenz überprüfen vor der Installation?

  Alt 26. Mai 2017, 11:49
Und noch was:

Schau dir mal die Preprocessor-Direktiven von Inno an.

Damit kannst du so etwas machen:

[Files]
#ifexist "{app}\myfile.ext"
Filename: "myfile.ext"; DestDir: {app}\Subdir
#else
Filename: "myfile.ext"; DestDir: {app}
#endif

Ist doch genau das, was du wolltest, oder?
  Mit Zitat antworten Zitat
CCRDude

Registriert seit: 9. Jun 2011
678 Beiträge
 
FreePascal / Lazarus
 
#8

AW: Inno Setup Datei Existenz überprüfen vor der Installation?

  Alt 26. Mai 2017, 14:05
[QUOTE=SneakyBagels;1372809]
Zitat:
Woher will er denn die App-ID der Hauptinstallation wissen denn die Hauptinstallation ist eine bezahlte Software für die er nur etwas zusätzlich entwickelt
Aus der Registry, ist immerhin auch der Uninstall-Schlüssel-Name

Das mache ich selber häufig, im Lokalisierungen nachinstallierbar zu machen. Der existierende Pfad ist damit erstmal Vorgabe im Installationspfaddialog, aber wenn der Benutzer trotzdem eigentlich ne andere Installation (etwa ne Portable) aktualisieren will, kann er's trotzdem noch ändern.

Und noch was:
Schau dir mal die Preprocessor-Direktiven von Inno an.
Aus der Hilfe, wie der Name Preprocessor eigentlich schon sagt: "The main purpose of ISPP is to automate compile-time tasks and decrease the probability of typos in your scripts. ".

Es geht ihm aber wohl eher um runtime als compile-time.
  Mit Zitat antworten Zitat
timsen96

Registriert seit: 25. Mai 2017
17 Beiträge
 
#9

AW: Inno Setup Datei Existenz überprüfen vor der Installation?

  Alt 27. Mai 2017, 07:20
Danke euch für die ganze Hilfe!!
Aber so langsam versteh ich garnichts mehr
  Mit Zitat antworten Zitat
SneakyBagels
(Gast)

n/a Beiträge
 
#10

AW: Inno Setup Datei Existenz überprüfen vor der Installation?

  Alt 26. Mai 2017, 13:22
Zitat:
Du musst in deiner Zusatz-Installation nur die AppId auf den selben wert setzen wie in der Hauptinstallation:
Woher will er denn die App-ID der Hauptinstallation wissen denn die Hauptinstallation ist eine bezahlte Software für die er nur etwas zusätzlich entwickelt
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:10 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz