|
正式会员享受无限制浏览网站功能和高速网盘下载,赶快加入本站吧!
您需要 登录 才可以下载或查看,没有账号?立即注册
x
Inno Setup 是一个常用的安装制作工具,根据需要我们要对软件进行升级,则需要检测是否存在旧版,存在的话版本是否对应,如果是旧版本则卸载。下面直观给出CODE代码,只需要插入到.ISS中即可,其中的Appname则根据需要修为为您的查询即可。
方法一,先判断,给出提示,再卸载
- [Code]
- var
- ResultStr: String;
- Names: TArrayOfString;
- B: Boolean;
- I: Integer;
- S: String;
- ErrorCode: Integer;
- const AppName ='你的程序名';
- function InitializeSetup(): Boolean;
- begin
- Result := True;
- if RegGetSubkeyNames(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall', Names) then
- begin
- for I := 0 to GetArrayLength(Names)-1 do
- begin
- S := Names[i];
- SetLength(Names[I], 28);
- if AppName=Names[I] then
- begin
- //注册表中找到了此键
- B := RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\'+S, 'UninstallString', ResultStr)
- ResultStr := RemoveQuotes(ResultStr);
- if B then
- begin
- //MsgBox('您已经安装了旧版本,卸载旧版本后将继续完成安装!', mbInformation, MB_OK);
- Exec(ResultStr, '/VERYSILENT', '', SW_SHOWNORMAL, ewWaitUntilTerminated, ErrorCode);
- Result := False;
- end
- break;
- end
- end;
- end;
- end;
复制代码 方法二,直接依据程序名静默卸载
- [Code]
- procedure InitializeWizard();
- var ResultStr:String;
- ResultCode:Integer;
- begin
- if RegQueryStringValue(HKLM,'SOFTWARE\Microsoft\Windows\Current\Version\Unistall\你的程序名_is1',
- 'UninstallString',ResultStr) then
- begin
- ResultStr :=RemoveQuotes(ResultStr);
- Exec(ResultStr,'/VERYSILENT','',SW_SHOWNORMAL, ewWaitUntilTerminated,ResultCode);
- end;
- end;
复制代码
备注说明:
1、程序名是在制作安装工具时候的appName,这个名字不能因为版本的变动而改变。
2、在exec里第二个参数为'/VERYSILENT',是在执行反安装模式的时候是静默模式,用户在不知觉中删掉旧的版本。 |
|