Daha önce silmiş uygulamalarımızın (MSIX Packaged olanların) kaltıntıları
Ardından isteğinize bağlı olarak daha önce kullanmadıklarınızı silebilir veya .exe'si duruyosa nasıl Process sınıfı ile çalıştırabileceğinizi göstereceğim.
Hazırsanız:
Ben yine geçenki gibi size gösterme amaçlı ConsoleApp 4.8.1 açıyorum:
Önce uygulamaları listeleyelim:
DİKKAT: Eğer listelenmeyen uygulamalar varsa, projeyi x64 tabanlı yaparsanız düzelecektir.
Ufak dokunuşlar (ufacık)
Son hâli:
İyi günler ve iyi çalışmalar dilerim!
shell:appsfolder
veya %ProgramFiles%
\WindowsApps klasöründe durabiliyor. Bunu silmek veya açmak için yapmamız gerekenleri göstereceğim.Ardından isteğinize bağlı olarak daha önce kullanmadıklarınızı silebilir veya .exe'si duruyosa nasıl Process sınıfı ile çalıştırabileceğinizi göstereceğim.
Hazırsanız:
Ben yine geçenki gibi size gösterme amaçlı ConsoleApp 4.8.1 açıyorum:
Önce uygulamaları listeleyelim:
Ufak dokunuşlar (ufacık)
Son hâli:
C#:
using System.Collections.Generic;
using System.Diagnostics;
using System;
namespace AppsFolderHelper
{
internal class Program
{
static void Main(string[] __)
{
Console.Title = "- Reis Production Apps Folder Helper -";
Console.WriteLine($"|{new string('-', 60)}|\n" +
"| Bütün kullanıcılar için indirilmiş uygulamalar |\n" +
$"|{new string('-', 60)}|");
int index = 1;
var apps = new List<string>();
var process = Process.Start(PowerShell("Get-AppxPackage -AllUsers | Select-Object -ExpandProperty Name"));
// Sadece kaldırılabilir olanlar için: Get-AppxPackage | Where-Object { $_.SignatureKind -eq "Store" -and $_.IsFramework -eq $false }
while (!process.StandardOutput.EndOfStream)
{
var line = process.StandardOutput.ReadLine();
Console.WriteLine($"| [{index}] - {line}");
apps.Add(line);
index++;
}
Console.ForegroundColor = ConsoleColor.DarkGreen;
Console.Write($"|{new string('-', 60)}|\n" +
"| S: Sil, O: Olmayanları listele, C: Çalıştır: ");
bool run = true;
while (run)
{
switch (Console.ReadKey(intercept: true).Key)
{
case ConsoleKey.S:
Console.WriteLine($"Sil\n|{new string('-', 60)}|");
run = false;
break;
case ConsoleKey.O:
Console.WriteLine("Olmayanları listele\n" +
$"|{new string('-', 60)}|\n" +
"| Olmayan uygulamalar listeleniyor...\n" +
$"|{new string('-', 60)}|");
var nonExistentApps = ListNonExistentApps();
// Devamı sizde :D
Console.ReadKey();
run = false;
return;
case ConsoleKey.C:
Console.Write("Çalıştır\n" +
$"|{new string('-', 60)}|\n" +
"| Çalıştırmak için bir uygulama seçiniz: ");
if (int.TryParse(Console.ReadLine(), out int ind) && ind > 0 && ind <= apps.Count)
RunApp(apps[ind - 1]);
run = false;
break;
}
}
Console.ResetColor();
Console.Write("| Silinecek uygulama indeksini giriniz (1'den başlayarak): ");
if (int.TryParse(Console.ReadLine(), out int i) && i > 0 && i <= apps.Count)
DeleteApp(apps[i - 1]);
else throw new ArgumentOutOfRangeException(nameof(i), "Geçersiz uygulama indeksi girildi.");
Console.ReadKey();
}
private static List<string> ListNonExistentApps()
{
int index = 1;
var nonExistentApps = new List<string>();
Console.WriteLine("| Olmayan uygulamalar:");
var process = Process.Start(PowerShell("Get-AppxPackage | Where-Object { !$_.InstallLocation } | Select-Object -ExpandProperty Name"));
/*
# Kaldırılmış ama kaydı kalmış uygulamalar
Get-AppxPackage | Where-Object { $_.Status -eq "Deleted" }
# Provisioned paketleri listele
Get-AppxProvisionedPackage -Online | Where-Object { $_.InstallLocation -eq $null }
*/
if (!process.StandardOutput.EndOfStream)
while (!process.StandardOutput.EndOfStream)
{
var app = process.StandardOutput.ReadLine();
Console.WriteLine($"| [{index}] - {app}");
nonExistentApps.Add(app);
index++;
}
else
Console.WriteLine("| Hiç olmayan uygulama bulunamadı.\n" +
$"|{new string('-', 60)}|");
return nonExistentApps;
}
private static ProcessStartInfo PowerShell(string args) => new ProcessStartInfo
{
Verb = "runas",
Arguments = args,
FileName = "powershell",
RedirectStandardOutput = true,
UseShellExecute = false,
CreateNoWindow = true
};
private static void RunApp(string appName)
{
if (string.IsNullOrEmpty(appName))
throw new ArgumentNullException(nameof(appName), "Uygulama adı boş olamaz.");
string command = $@"
$package = Get-AppxPackage -Name '*{appName}*' | Select-Object -First 1
if ($package) {{
$familyName = $package.PackageFamilyName
explorer ""shell:appsFolder\$familyName!App""
}} else {{
Write-Output 'Uygulama bulunamadı'
}}";
var psi = new ProcessStartInfo
{
FileName = "powershell.exe",
Arguments = $"-NoProfile -ExecutionPolicy Bypass -Command \"{command}\"",
RedirectStandardOutput = true,
UseShellExecute = false,
CreateNoWindow = true
};
using (var process = Process.Start(psi))
{
string output = process.StandardOutput.ReadToEnd();
Console.WriteLine($"| Çıktı: {output.Trim()}");
}
Console.WriteLine($"| Uygulama '{appName}' başlatma işlemi tamamlandı.\n" +
$"|{new string('-', 60)}|");
}
private static void DeleteApp(string appName)
{
if (string.IsNullOrEmpty(appName)) throw new ArgumentNullException(nameof(appName), "Uygulama adı boş olamaz.");
//Process.Start(PowerShell($"Remove-AppxPackage -Package {appName}")).WaitForExit();
Console.Write($"| Uygulama '{appName}' başarıyla silindi.\n" +
$"|{new string('-', 60)}|");
}
}
}
İyi günler ve iyi çalışmalar dilerim!