/
githubmirror
/
PowerToys
Обзор
Документация
Войти
/
githubmirror
/
PowerToys
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
src/modules/cmdpal/ext/Microsoft.CmdPal.Ext.Apps/Programs/PackageWrapper.cs
81 строка
3 KB
Michael Jolley
CmdPal: Hide uninstall option for system apps (#48804)
24 июн 2026, 21:52
Не верифицирован
24 июн 2026, 21:52
ada75d0
Код
Авторство
О чём код?
// Copyright (c) Microsoft Corporation // The Microsoft Corporation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. using System; using System.IO; using Windows.ApplicationModel; using Windows.Foundation.Metadata; using Package = Windows.ApplicationModel.Package; namespace Microsoft.CmdPal.Ext.Apps.Programs; public class PackageWrapper : IPackage { public string Name { get; } = string.Empty; public string FullName { get; } = string.Empty; public string FamilyName { get; } = string.Empty; public bool IsFramework { get; } public bool IsDevelopmentMode { get; } public bool IsNonRemovable { get; } public string InstalledLocation { get; } = string.Empty; public PackageWrapper() { } public PackageWrapper(string name, string fullName, string familyName, bool isFramework, bool isDevelopmentMode, string installedLocation, bool isNonRemovable = false) { Name = name; FullName = fullName; FamilyName = familyName; IsFramework = isFramework; IsDevelopmentMode = isDevelopmentMode; InstalledLocation = installedLocation; IsNonRemovable = isNonRemovable; } private static readonly Lazy<bool> IsPackageDotInstallationPathAvailable = new(() => ApiInformation.IsPropertyPresent(typeof(Package).FullName, nameof(Package.InstalledLocation.Path))); public static PackageWrapper GetWrapperFromPackage(Package package) { ArgumentNullException.ThrowIfNull(package); string path; try { path = IsPackageDotInstallationPathAvailable.Value ? GetInstalledPath(package) : package.InstalledLocation.Path; } catch (Exception e) when (e is ArgumentException || e is FileNotFoundException || e is DirectoryNotFoundException) { return new PackageWrapper( package.Id.Name, package.Id.FullName, package.Id.FamilyName, package.IsFramework, package.IsDevelopmentMode, string.Empty, package.SignatureKind == PackageSignatureKind.System); } return new PackageWrapper( package.Id.Name, package.Id.FullName, package.Id.FamilyName, package.IsFramework, package.IsDevelopmentMode, path, package.SignatureKind == PackageSignatureKind.System); } // This is a separate method so the reference to .InstalledPath won't be loaded in API versions which do not support this API (e.g. older then Build 19041) private static string GetInstalledPath(Package package) => package.InstalledLocation.Path; }