2017-01-18 6 views
1

Inno Setupを使用してインストールウィザードを作成していて、その中にWAMPインストールが含まれています。しかし、他のものによれば、WAMPの2倍の設置はWAMPそのものに害を及ぼします。だから、私はWAMPがインストールされているかどうかを確認してから作業を進める必要があります。どのようにこれを行うにはどのように?Innoセットアップを続行する前にWAMPがインストールされていることを確認します

+0

*「WAMPまたは他の関連プログラム」*はかなり広いです。 * "他の関連するプログラム" *だけを許可して、 "アプリケーション"をチェックする一般的な方法はありません。特定のアプリケーションごとに特定のチェックを実装する必要があります。チェックしたい特定のアプリケーションの名前をつけてください。おそらく、それぞれのアプリケーションごとに別の質問をするべきでしょう。 –

+0

@ MartinPrikryl私は質問を編集しました。 WAMPがインストールされているかどうかを確認する必要があります。私はそれについてお詫び申し上げます。 –

+0

WAMPに関するさらに詳しい情報をお待ちしていますか?例えば。作成するレジストリエントリ、実行可能ファイルにはどのようなものがありますか?どこにダウンロードすればいいですか(無料であればOpenSourceアプリですか?WAMPアプリに関する特定の情報なしで誰もあなたに適切な答えを与えることはできません) 私は何をしますか? 2.パスをとり、存在するかどうかを確認する3.アプリの実行可能ファイルがアプリパスに存在するかどうかをチェックし、おそらく4.アプリの既知のバージョンであることを確認する – RobeN

答えて

2

インストールプロセス中にレジストリエントリが作成されます。インストーラは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がインストールされていて、実行ファイルがインストールフォルダにある場合(追加チェックとして)。

例は、WAMP 3.0.6の64-bitバージョンに基づいています。

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/そして私が知る限り、インストール時にレジストリを編集しません。 –

関連する問題