123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- [Code]
- { ///////////////////////////////////////////////////////////////////// }
- function GetUninstallString(): String;
- var
- sUnInstPath: String;
- sUnInstallString: String;
- begin
- sUnInstPath := ExpandConstant('Software\Microsoft\Windows\CurrentVersion\Uninstall\{#emit SetupSetting("AppId")}_is1');
- sUnInstallString := '';
- if not RegQueryStringValue(HKLM, sUnInstPath, 'UninstallString', sUnInstallString) then
- RegQueryStringValue(HKCU, sUnInstPath, 'UninstallString', sUnInstallString);
- Result := sUnInstallString;
- end;
- { ///////////////////////////////////////////////////////////////////// }
- function IsUpgrade(): Boolean;
- begin
- Result := (GetUninstallString() <> '');
- end;
- { ///////////////////////////////////////////////////////////////////// }
- function UnInstallOldVersion(): Integer;
- var
- sUnInstallString: String;
- iResultCode: Integer;
- begin
- { Return Values: }
- { 1 - uninstall string is empty }
- { 2 - error executing the UnInstallString }
- { 3 - successfully executed the UnInstallString }
- { default return value }
- Result := 0;
- { get the uninstall string of the old app }
- sUnInstallString := GetUninstallString();
- if sUnInstallString <> '' then begin
- sUnInstallString := RemoveQuotes(sUnInstallString);
- if Exec(sUnInstallString, '/SILENT /NORESTART /SUPPRESSMSGBOXES','', SW_HIDE, ewWaitUntilTerminated, iResultCode) then
- Result := 3
- else
- Result := 2;
- end else
- Result := 1;
- end;
- { ///////////////////////////////////////////////////////////////////// }
- procedure CurStepChanged(CurStep: TSetupStep);
- begin
- if (CurStep=ssInstall) then
- begin
- if (IsUpgrade()) then
- begin
- UnInstallOldVersion();
- end;
- end;
- end;
|