我已经安装了我的程序。但如果我尝试再次安装它,它就会安装并且程序会被替换。
我看到这个问题如果机器上已经安装了应用程序,如何在使用 Inno Setup 安装时显示通知消息?
我可以创建某个注册表项以便检查它并阻止新安装吗?在这个问题中有一些相关信息:如果未安装其他程序,则在 Inno Setup 中跳过安装。
您不需要创建任何注册表项。安装程序已经为卸载程序创建了一个注册表项。你可以检查一下。您提到的问题的答案使用的是同一把钥匙。但您不需要检查版本。只需检查一个存在即可。另外,您还应该检查
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
功能可以对新安装和更新做出不同的响应吗?