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

Inno Setup技术问题:已装同版本应用后,如何右键安装包触发卸载?

实现Inno Setup安装包右键卸载功能

这个需求完全可行,以下是具体实现步骤:

1. 配置卸载程序基础参数

在脚本的[Setup]段中添加必要的卸载配置,确保卸载程序能被系统正确识别:

[Setup]
PrivilegesRequired=admin ; 确保拥有修改注册表的权限
UninstallDir={app} ; 卸载程序与主程序同目录
UninstallDisplayIcon={app}\YourApp.exe ; 指定卸载程序显示的图标

2. 添加右键菜单注册表操作

在脚本的[Code]段中编写代码,实现安装时添加右键菜单、卸载时清理菜单的逻辑:

procedure RegisterUninstallContextMenu;
var
  RegKey: string;
begin
  RegKey := 'Software\Classes\exefile\shell\Uninstall ' + '{#MyAppName}';
  // 创建右键菜单名称项
  RegWriteStringValue(HKEY_LOCAL_MACHINE, RegKey, '', '卸载 {#MyAppName}');
  // 设置菜单对应的执行命令
  RegWriteStringValue(HKEY_LOCAL_MACHINE, RegKey + '\command', '', '"{uninstallexe}"');
end;

procedure UnregisterUninstallContextMenu;
var
  RegKey: string;
begin
  RegKey := 'Software\Classes\exefile\shell\Uninstall ' + '{#MyAppName}';
  // 删除右键菜单相关注册表项
  RegDeleteKeyIncludingSubkeys(HKEY_LOCAL_MACHINE, RegKey);
end;

procedure CurStepChanged(CurStep: TSetupStep);
begin
  // 安装完成后注册右键菜单
  if CurStep = ssPostInstall then
  begin
    RegisterUninstallContextMenu;
  end;
end;

procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
begin
  // 卸载完成后清理右键菜单
  if CurUninstallStep = usPostUninstall then
  begin
    UnregisterUninstallContextMenu;
  end;
end;

3. 关键说明

  • 将{#MyAppName}替换为你的应用实际名称,保证右键菜单显示准确。
  • {uninstallexe}是Inno Setup内置变量,自动指向生成的卸载程序路径;如果需要静默卸载,可在命令后添加 /silent参数。
  • 若你的应用允许非管理员安装,可调整PrivilegesRequired参数,但修改注册表仍需对应权限,需测试兼容性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 09:45:49