当应用程序已通过 Inno Setup 安装时如何阻止安装?

问题描述 投票:0回答:1

我已经安装了我的程序。但如果我尝试再次安装它,它就会安装并且程序会被替换。

我看到这个问题如果机器上已经安装了应用程序,如何在使用 Inno Setup 安装时显示通知消息?

我可以创建某个注册表项以便检查它并阻止新安装吗?在这个问题中有一些相关信息:如果未安装其他程序,则在 Inno Setup 中跳过安装

inno-setup
1个回答
11
投票

您不需要创建任何注册表项。安装程序已经为卸载程序创建了一个注册表项。你可以检查一下。您提到的问题的答案使用的是同一把钥匙。但您不需要检查版本。只需检查一个存在即可。另外,您还应该检查

HKEY_LOCAL_MACHINE
HKEY_CURRENT_USER

#define AppId "myapp"

[Setup]
AppId={#AppId}

[Code]

function InitializeSetup(): Boolean;
begin
  Result := True;
  if RegKeyExists(HKEY_LOCAL_MACHINE,
       'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{#AppId}_is1') or
     RegKeyExists(HKEY_CURRENT_USER,
       'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{#AppId}_is1') then
  begin
    MsgBox('The application is installed already.', mbInformation, MB_OK);
    Result := False;
  end;
end;


或者只是重用

Inno Setup 中的 
IsUpgrade 功能可以对新安装和更新做出不同的响应吗?

© www.soinside.com 2019 - 2024. All rights reserved.