2017-01-18 16 views
1

Inno Setup을 사용하여 설치 마법사를 만들고 WAMP 설치가 포함되어 있습니다. 그러나 다른 것들에 따르면, 이중 WAMP 설치는 WAMP 그 자체를 해칠 것입니다. 그래서 진행하기 전에 WAMP가 설치되어 있는지 확인해야합니다. 이 작업을 수행하는 방법은 무엇입니까?Inno 계속 진행하기 전에 WAMP가 설치되어 있는지 확인하십시오.

+0

* "WAMP 또는 기타 관련 프로그램"*은 매우 광범위합니다. * "다른 모든 관련 프로그램"*에 대해서만 허용되는 "응용 프로그램"을 확인하는 일반적인 방법은 없습니다. 특정 응용 프로그램마다 특정 검사를 구현해야합니다. 확인할 응용 프로그램의 이름을 지정하십시오. 그리고 아마도 각 응용 프로그램에 대해 별도의 질문을해야합니다. –

+0

@ MartinPrikryl 나는 질문을 편집했다. 이제 WAMP가 설치되었는지 확인해야합니다. 나는 그것에 대해 사과한다. –

+0

WAMP에 대해 더 많은 정보를 알려주십시오. 예 : 어떤 레지스트리 항목을 만들지, 어떤 실행 파일에 포함되어 있습니까? 아니면 어디에서 다운로드 할 수 있습니까? (무료 또는 OpenSource 앱인 경우 WAMP 앱에 대한 특정 정보가 없으면 아무도 올바른 답을 줄 수 없습니다.) 내가 수행 할 작업은 다음과 같습니다. 1. 레지스트리 항목 확인 2. 경로를 가져 와서 존재하는지 확인하십시오. 3. 앱 실행 파일이 앱 경로에 있는지 확인하십시오. 4. 앱의 알려진 버전인지 확인하십시오. – RobeN

답변

2

WAMP는 설치 프로세스 중에 레지스트리 항목을 만듭니다. 인스톨러는 Inno Setup을 기반으로합니다.

은 레지스트리 항목의 2 종류가 있습니다

1 개인 :

[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 기본 제거 정보 :

경로

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{wampserver64}_is1

InstallLocation에서 우리가 있는지 확인 할 수 있습니다 WAMP가 설치되어 있고 실행 파일이 설치 폴더에있는 경우 (추가 확인).

예제는 64-bit WAMP 3.0.6 버전을 기반으로합니다.

32- and 64-bit 버전을 모두 지원해야하는 경우 조정해야합니다.

[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

위의 대답으로 문제가 해결되면 해결책으로 받아 들여주십시오. – RobeN

+0

죄송합니다. 잠시 동안 체크인하지 않았습니다. 나는 이것이 그것을 해결한다고 생각한다. 감사! 매우 감사. –

0

프로그램이 설치되어 있는지 확인하는 유일한 방법은 기본 경로와 다른 가능한 경로에 해당 폴더가 있는지 확인하는 것입니다.

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

이것이 최선의 해결책은 아닌 것 같습니다. (아마도) 사용자가 WAMP를 어디서나 설치할 수 있기 때문에 모든 디스크와 모든 디렉토리를 검사해야합니다.이 WAMP에 대한 세부 정보를 공유 할 수 있습니까? 예 : 설치 프로그램을 다운로드 할 위치 - 오픈 소스 또는 프리웨어 인 경우 WAMP가 레지스트리 항목을 만듭니다 그게 더 쉽게보고 그것을 확인하고 그것의 존재를 확인합니다. – RobeN

+0

@RobeN 여기 그것이 있습니다 : http://www.wampserver.com/en/ 그리고 내가 아는 한 그것은 설치시 레지스트리를 편집하지 않습니다 –