检查是否安装了 Inno Setup 组件

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

我真正想做的是让 Inno Setup 卸载某个组件(如果在后续运行中未选中该组件)。但是,如果我没记错的话,这在 Inno Setup 中是不可能的(实际上,如果我错了,请纠正我)。

因此,我想创建检查功能来查看是否安装了组件,这样我就可以在后续运行期间隐藏它。我不知道除了

Inno Setup: Selected Components
下的
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\[AppName]_is1
之外还能从哪里获取该信息。

现在的问题是我的

Inno Setup: Selected Components
as,as2,as3,bs,bs2,bs3

如何在不检测
as
as2
的情况下检测
as3

inno-setup pascalscript
1个回答
2
投票

确实,Inno Setup 不支持卸载组件。


对于类似的问题(也许更好),请参阅:
升级时禁用已安装的 Inno Setup 组件


为了检查已安装的组件,我建议您检查是否存在与该组件对应的文件。


无论如何,回答你的实际问题:如果你想扫描

Inno Setup: Selected Components
条目,你可以使用这个功能:

function ItemExistsInList(Item: string; List: string): Boolean;
var
  S: string;
  P: Integer;
begin
  Result := False;
  while (not Result) and (List <> '') do
  begin
    P := Pos(',', List);
    if P > 0 then
    begin
      S := Copy(List, 1, P - 1);
      Delete(List, 1, P);
    end
      else
    begin
      S := List;
      List := '';
    end;
    
    Result := (CompareText(S, Item) = 0);
  end;
end;

请注意,在某些情况下,卸载密钥可能会出现在

HKCU
中(而不是出现在
HKLM
中)。

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