mirror of
https://github.com/Flow-Launcher/Flow.Launcher.git
synced 2026-03-11 08:54:32 +00:00
Merge pull request #3197 from Jack251970/hide_uninstallers
Improve uninstaller check function
This commit is contained in:
commit
a0c915e0d9
1 changed files with 56 additions and 6 deletions
|
|
@ -41,9 +41,36 @@ namespace Flow.Launcher.Plugin.Program
|
|||
"uninst000.exe",
|
||||
"uninstall.exe"
|
||||
};
|
||||
// For cases when the uninstaller is named like "Uninstall Program Name.exe"
|
||||
private const string CommonUninstallerPrefix = "uninstall";
|
||||
private const string CommonUninstallerSuffix = ".exe";
|
||||
private static readonly string[] commonUninstallerPrefixs =
|
||||
{
|
||||
"uninstall",//en
|
||||
"卸载",//zh-cn
|
||||
"卸載",//zh-tw
|
||||
"видалити",//uk-UA
|
||||
"удалить",//ru
|
||||
"désinstaller",//fr
|
||||
"アンインストール",//ja
|
||||
"deïnstalleren",//nl
|
||||
"odinstaluj",//pl
|
||||
"afinstallere",//da
|
||||
"deinstallieren",//de
|
||||
"삭제",//ko
|
||||
"деинсталирај",//sr
|
||||
"desinstalar",//pt-pt
|
||||
"desinstalar",//pt-br
|
||||
"desinstalar",//es
|
||||
"desinstalar",//es-419
|
||||
"disinstallare",//it
|
||||
"avinstallere",//nb-NO
|
||||
"odinštalovať",//sk
|
||||
"kaldır",//tr
|
||||
"odinstalovat",//cs
|
||||
"إلغاء التثبيت",//ar
|
||||
"gỡ bỏ",//vi-vn
|
||||
"הסרה"//he
|
||||
};
|
||||
private const string ExeUninstallerSuffix = ".exe";
|
||||
private const string InkUninstallerSuffix = ".lnk";
|
||||
|
||||
static Main()
|
||||
{
|
||||
|
|
@ -96,10 +123,33 @@ namespace Flow.Launcher.Plugin.Program
|
|||
{
|
||||
if (!_settings.HideUninstallers) return true;
|
||||
if (program is not Win32 win32) return true;
|
||||
|
||||
// First check the executable path
|
||||
var fileName = Path.GetFileName(win32.ExecutablePath);
|
||||
return !commonUninstallerNames.Contains(fileName, StringComparer.OrdinalIgnoreCase) &&
|
||||
!(fileName.StartsWith(CommonUninstallerPrefix, StringComparison.OrdinalIgnoreCase) &&
|
||||
fileName.EndsWith(CommonUninstallerSuffix, StringComparison.OrdinalIgnoreCase));
|
||||
// For cases when the uninstaller is named like "uninst.exe"
|
||||
if (commonUninstallerNames.Contains(fileName, StringComparer.OrdinalIgnoreCase)) return false;
|
||||
// For cases when the uninstaller is named like "Uninstall Program Name.exe"
|
||||
foreach (var prefix in commonUninstallerPrefixs)
|
||||
{
|
||||
if (fileName.StartsWith(prefix, StringComparison.OrdinalIgnoreCase) &&
|
||||
fileName.EndsWith(ExeUninstallerSuffix, StringComparison.OrdinalIgnoreCase))
|
||||
return false;
|
||||
}
|
||||
|
||||
// Second check the lnk path
|
||||
if (!string.IsNullOrEmpty(win32.LnkResolvedPath))
|
||||
{
|
||||
var inkFileName = Path.GetFileName(win32.FullPath);
|
||||
// For cases when the uninstaller is named like "Uninstall Program Name.ink"
|
||||
foreach (var prefix in commonUninstallerPrefixs)
|
||||
{
|
||||
if (inkFileName.StartsWith(prefix, StringComparison.OrdinalIgnoreCase) &&
|
||||
inkFileName.EndsWith(InkUninstallerSuffix, StringComparison.OrdinalIgnoreCase))
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public async Task InitAsync(PluginInitContext context)
|
||||
|
|
|
|||
Loading…
Reference in a new issue