Uninstall the previous version of YACReader before installing the new one
Some checks failed
Build / Initialization (push) Has been cancelled
Build / Code Format Validation (push) Has been cancelled
Build / Linux (Qt5) (push) Has been cancelled
Build / Linux (Qt6) (push) Has been cancelled
Build / Linux (Qt6 + 7zip) (push) Has been cancelled
Build / macOS (Qt6 Universal) (push) Has been cancelled
Build / macOS (Qt5) (push) Has been cancelled
Build / Windows x64 (Qt5) (push) Has been cancelled
Build / Windows x64 (Qt6) (push) Has been cancelled
Build / Windows ARM64 (Qt6) (push) Has been cancelled
Build / Windows x86 (Qt5) (push) Has been cancelled
Build / Docker amd64 Image (push) Has been cancelled
Build / Docker arm64 Image (push) Has been cancelled
Build / Publish Dev Builds (push) Has been cancelled
Build / Publish Release (push) Has been cancelled

Some users have experience problems when installing the app over an older installation, let's see if this works as expected.
This commit is contained in:
luisangelsm
2025-11-27 21:47:14 +01:00
parent ff65d9cafa
commit e61bd319ac
2 changed files with 110 additions and 0 deletions

View File

@ -1,6 +1,7 @@
[Setup]
DefaultGroupName=YACReader
LanguageDetectionMethod=locale
AppId={{019AC70F-0312-76B8-BD8F-BE9DCBF49E25}
AppName=YACReader
AppVerName=YACReader v{#VERSION}.{#BUILD_NUMBER}
AppVersion={#VERSION}.{#BUILD_NUMBER}
@ -134,6 +135,60 @@ CompileLogMethod=append
var donationPage: TOutputMsgWizardPage;
var URLLabel: TNewStaticText;
function GetUninstallString(): String;
var
sUnInstPath: String;
sUnInstallString: String;
begin
// First try the new AppId-based key
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);
// If not found, try the old AppName-based key (for versions without AppId)
if sUnInstallString = '' then begin
sUnInstPath := 'Software\Microsoft\Windows\CurrentVersion\Uninstall\YACReader_is1';
if not RegQueryStringValue(HKLM, sUnInstPath, 'UninstallString', sUnInstallString) then
RegQueryStringValue(HKCU, sUnInstPath, 'UninstallString', sUnInstallString);
end;
Result := sUnInstallString;
end;
function IsUpgrade(): Boolean;
begin
Result := (GetUninstallString() <> '');
end;
function UnInstallOldVersion(): Integer;
var
sUnInstallString: String;
iResultCode: Integer;
begin
Result := 0;
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;
procedure URLLabelOnClick(Sender: TObject);
var ErrorCode: Integer;
begin

View File

@ -1,6 +1,7 @@
[Setup]
DefaultGroupName=YACReader
LanguageDetectionMethod=locale
AppId={{019AC70F-0312-76B8-BD8F-BE9DCBF49E25}
AppName=YACReader
AppVerName=YACReader v{#VERSION}.{#BUILD_NUMBER}
AppVersion={#VERSION}.{#BUILD_NUMBER}
@ -138,6 +139,60 @@ CompileLogMethod=append
var donationPage: TOutputMsgWizardPage;
var URLLabel: TNewStaticText;
function GetUninstallString(): String;
var
sUnInstPath: String;
sUnInstallString: String;
begin
// First try the new AppId-based key
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);
// If not found, try the old AppName-based key (for versions without AppId)
if sUnInstallString = '' then begin
sUnInstPath := 'Software\Microsoft\Windows\CurrentVersion\Uninstall\YACReader_is1';
if not RegQueryStringValue(HKLM, sUnInstPath, 'UninstallString', sUnInstallString) then
RegQueryStringValue(HKCU, sUnInstPath, 'UninstallString', sUnInstallString);
end;
Result := sUnInstallString;
end;
function IsUpgrade(): Boolean;
begin
Result := (GetUninstallString() <> '');
end;
function UnInstallOldVersion(): Integer;
var
sUnInstallString: String;
iResultCode: Integer;
begin
Result := 0;
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;
procedure URLLabelOnClick(Sender: TObject);
var ErrorCode: Integer;
begin