Inno Setup在继续之前检查是否安装了WAMP

时间:2017-01-18 07:55:59

标签: registry installer wamp inno-setup wampserver

我正在使用Inno Setup创建我们的安装向导,其中包含一个WAMP安装。但据其他人说,双WAMP安装会损害WAMP本身。所以我需要在继续之前检查是否安装了WAMP。有什么方法可以做到这一点吗?

2 个答案:

答案 0 :(得分:2)

WAMP在安装过程中创建注册表项。安装程序基于Inno Setup。

有两类注册表项:

1个人:

Person p = new Person
{
    Id = int.Parse(dt.Rows[0].Columns["PersonID"]),
    Name = dt.Rows[0].Columns["Name"]),
    Age = int.Parse(dt.Rows[0].Columns["Age"])
};

p.WorkExperiences = new List<Work>();

List<Work> workExperiences = (from row in dt.AsEnumerable()
                             select new Work
                             {
                                 Id = row.Field<int>("WorkID"),
                                 WorkAddress = row.Field<string>("WorkAddress"),
                                 Position = row.Field<string>("Position")
                             }).ToList();

p.WorkExperiences.AddRange(workExperiences);

2默认卸载信息:

DataTable[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

中的路径

这允许我们检查是否安装了WAMP以及安装文件夹中是否存在可执行文件(作为附加检查)。

示例基于WAMP 3.0.6的HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{wampserver64}_is1版本。

如果需要支持InstallLocation版本,则需要进行调整。

64-bit

答案 1 :(得分: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;