首先将版本号写入注册表,以便下次安装时检查
[Registry]
;将安装路径写入注册表
Root: HKCU; Subkey: "SOFTWARE\myprogram\config"; Flags: createvalueifdoesntexist
Root: HKCU; Subkey: "SOFTWARE\myprogram\config"; Flags: uninsdeletekeyifempty
Root: HKCU; Subkey: "SOFTWARE\myprogram\config"; ValueType: string; ValueName: "InstallPath"; ValueData: "{app}"
Root: HKCU; Subkey: "SOFTWARE\myprogram\config"; ValueType: string; ValueName: "Version"; ValueData: "{#MyAppVersion}"
Root: HKCU; Subkey: "SOFTWARE\myprogram\config"; ValueType: dword; ValueName: "VersionNum"; ValueData: "100"
Root: HKCU; Subkey: "SOFTWARE\myprogram\config"; ValueType: string; ValueName: "Release Date"; ValueData: "2018/05/29"
判断是否有相同版本应用已经被安装
[code]
//卸载时执行
procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep);
begin
if CurUninstallStep = usDone then
begin
//删除 {app} 文件夹及其中所有文件
DelTree(ExpandConstant('{app}'), True, True, True);
end;
end;
//初始化时执行
function InitializeSetup(): Boolean;
var
Version: string;
strPath: string;
ResultCode: Integer;
begin
Result:= TRUE;
//read the version
if RegQueryStringValue(HKEY_CURRENT_USER, 'SOFTWARE\myprogram\config',
'Version', Version) then
begin
// Successfully read the value
Version := Format('Exist the version %s,whether uninstall it?',[Version]);
if MsgBox(Version,mbConfirmation,MB_YESNO) = IDYES then
begin
//read the path
if RegQueryStringValue(HKEY_CURRENT_USER, 'SOFTWARE\myprogram\config',
'InstallPath', strPath) then
begin
// Successfully read the value
strPath:= strPath + '\unins000.exe';
Exec(ExpandConstant(strPath), '', '', SW_SHOW,ewWaitUntilTerminated, ResultCode);
end;
end
else
Result:= FALSE;
end;
end;