You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Inno Setup:更新后保留桌面图标位置及避免卸载删除图标

解决Inno Setup更新后桌面图标位置重置问题

要实现更新时保留桌面图标位置,核心是让旧版本卸载程序仅在升级场景下跳过删除桌面图标,同时不影响正常卸载时的图标清理。以下是具体实现方案:

方案一:通过卸载参数控制图标删除

1. 新版本安装时传递卸载参数

在安装脚本的[Code]段中,检测旧版本并执行卸载时添加自定义参数(例如/KeepDesktopIcon):

function InitializeSetup(): Boolean;
var
  OldUninstallPath: String;
  ResultCode: Integer;
begin
  Result := True;
  // 读取旧版本的卸载路径(替换{#MyAppId}为你的应用ID)
  if RegQueryStringValue(HKEY_LOCAL_MACHINE, 'Software\Microsoft\Windows\CurrentVersion\Uninstall\{#MyAppId}_is1', 'UninstallString', OldUninstallPath) then
  begin
    // 执行旧卸载程序并传递保留图标参数
    if Exec(OldUninstallPath, '/KeepDesktopIcon', '', SW_SHOW, ewWaitUntilTerminated, ResultCode) then
    begin
      // 卸载成功后继续安装流程
    end
    else
    begin
      MsgBox('旧版本卸载失败:' + SysErrorMessage(ResultCode), mbError, MB_OK);
      Result := False;
    end;
  end;
end;

2. 卸载时检测参数并跳过图标删除

在脚本的[UninstallCode]段中,添加逻辑判断命令行参数,若存在则跳过桌面图标删除:

// 辅助函数:检查命令行参数是否存在
function CmdLineParamExists(const Param: String): Boolean;
var
  I: Integer;
begin
  Result := False;
  for I := 1 to ParamCount do
  begin
    if CompareText(ParamStr(I), Param) = 0 then
    begin
      Result := True;
      Break;
    end;
  end;
end;

function UninstallInitialize(): Boolean;
var
  DesktopIconPath: String;
begin
  Result := True;
  // 检查是否传递了保留图标参数
  if CmdLineParamExists('/KeepDesktopIcon') then
  begin
    // 获取桌面图标路径(与[Icons]段配置一致)
    DesktopIconPath := ExpandConstant('{autodesktop}\{#APPNAME_Messages}.lnk');
    // 跳过删除桌面图标,保留原有位置
    SetUninstallerOption(uoDeleteFiles, False);
    // 若需保留其他卸载清理逻辑,可单独处理非图标文件的删除
  end;
end;

方案二:简化版图标标记(仅适合特定场景)

如果不需要区分正常卸载和升级卸载,仅希望更新时保留图标,可直接修改[Icons]段添加uninsneveruninstall标志:

[Icons]
Name: "{autodesktop}\{#APPNAME_Messages}"; Filename: "{app}\{#Programm}"; Tasks: desktopicon; Flags: uninsneveruninstall

⚠️ 注意:此方法会导致正常卸载(非升级)时图标也不会被删除,仅适合允许残留图标的场景。

关键说明

  • 确保新旧版本的应用ID({#MyAppId})一致,才能正确检测到旧版本并执行带参数的卸载。
  • 方案一能区分升级和正常卸载场景,是更合理的通用解决方案。

内容的提问来源于stack exchange,提问作者Jens

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 13:16:08