2017-01-18 3 views
1

Ich verwende Inno Setup, um unseren Installationsassistenten zu erstellen, und er enthält eine WAMP-Installation. Aber laut anderen würde die doppelte WAMP-Installation WAMP selbst schaden. Ich muss also prüfen, ob WAMP installiert ist, bevor ich fortfahre. Irgendwelche Möglichkeiten, wie man das macht?Inno Setup überprüfen, ob WAMP installiert ist, bevor Sie fortfahren

+0

* "WAMP oder jedes andere verwandte Programm" * ist ziemlich breit. Es gibt keine generische Möglichkeit, nach einer "Anwendung" zu suchen, sondern nur nach "irgendeinem anderen verwandten Programm" *. Sie müssen eine spezifische Prüfung für jede spezifische Anwendung implementieren. Benennen Sie also bestimmte Anwendungen, nach denen Sie suchen möchten. Und Sie sollten wahrscheinlich für jede Anwendung eine separate Frage stellen. –

+0

@MartinPrikryl Ich habe die Frage bearbeitet. Ich muss jetzt nur noch prüfen, ob WAMP installiert ist. Ich entschuldige mich dafür. –

+0

Könnten Sie bitte ein paar mehr Informationen über WAMP teilen? Z.B. Welche Registrierungseinträge erstellt es, welche ausführbaren Dateien enthält es? Oder wo kann ich es herunterladen (wenn es eine kostenlose oder OpenSource-App ist?) Ich bin mir ziemlich sicher, dass niemand Ihnen die richtige Antwort geben kann, ohne spezifische Informationen über die WAMP-App mit Pfad, 2. Nimm den Pfad und überprüfe, ob es existiert, 3. Prüfe, ob die ausführbare Datei der App im App-Pfad existiert, und vielleicht 4. Prüfe ob dies eine bekannte Version der App ist – RobeN

Antwort

2

WAMP erstellt Registrierungseinträge während des Installationsprozesses. Das Installationsprogramm basiert auf Inno Setup.

Es gibt zwei Klassen von Einträgen in der Registry:

1 Person:

[Registry] 

Root: HKLM64; Subkey: "SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers\"; 
ValueName: "{app}\wampmanager.exe"; ValueType: String; ValueData: "RUNASADMIN"; 
Check: "IsWin64"; MinVersion: 0.0,6.0; Flags: uninsdeletevalue uninsdeletekeyifempty 
Root: HKLM32; Subkey: "SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers\"; 
ValueName: "{app}\wampmanager.exe"; ValueType: String; ValueData: "RUNASADMIN"; 
Check: "Not IsWin64"; MinVersion: 0.0,6.0; Flags: uninsdeletevalue uninsdeletekeyifempty 

2 Standard Deinstallation Informationen:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{wampserver64}_is1 mit Pfad in InstallLocation

Das führt uns, wenn überprüfen können WAMP ist installiert und wenn Executable im Installationsordner vorhanden ist (als zusätzliche Überprüfung).

Beispiel basiert auf 64-bit Version von WAMP 3.0.6.

Es muss angepasst werden, wenn die Unterstützung für beide Versionen 32- and 64-bit erforderlich ist.

[Setup] 
ArchitecturesAllowed=x64 
ArchitecturesInstallIn64BitMode=x64[ 

[Code] 
function CheckWAMPExists(): Boolean; 
var 
    sInstPath: String; 
    sInstallString: String; 
begin 
    Result := False; 
    sInstPath := 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{wampserver64}_is1'; 
    sInstallString := ''; 
    if not RegQueryStringValue(HKLM, sInstPath, 'InstallLocation', sInstallString) then 
    RegQueryStringValue(HKCU, sInstPath, 'InstallLocation', sInstallString); 
    if sInstallString <> '' then begin 
    if FileExists(ExpandConstant(sInstallString) + 'wampmanager.exe') then 
    MsgBox('WAMP found!' + #13#10 + 'Install location:' + #13#10 + sInstallString 
    + #13#10#13#10 + 'Installation will proceed!', mbInformation, MB_OK); 
    Result := True; 
    end 
    else begin 
    MsgBox('WAMP not found! Installation terminated.', mbInformation, MB_OK); 
    end; 
end; 

function InitializeSetup(): Boolean; 
begin 
    Result := CheckWAMPExists; 
end; 
+0

Wenn die obige Antwort Ihr Problem löst, akzeptieren Sie es bitte als Lösung. – RobeN

+0

Entschuldigung, ich habe noch nicht lange eingecheckt. Ich denke, das löst es. Vielen Dank! Sehr geschätzt. –

0

Der einzige Weg, um zu überprüfen, ob ein Programm installiert ist, besteht darin, zu überprüfen, ob der Standardpfad und andere mögliche Pfade ihren Ordner haben.

if DirExists('C:\wamp') 
or DirExists('C:\wamp64') 
or DirExists('C:\Program Files\wamp') 
or DirExists('C:\Program Files\wamp64') 
or DirExists('C:\Program Files(x86)\wamp') 
or DirExists('C:\Program Files(x86)\wamp64') 
or DirExists('{userdocs}\wamp') 
or DirExists('{userdocs}\wamp64') 
or DirExists('{userdocs}\Desktop\wamp') 
or DirExists('{userdocs}\Desktop\wamp64') 
    then begin 
     MsgBox('An installation of WAMP was found.' + #13#10#13#10 + 'Please uninstall any WAMP/XAMPP programs first' + #13#10 + 'or install SpinShot in a different PC.', mbInformation, MB_OK); 
     Result := False; 
    end; 
end; 
+0

Ich glaube, dass dies nicht die beste Lösung ist (Womöglich kann der Benutzer WAMP überall installieren. Können Sie einige Details zu diesem WAMP veröffentlichen? Zum Beispiel, wo Sie das Installationsprogramm herunterladen können - wenn dies Open Source oder Freeware ist? Es ist möglich, dass WAMP Registrierungseinträge erstellt das würde es einfacher machen, danach zu suchen und seine Existenz zu bestätigen. – RobeN

+0

@RobeN hier ist es: http://www.wampserver.com/en/ und soweit ich weiß, bearbeitet es keine Registry bei seiner Installation –

Verwandte Themen