From d872b794fbe96b2a052bac2e4bde0b0b3a0ff137 Mon Sep 17 00:00:00 2001 From: Dmitriy Vasyura Date: Fri, 6 Feb 2026 02:50:22 -0800 Subject: [PATCH] Avoid overwriting shortcuts during background update if they already exist (#293366) --- build/win32/code.iss | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/build/win32/code.iss b/build/win32/code.iss index e473aa1e761..148b43cee2b 100644 --- a/build/win32/code.iss +++ b/build/win32/code.iss @@ -110,9 +110,9 @@ Source: "appx\{#AppxPackageDll}"; DestDir: "{code:GetDestDir}\{#VersionedResourc #endif [Icons] -Name: "{group}\{#NameLong}"; Filename: "{app}\{#ExeBasename}.exe"; AppUserModelID: "{#AppUserId}" -Name: "{autodesktop}\{#NameLong}"; Filename: "{app}\{#ExeBasename}.exe"; Tasks: desktopicon; AppUserModelID: "{#AppUserId}" -Name: "{userappdata}\Microsoft\Internet Explorer\Quick Launch\{#NameLong}"; Filename: "{app}\{#ExeBasename}.exe"; Tasks: quicklaunchicon; AppUserModelID: "{#AppUserId}" +Name: "{group}\{#NameLong}"; Filename: "{app}\{#ExeBasename}.exe"; AppUserModelID: "{#AppUserId}"; Check: ShouldUpdateShortcut(ExpandConstant('{group}\{#NameLong}.lnk'))) +Name: "{autodesktop}\{#NameLong}"; Filename: "{app}\{#ExeBasename}.exe"; Tasks: desktopicon; AppUserModelID: "{#AppUserId}"; Check: ShouldUpdateShortcut(ExpandConstant('{autodesktop}\{#NameLong}.lnk'))) +Name: "{userappdata}\Microsoft\Internet Explorer\Quick Launch\{#NameLong}"; Filename: "{app}\{#ExeBasename}.exe"; Tasks: quicklaunchicon; AppUserModelID: "{#AppUserId}"; Check: ShouldUpdateShortcut(ExpandConstant('{userappdata}\Microsoft\Internet Explorer\Quick Launch\{#NameLong}.lnk'))) [Run] Filename: "{app}\{#ExeBasename}.exe"; Description: "{cm:LaunchProgram,{#NameLong}}"; Tasks: runcode; Flags: nowait postinstall; Check: ShouldRunAfterUpdate @@ -1448,6 +1448,11 @@ begin Result := FileExists(ExpandConstant('{param:sessionend}')) end; +function ShouldUpdateShortcut(Path: String): Boolean; +begin + Result := not (IsBackgroundUpdate() and FileExists(Path)); +end; + function ShouldRunAfterUpdate(): Boolean; begin if IsBackgroundUpdate() then