Force uninstall before the installation if version 0.9.27 or older is found.

This commit is contained in:
dolphin6k 2022-01-11 21:22:20 +09:00
parent 88f689c744
commit b23de08927

View file

@ -255,20 +255,71 @@ begin
Result := Path; Result := Path;
end; end;
Procedure ForceUninstallPreviousX86Install(); function GetInstalledVersionString(): String;
var
InstalledVersionString: String;
begin
InstalledVersionString := '';
if not RegQueryStringValue(HKLM, 'SOFTWARE\TuxPaint', 'Version', InstalledVersionString) then
if not RegQueryStringValue(HKCU, 'SOFTWARE\TuxPaint', 'Version', InstalledVersionString) then
if not RegQueryStringValue(HKLM, 'SOFTWARE\WOW6432Node\TuxPaint', 'Version', InstalledVersionString) then
RegQueryStringValue(HKCU, 'SOFTWARE\WOW6432Node\TuxPaint', 'Version', InstalledVersionString);
Result := InstalledVersionString;
end;
function GetUninstallString(): String;
var
UninstallCmdStr: String;
UninstallRegStr: String;
UninstallRegStrWow6432: String;
begin
UninstallRegStr := 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Tux Paint_is1';
UninstallRegStrWow6432 := 'SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\Tux Paint_is1';
UninstallCmdStr := '';
if not RegQueryStringValue(HKLM, UninstallRegStr, 'UninstallString', UninstallCmdStr) then
if not RegQueryStringValue(HKCU, UninstallRegStr, 'UninstallString', UninstallCmdStr) then
if not RegQueryStringValue(HKLM, UninstallRegStrWow6432, 'UninstallString', UninstallCmdStr) then
RegQueryStringValue(HKCU, UninstallRegStrWow6432, 'UninstallString', UninstallCmdStr);
Result := RemoveQuotes(UninstallCmdStr);
end;
function CmdLineParamExists(const Value: string): Boolean;
var
I: Integer;
begin
Result := False;
for I := 1 to ParamCount do
if CompareText(ParamStr(I), Value) = 0 then
begin
Result := True;
Exit;
end;
end;
Procedure ForceUninstallOldInstallation();
var var
ResultCode: Integer; ResultCode: Integer;
InstalledVersion: String;
UninstallCmd: String;
begin begin
if Is64BitInstallMode then InstalledVersion := GetInstalledVersionString();
if InstalledVersion <> '' then
begin begin
if FileExists('C:\Program Files (x86)\TuxPaint\unins000.exe') then if CompareText(InstalledVersion, '0.9.28') < 0 then
begin begin
if MsgBox('Old version will be uninstalled automatically.', mbInformation, MB_OKCANCEL) = IDOK then UninstallCmd := GetUninstallString();
if CmdLineParamExists('/VERYSILENT') = False then
begin begin
Exec('C:\Program Files (x86)\TuxPaint\unins000.exe', '/SILENT', '', SW_SHOW, ewWaitUntilTerminated, ResultCode); if MsgBox('Old version will be uninstalled automatically.', mbInformation, MB_OKCANCEL) = IDOK then
begin
Exec(UninstallCmd, '/SILENT', '', SW_SHOW, ewWaitUntilTerminated, ResultCode);
end
else begin
Abort;
end;
end end
else begin else begin
Abort; Exec(UninstallCmd, '/VERYSILENT', '', SW_SHOW, ewWaitUntilTerminated, ResultCode);
end; end;
end; end;
end; end;
@ -562,7 +613,7 @@ end;
procedure InitializeWizard(); procedure InitializeWizard();
begin begin
begin begin
ForceUninstallPreviousX86Install(); ForceUninstallOldInstallation();
CreateTheWizardPages; CreateTheWizardPages;
end end
end; end;