杉宫竹苑工作室

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2215|回复: 0

Inno Setup 安装过程中卸载旧版本方法

[复制链接]
发表于 2015-1-27 21:34:55 | 显示全部楼层 |阅读模式

正式会员享受无限制浏览网站功能和高速网盘下载,赶快加入本站吧!

您需要 登录 才可以下载或查看,没有账号?立即注册

x
Inno Setup 是一个常用的安装制作工具,根据需要我们要对软件进行升级,则需要检测是否存在旧版,存在的话版本是否对应,如果是旧版本则卸载。下面直观给出CODE代码,只需要插入到.ISS中即可,其中的Appname则根据需要修为为您的查询即可。

方法一,先判断,给出提示,再卸载
  1. [Code]
  2. var
  3. ResultStr: String;
  4. Names: TArrayOfString;
  5. B: Boolean;
  6. I: Integer;
  7. S: String;
  8. ErrorCode: Integer;
  9. const AppName ='你的程序名';
  10. function InitializeSetup(): Boolean;
  11. begin
  12.   Result := True;
  13.   if RegGetSubkeyNames(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall', Names) then
  14.   begin
  15.     for I := 0 to GetArrayLength(Names)-1 do
  16.       begin
  17.         S := Names[i];
  18.         SetLength(Names[I], 28);
  19.         if AppName=Names[I] then
  20.         begin
  21.           //注册表中找到了此键
  22.           B := RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\'+S, 'UninstallString', ResultStr)
  23.           ResultStr := RemoveQuotes(ResultStr);
  24.           if B then
  25.           begin
  26.             //MsgBox('您已经安装了旧版本,卸载旧版本后将继续完成安装!', mbInformation, MB_OK);
  27.             Exec(ResultStr, '/VERYSILENT', '', SW_SHOWNORMAL, ewWaitUntilTerminated, ErrorCode);
  28.             Result := False;
  29.           end
  30.         break;
  31.         end
  32.       end;
  33.   end;
  34. end;
复制代码
方法二,直接依据程序名静默卸载
  1. [Code]
  2. procedure InitializeWizard();
  3. var ResultStr:String;
  4.     ResultCode:Integer;
  5. begin
  6.   if RegQueryStringValue(HKLM,'SOFTWARE\Microsoft\Windows\Current\Version\Unistall\你的程序名_is1',
  7.      'UninstallString',ResultStr) then
  8.      begin
  9.      ResultStr :=RemoveQuotes(ResultStr);
  10.      Exec(ResultStr,'/VERYSILENT','',SW_SHOWNORMAL, ewWaitUntilTerminated,ResultCode);
  11.      end;
  12.    end;
复制代码

备注说明:
      1、程序名是在制作安装工具时候的appName,这个名字不能因为版本的变动而改变。
      2、在exec里第二个参数为'/VERYSILENT',是在执行反安装模式的时候是静默模式,用户在不知觉中删掉旧的版本。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|Archiver|SgzyStudio

GMT+8, 2024-5-19 21:54 , Processed in 0.113213 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表