deadmoon 2 anni fa
parent
commit
7a2f3ff287
45 ha cambiato i file con 4565 aggiunte e 4400 eliminazioni
  1. 1 0
      Optimizer/Controls/AppCard.cs
  2. 1 1
      Optimizer/Controls/MoonTip.cs
  3. 4293 4296
      Optimizer/Forms/MainForm.Designer.cs
  4. 79 45
      Optimizer/Forms/MainForm.cs
  5. 1 1
      Optimizer/Forms/MainForm.resx
  6. 22 20
      Optimizer/Forms/SplashForm.Designer.cs
  7. 6 0
      Optimizer/Optimizer.csproj
  8. 5 3
      Optimizer/Options.cs
  9. 1 1
      Optimizer/Program.cs
  10. 65 4
      Optimizer/Properties/Resources.Designer.cs
  11. 18 0
      Optimizer/Properties/Resources.resx
  12. BIN
      Optimizer/Resources/Assets/amber.png
  13. BIN
      Optimizer/Resources/Assets/amethyst.png
  14. BIN
      Optimizer/Resources/Assets/azurite.png
  15. BIN
      Optimizer/Resources/Assets/bannerAmber.png
  16. BIN
      Optimizer/Resources/Assets/bannerAmethyst.png
  17. BIN
      Optimizer/Resources/Assets/bannerAzurite.png
  18. BIN
      Optimizer/Resources/Assets/bannerJade.png
  19. BIN
      Optimizer/Resources/Assets/bannerRuby.png
  20. BIN
      Optimizer/Resources/Assets/bannerSilver.png
  21. BIN
      Optimizer/Resources/Assets/jade.png
  22. BIN
      Optimizer/Resources/Assets/ruby.png
  23. BIN
      Optimizer/Resources/Assets/silver.png
  24. 2 1
      Optimizer/Resources/i18n/AR.json
  25. 2 1
      Optimizer/Resources/i18n/CN.json
  26. 2 1
      Optimizer/Resources/i18n/CZ.json
  27. 2 1
      Optimizer/Resources/i18n/DE.json
  28. 2 1
      Optimizer/Resources/i18n/EL.json
  29. 2 1
      Optimizer/Resources/i18n/EN.json
  30. 2 1
      Optimizer/Resources/i18n/ES.json
  31. 2 1
      Optimizer/Resources/i18n/FR.json
  32. 2 1
      Optimizer/Resources/i18n/HU.json
  33. 2 1
      Optimizer/Resources/i18n/IT.json
  34. 2 1
      Optimizer/Resources/i18n/KO.json
  35. 2 1
      Optimizer/Resources/i18n/KU.json
  36. 2 1
      Optimizer/Resources/i18n/PL.json
  37. 2 1
      Optimizer/Resources/i18n/PT.json
  38. 2 1
      Optimizer/Resources/i18n/RO.json
  39. 2 1
      Optimizer/Resources/i18n/RU.json
  40. 2 1
      Optimizer/Resources/i18n/TR.json
  41. 2 1
      Optimizer/Resources/i18n/TW.json
  42. 1 0
      Optimizer/SilentConfig.cs
  43. 16 0
      Optimizer/SilentOps.cs
  44. 15 11
      Optimizer/UWPHelper.cs
  45. 5 0
      Optimizer/Utilities.cs

+ 1 - 0
Optimizer/Controls/AppCard.cs

@@ -1,4 +1,5 @@
 using System.Windows.Forms;
+using System.Diagnostics;
 
 namespace Optimizer
 {

+ 1 - 1
Optimizer/Controls/MoonTip.cs

@@ -40,7 +40,7 @@ namespace Optimizer
 
             g.FillRectangle(b, e.Bounds);
 
-            g.DrawRectangle(new Pen(Options.ForegroundColor, 1), new Rectangle(e.Bounds.X, e.Bounds.Y,
+            g.DrawRectangle(new Pen(Color.FromArgb(55, 55, 55), 1), new Rectangle(e.Bounds.X, e.Bounds.Y,
                 e.Bounds.Width - 1, e.Bounds.Height - 1));
 
 

File diff suppressed because it is too large
+ 4293 - 4296
Optimizer/Forms/MainForm.Designer.cs


+ 79 - 45
Optimizer/Forms/MainForm.cs

@@ -30,7 +30,7 @@ namespace Optimizer
         List<string> _hostsEntries = new List<string>();
         List<string> _customCommands = new List<string>();
         List<string> _desktopItems = new List<string>();
-        List<string> _modernApps = new List<string>();
+        Dictionary<string, string> _modernApps = new Dictionary<string, string>();
 
         bool _trayMenu = false;
 
@@ -98,7 +98,6 @@ namespace Optimizer
 
         UpdateForm _updateForm;
 
-        // TESTDPI
         int DPI_PREFERENCE;
 
         private string NewDownloadLink(string latestVersion)
@@ -250,6 +249,7 @@ namespace Optimizer
             widgetsSw.ToggleClicked += new EventHandler(WidgetsSw_Click);
             smallerTaskbarSw.ToggleClicked += new EventHandler(SmallerTaskbarSw_Click);
             chatSw.ToggleClicked += new EventHandler(chatSw_Click);
+            stickersSw.ToggleClicked += new EventHandler(StickersSw_ToggleClicked);
             classicRibbonSw.ToggleClicked += new EventHandler(ClassicRibbonSw_Click);
             classicContextSw.ToggleClicked += new EventHandler(ClassicContextSw_Click);
             ffTelemetrySw.ToggleClicked += new EventHandler(FfTelemetrySw_ToggleClicked);
@@ -268,6 +268,19 @@ namespace Optimizer
             AddOwnerB.ToggleClicked += AddOwnerB_ToggleClicked;
         }
 
+        private void StickersSw_ToggleClicked(object sender, EventArgs e)
+        {
+            if (stickersSw.ToggleChecked)
+            {
+                Optimize.DisableStickers();
+            }
+            else
+            {
+                Optimize.EnableStickers();
+            }
+            Options.CurrentOptions.DisableStickers = stickersSw.ToggleChecked;
+        }
+
         private void TpmSw_ToggleClicked(object sender, EventArgs e)
         {
             if (tpmSw.ToggleChecked)
@@ -480,6 +493,7 @@ namespace Optimizer
             helpBox.SetToolTip(snapAssistSw.Label, Options.TranslationList["snapAssistTip"].ToString());
             helpBox.SetToolTip(widgetsSw.Label, Options.TranslationList["widgetsTip"].ToString());
             helpBox.SetToolTip(chatSw.Label, Options.TranslationList["chatTip"].ToString());
+            helpBox.SetToolTip(stickersSw.Label, Options.TranslationList["stickersTip"].ToString());
             helpBox.SetToolTip(smallerTaskbarSw.Label, Options.TranslationList["smallerTaskbarTip"].ToString());
             helpBox.SetToolTip(classicRibbonSw.Label, Options.TranslationList["classicRibbonTip"].ToString());
             helpBox.SetToolTip(classicContextSw.Label, Options.TranslationList["classicContextTip"].ToString());
@@ -667,7 +681,7 @@ namespace Optimizer
             ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;
 
             // initial states
-            chkOnlyRemovable.Checked = true;
+            
             checkDefaultIcon.Checked = true;
             radioProgram.Checked = true;
             radioTop.Checked = true;
@@ -710,7 +724,7 @@ namespace Optimizer
 
                 if (!disableUWPApps)
                 {
-                    GetModernApps(false);
+                    chkOnlyRemovable.Checked = true;
                 }
                 else
                 {
@@ -729,7 +743,7 @@ namespace Optimizer
 
                 if (!disableUWPApps)
                 {
-                    GetModernApps(false);
+                    chkOnlyRemovable.Checked = true;
                 }
                 else
                 {
@@ -753,7 +767,7 @@ namespace Optimizer
 
                 if (!disableUWPApps)
                 {
-                    GetModernApps(false);
+                    chkOnlyRemovable.Checked = true;
                 }
                 else
                 {
@@ -2095,6 +2109,7 @@ namespace Optimizer
             snapAssistSw.ToggleChecked = Options.CurrentOptions.DisableSnapAssist;
             widgetsSw.ToggleChecked = Options.CurrentOptions.DisableWidgets;
             chatSw.ToggleChecked = Options.CurrentOptions.DisableChat;
+            stickersSw.ToggleChecked = Options.CurrentOptions.DisableStickers;
             smallerTaskbarSw.ToggleChecked = Options.CurrentOptions.TaskbarSmaller;
             classicRibbonSw.ToggleChecked = Options.CurrentOptions.ClassicRibbon;
             classicContextSw.ToggleChecked = Options.CurrentOptions.ClassicMenu;
@@ -2167,67 +2182,86 @@ namespace Optimizer
         {
             uninstallModernAppsButton.Enabled = false;
             refreshModernAppsButton.Enabled = false;
-            listModernApps.Enabled = false;
-
-            listModernApps.Items.Clear();
+           
+            panelUwp.Controls.Clear();
             _modernApps = UWPHelper.GetUWPApps(showAll);
 
-            foreach (string x in _modernApps)
+            AppCard appCard;
+            FileInfo pngTmp;
+
+            foreach (var x in _modernApps)
             {
-                listModernApps.Items.Add(x);
+               
+                appCard = new AppCard();
+                appCard.AutoSize = true;
+                appCard.Anchor = AnchorStyles.None;
+                appCard.Anchor = AnchorStyles.Top | AnchorStyles.Left;
+                appCard.appTitle.Text = x.Key;
+                appCard.appImage.SizeMode = PictureBoxSizeMode.Zoom;
+
+                // gets largest picture
+                try
+                {
+                    pngTmp = new DirectoryInfo(x.Value)
+                    .EnumerateFiles("*.png", SearchOption.AllDirectories)
+                    .OrderByDescending(f => f.Length)
+                    .FirstOrDefault();
+                }
+                catch
+                {
+                    pngTmp = null;
+                }
+
+                if (pngTmp != null) appCard.appImage.Image = Image.FromFile(pngTmp.FullName);
+
+                appCard.Location = new Point(0, panelUwp.Controls.Count * (DPI_PREFERENCE / 3));
+                panelUwp.Controls.Add(appCard);
+                
             }
 
             uninstallModernAppsButton.Enabled = true;
             refreshModernAppsButton.Enabled = true;
-            listModernApps.Enabled = true;
-
-            if (_modernApps.Count > 0) listModernApps.SelectedIndex = 0;
         }
 
         private async void UninstallModernApps()
         {
-            string selectedApps = string.Empty;
+            List<string> selectedApps = new List<string>();
 
-            if (listModernApps.CheckedItems.Count > 0)
+            foreach (Control c in Utilities.GetSelfAndChildrenRecursive(panelUwp))
             {
-                foreach (string x in listModernApps.CheckedItems)
+                //if ((c.Name == "chkSelectAllModernApps") || (c.Name == "chkOnlyRemovable")) continue;
+                if (c is MoonCheck && ((MoonCheck)c).Checked)
                 {
-                    if (string.IsNullOrEmpty(selectedApps))
-                    {
-                        selectedApps = x;
-                    }
-                    else
-                    {
-                        selectedApps += Environment.NewLine + x;
-                    }
+                    selectedApps.Add(c.Text);
                 }
+            }
 
-                if (MessageBox.Show(_removeModernAppsMessage + "\n\n" + selectedApps, "Optimizer", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
-                {
-                    uninstallModernAppsButton.Enabled = false;
-                    refreshModernAppsButton.Enabled = false;
-                    listModernApps.Enabled = false;
+            if (selectedApps.Count <= 0) return;
 
-                    bool errorOccured = false;
-                    string failedApps = string.Empty;
+            if (MessageBox.Show(_removeModernAppsMessage + "\n\n" + string.Join(Environment.NewLine, selectedApps), "Optimizer", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
+            {
+                uninstallModernAppsButton.Enabled = false;
+                refreshModernAppsButton.Enabled = false;
 
-                    foreach (string app in listModernApps.CheckedItems)
-                    {
-                        await Task.Run(() => errorOccured = UWPHelper.UninstallUWPApp(app));
+                bool errorOccured = false;
+                string failedApps = string.Empty;
 
-                        if (errorOccured)
-                        {
-                            failedApps += Environment.NewLine + app;
-                        }
-                    }
+                foreach (string app in selectedApps)
+                { 
+                    await Task.Run(() => errorOccured = UWPHelper.UninstallUWPApp(app));
 
-                    if (!string.IsNullOrEmpty(failedApps))
+                    if (errorOccured)
                     {
-                        MessageBox.Show(_errorModernAppsMessage + failedApps, "Optimizer", MessageBoxButtons.OK, MessageBoxIcon.Information);
+                        failedApps += Environment.NewLine + app;
                     }
+                }
 
-                    GetModernApps(!chkOnlyRemovable.Checked);
+                if (!string.IsNullOrEmpty(failedApps))
+                {
+                    MessageBox.Show(_errorModernAppsMessage + failedApps, "Optimizer", MessageBoxButtons.OK, MessageBoxIcon.Information);
                 }
+
+                GetModernApps(!chkOnlyRemovable.Checked);
             }
         }
 
@@ -2953,9 +2987,9 @@ namespace Optimizer
 
         private void chkSelectAllModernApps_CheckedChanged(object sender, EventArgs e)
         {
-            for (int i = 0; i < listModernApps.Items.Count; i++)
+            foreach (Control c in Utilities.GetSelfAndChildrenRecursive(panelUwp))
             {
-                listModernApps.SetItemChecked(i, chkSelectAllModernApps.Checked);
+                if (c is MoonCheck) ((MoonCheck)c).Checked = chkSelectAllModernApps.Checked;
             }
         }
 

+ 1 - 1
Optimizer/Forms/MainForm.resx

@@ -739,7 +739,7 @@ any application only by typing your desired keyword.</value>
         AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w
         LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
         ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAC0
-        GgAAAk1TRnQBSQFMAgEBCQEAAZABBwGQAQcBIAEAASABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAGA
+        GgAAAk1TRnQBSQFMAgEBCQEAAfgBCAH4AQgBIAEAASABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAGA
         AwABYAMAAQEBAAEgBgABwP8A/wD/AP8A/wD/AP8A/wAeAANHAYB0//8AiQADRwGAdP//AIkAAyoBQANH
         AYADRwGAA0cBgANHAYADRwGAA0cBgANHAYADRwGAA0cBgANHAYADRwGAA0cBgANHAYADRwGAA0cBgANH
         AYADRwGAA0cBgANHAYADRwGAA0cBgANHAYADRwGAA0cBgANHAYADRwGAA0cBgANHAYADRwGA/wD/AP8A

+ 22 - 20
Optimizer/Forms/SplashForm.Designer.cs

@@ -30,52 +30,55 @@ namespace Optimizer
         private void InitializeComponent()
         {
             System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(SplashForm));
-            this.pictureBox1 = new System.Windows.Forms.PictureBox();
             this.LoadingStatus = new System.Windows.Forms.Label();
             this.pictureBox2 = new System.Windows.Forms.PictureBox();
-            ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
+            this.pictureBox1 = new System.Windows.Forms.PictureBox();
             ((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).BeginInit();
+            ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
             this.SuspendLayout();
             // 
-            // pictureBox1
-            // 
-            this.pictureBox1.Location = new System.Drawing.Point(181, 108);
-            this.pictureBox1.Name = "pictureBox1";
-            this.pictureBox1.Size = new System.Drawing.Size(96, 96);
-            this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
-            this.pictureBox1.TabIndex = 0;
-            this.pictureBox1.TabStop = false;
-            // 
             // LoadingStatus
             // 
             this.LoadingStatus.Dock = System.Windows.Forms.DockStyle.Bottom;
             this.LoadingStatus.Font = new System.Drawing.Font("Segoe UI Semibold", 12F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
             this.LoadingStatus.ForeColor = System.Drawing.Color.Silver;
-            this.LoadingStatus.Location = new System.Drawing.Point(0, 199);
+            this.LoadingStatus.Location = new System.Drawing.Point(0, 284);
             this.LoadingStatus.Name = "LoadingStatus";
-            this.LoadingStatus.Size = new System.Drawing.Size(458, 59);
+            this.LoadingStatus.Size = new System.Drawing.Size(429, 39);
             this.LoadingStatus.TabIndex = 2;
             this.LoadingStatus.Text = "loading settings ...";
             this.LoadingStatus.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
             // 
             // pictureBox2
             // 
-            this.pictureBox2.Location = new System.Drawing.Point(37, 12);
+            this.pictureBox2.Image = global::Optimizer.Properties.Resources.bannerAmethyst;
+            this.pictureBox2.Location = new System.Drawing.Point(0, 0);
             this.pictureBox2.Name = "pictureBox2";
-            this.pictureBox2.Size = new System.Drawing.Size(384, 96);
+            this.pictureBox2.Size = new System.Drawing.Size(428, 241);
             this.pictureBox2.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
             this.pictureBox2.TabIndex = 1;
             this.pictureBox2.TabStop = false;
             // 
+            // pictureBox1
+            // 
+            this.pictureBox1.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
+            this.pictureBox1.Image = global::Optimizer.Properties.Resources.loadingAmethyst;
+            this.pictureBox1.Location = new System.Drawing.Point(164, 190);
+            this.pictureBox1.Name = "pictureBox1";
+            this.pictureBox1.Size = new System.Drawing.Size(96, 96);
+            this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
+            this.pictureBox1.TabIndex = 3;
+            this.pictureBox1.TabStop = false;
+            // 
             // SplashForm
             // 
             this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F);
             this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
             this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
-            this.ClientSize = new System.Drawing.Size(458, 258);
+            this.ClientSize = new System.Drawing.Size(429, 323);
+            this.Controls.Add(this.pictureBox1);
             this.Controls.Add(this.LoadingStatus);
             this.Controls.Add(this.pictureBox2);
-            this.Controls.Add(this.pictureBox1);
             this.DoubleBuffered = true;
             this.Font = new System.Drawing.Font("Segoe UI Semibold", 9F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
             this.ForeColor = System.Drawing.Color.White;
@@ -85,16 +88,15 @@ namespace Optimizer
             this.MinimizeBox = false;
             this.Name = "SplashForm";
             this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
-            ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
             ((System.ComponentModel.ISupportInitialize)(this.pictureBox2)).EndInit();
+            ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
             this.ResumeLayout(false);
 
         }
 
         #endregion
-
-        private System.Windows.Forms.PictureBox pictureBox1;
         protected internal System.Windows.Forms.Label LoadingStatus;
         private System.Windows.Forms.PictureBox pictureBox2;
+        private System.Windows.Forms.PictureBox pictureBox1;
     }
 }

+ 6 - 0
Optimizer/Optimizer.csproj

@@ -358,6 +358,12 @@
     </COMReference>
   </ItemGroup>
   <ItemGroup>
+    <None Include="Resources\Assets\silver.png" />
+    <None Include="Resources\Assets\ruby.png" />
+    <None Include="Resources\Assets\jade.png" />
+    <None Include="Resources\Assets\azurite.png" />
+    <None Include="Resources\Assets\amethyst.png" />
+    <None Include="Resources\Assets\amber.png" />
     <None Include="Resources\Flags\romania.png" />
     <None Include="Resources\Flags\hungary.png" />
     <None Include="Resources\Flags\kurdish.png" />

+ 5 - 3
Optimizer/Options.cs

@@ -41,6 +41,9 @@ namespace Optimizer
         public bool DisableFirefoxTemeletry { get; set; }
         public bool DisableChromeTelemetry { get; set; }
 
+        // windows 8
+        public bool DisableOneDrive { get; set; }
+
         // windows 10
         public bool EnableLegacyVolumeSlider { get; set; }
         public bool DisableQuickAccessHistory { get; set; }
@@ -63,9 +66,6 @@ namespace Optimizer
         public bool RemoveCastToDevice { get; set; }
         public bool EnableGamingMode { get; set; }
 
-        // windows 8
-        public bool DisableOneDrive { get; set; }
-
         // windows 11
         public bool TaskbarToLeft { get; set; }
         public bool DisableSnapAssist { get; set; }
@@ -76,6 +76,7 @@ namespace Optimizer
         public bool ClassicMenu { get; set; }
         public bool DisableTPMCheck { get; set; }
         public bool CompactMode { get; set; }
+        public bool DisableStickers { get; set; }
     }
 
     internal static class Options
@@ -258,6 +259,7 @@ namespace Optimizer
                 CurrentOptions.ClassicMenu = false;
                 CurrentOptions.DisableTPMCheck = false;
                 CurrentOptions.CompactMode = false;
+                CurrentOptions.DisableStickers = false;
 
                 using (FileStream fs = File.Open(SettingsFile, FileMode.CreateNew))
                 using (StreamWriter sw = new StreamWriter(fs))

+ 1 - 1
Optimizer/Program.cs

@@ -13,7 +13,7 @@ namespace Optimizer
         /* DO NOT LEAVE THEM EMPTY */
 
         internal readonly static float Major = 13;
-        internal readonly static float Minor = 7;
+        internal readonly static float Minor = 8;
 
         internal readonly static bool EXPERIMENTAL_BUILD = false;
 

+ 65 - 4
Optimizer/Properties/Resources.Designer.cs

@@ -87,6 +87,26 @@ namespace Optimizer.Properties {
             }
         }
         
+        /// <summary>
+        ///   Looks up a localized resource of type System.Drawing.Bitmap.
+        /// </summary>
+        internal static System.Drawing.Bitmap amber {
+            get {
+                object obj = ResourceManager.GetObject("amber", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        /// <summary>
+        ///   Looks up a localized resource of type System.Drawing.Bitmap.
+        /// </summary>
+        internal static System.Drawing.Bitmap amethyst {
+            get {
+                object obj = ResourceManager.GetObject("amethyst", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
         /// <summary>
         ///   Looks up a localized string similar to {
         ///	&quot;btnAbout&quot;: &quot;حسنا&quot;,
@@ -106,6 +126,16 @@ namespace Optimizer.Properties {
             }
         }
         
+        /// <summary>
+        ///   Looks up a localized resource of type System.Drawing.Bitmap.
+        /// </summary>
+        internal static System.Drawing.Bitmap azurite {
+            get {
+                object obj = ResourceManager.GetObject("azurite", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
         /// <summary>
         ///   Looks up a localized resource of type System.Drawing.Bitmap.
         /// </summary>
@@ -254,7 +284,7 @@ namespace Optimizer.Properties {
         ///	&quot;btnKill&quot;: &quot;Töten&quot;,
         ///	&quot;trayUnlocker&quot;: &quot;Dateihandles&quot;,
         ///	&quot;txtBitness&quot;: &quot;Betriebssystem: {BITS}&quot;,
-        ///	&quot;onedriveM&quot;: &quot;Möchten Sie OneDrive wirklich deinstallieren? Dadurch werden Ihre Desktop und Dokumentdateien gelöscht! Verwenden Sie diese Option nur [rest of string was truncated]&quot;;.
+        ///	&quot;onedriveM&quot;: &quot;Möchten Sie OneDrive wirklich deinstallieren? Dadurch werden Ihre Desktop- und Dokumentdateien gelöscht! Verwenden Sie diese Option nu [rest of string was truncated]&quot;;.
         /// </summary>
         internal static string DE {
             get {
@@ -689,6 +719,16 @@ namespace Optimizer.Properties {
             }
         }
         
+        /// <summary>
+        ///   Looks up a localized resource of type System.Drawing.Bitmap.
+        /// </summary>
+        internal static System.Drawing.Bitmap jade {
+            get {
+                object obj = ResourceManager.GetObject("jade", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
         /// <summary>
         ///   Looks up a localized string similar to {
         ///     &quot;btnAbout&quot;: &quot;확인&quot;,
@@ -978,14 +1018,15 @@ namespace Optimizer.Properties {
         ///	&quot;restartButton&quot;: &quot;Reporniți acum&quot;,
         ///	&quot;restartButton8&quot;: &quot;Reporniți acum&quot;,
         ///	&quot;restartButton10&quot;: &quot;Reporniți acum&quot;,
+        ///	&quot;btnFind&quot;: &quot;Găsește&quot;,
+        ///	&quot;btnKill&quot;: &quot;Termin&quot;,
+        ///	&quot;trayUnlocker&quot;: &quot;Mânere de fișiere&quot;,
         ///	&quot;restartAndApply&quot;: &quot;Reporniți pentru a aplica modificări?&quot;,
         ///	&quot;txtVersion&quot;: &quot;Versiune: {VN}&quot;,
         ///	&quot;txtBitness&quot;: &quot;Tu lucrezi cu {BITS}&quot;,
         ///	&quot;linkUpdate&quot;: &quot;Actualizare disponibilă&quot;,
         ///	&quot;lblLab&quot;: &quot;Construcție experimentală\n(șterge după testare)&quot;,
-        ///	&quot;performanceSw&quot;: &quot;Activează trucuri performanță&quot;,
-        ///	&quot;networkSw&quot;: &quot;Dezactiva Rețea Limitare&quot;,
-        ///	&quot;defenderSw&quot;: &quot;Dezactivează Window [rest of string was truncated]&quot;;.
+        ///	&quot;performanceSw&quot;: &quot;Activează trucuri perform [rest of string was truncated]&quot;;.
         /// </summary>
         internal static string RO {
             get {
@@ -1024,6 +1065,16 @@ namespace Optimizer.Properties {
             }
         }
         
+        /// <summary>
+        ///   Looks up a localized resource of type System.Drawing.Bitmap.
+        /// </summary>
+        internal static System.Drawing.Bitmap ruby {
+            get {
+                object obj = ResourceManager.GetObject("ruby", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
         /// <summary>
         ///   Looks up a localized resource of type System.Drawing.Bitmap.
         /// </summary>
@@ -1034,6 +1085,16 @@ namespace Optimizer.Properties {
             }
         }
         
+        /// <summary>
+        ///   Looks up a localized resource of type System.Drawing.Bitmap.
+        /// </summary>
+        internal static System.Drawing.Bitmap silver {
+            get {
+                object obj = ResourceManager.GetObject("silver", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
         /// <summary>
         ///   Looks up a localized resource of type System.Drawing.Bitmap.
         /// </summary>

+ 18 - 0
Optimizer/Properties/Resources.resx

@@ -343,4 +343,22 @@
   <data name="romania" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>..\Resources\Flags\romania.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
+  <data name="amber" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\Assets\amber.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="amethyst" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\Assets\amethyst.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="azurite" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\Assets\azurite.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="jade" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\Assets\jade.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="ruby" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\Assets\ruby.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="silver" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>..\Resources\Assets\silver.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
 </root>

BIN
Optimizer/Resources/Assets/amber.png


BIN
Optimizer/Resources/Assets/amethyst.png


BIN
Optimizer/Resources/Assets/azurite.png


BIN
Optimizer/Resources/Assets/bannerAmber.png


BIN
Optimizer/Resources/Assets/bannerAmethyst.png


BIN
Optimizer/Resources/Assets/bannerAzurite.png


BIN
Optimizer/Resources/Assets/bannerJade.png


BIN
Optimizer/Resources/Assets/bannerRuby.png


BIN
Optimizer/Resources/Assets/bannerSilver.png


BIN
Optimizer/Resources/Assets/jade.png


BIN
Optimizer/Resources/Assets/ruby.png


BIN
Optimizer/Resources/Assets/silver.png


+ 2 - 1
Optimizer/Resources/i18n/AR.json

@@ -414,5 +414,6 @@
 	"gameModeSw": "تمكين وضع الألعاب",
 	"gameModeTip": "لتمكين وضع الألعاب بالاشتراك مع جدولة وحدة معالجة الرسومات المسرَّعة للأجهزة.",
 	"compactModeSw": "تمكين الوضع المضغوط في Explorer",
-	"compactModeTip": "يقلل المساحة والمساحة الزائدة بين الملفات في مستكشف الملفات."
+	"compactModeTip": "يقلل المساحة والمساحة الزائدة بين الملفات في مستكشف الملفات.",
+	"stickersTip": "الملصقات عبارة عن رموز تعبيرية كبيرة تظهر على الخلفيات ، ويتم استخدامها في برامج المراسلة الاجتماعية."
 }

+ 2 - 1
Optimizer/Resources/i18n/CN.json

@@ -412,5 +412,6 @@
 	"gameModeSw": "启用游戏模式",
 	"gameModeTip": "结合硬件加速 GPU 调度启用游戏模式",
 	"compactModeSw": "在资源管理器中启用紧凑模式",
-	"compactModeTip": "减少文件资源管理器中文件之间的额外空间和填充。"
+	"compactModeTip": "减少文件资源管理器中文件之间的额外空间和填充。",
+	"stickersTip": "贴纸是出现在壁纸上的大型表情符号,用于社交信使。"
 }

+ 2 - 1
Optimizer/Resources/i18n/CZ.json

@@ -414,5 +414,6 @@ Je to však považováno za riskantní procedůru. Obvykle se jedná o půlročn
 	"gameModeSw": "Povolit herní režim",
 	"gameModeTip": "Umožňuje herní režim v kombinaci s hardwarově akcelerovaným plánováním GPU.",
 	"compactModeSw": "Povolte v Průzkumníkovi kompaktní režim",
-	"compactModeTip": "Snižuje prostor navíc a odsazení mezi soubory v Průzkumníkovi souborů."
+	"compactModeTip": "Snižuje prostor navíc a odsazení mezi soubory v Průzkumníkovi souborů.",
+	"stickersTip": "Nálepky jsou velké emotikony, které se objevují na tapetách a používají se v sociálních zprávách."
 }

+ 2 - 1
Optimizer/Resources/i18n/DE.json

@@ -389,5 +389,6 @@
 	"gameModeSw": "Spielemodus aktivieren",
 	"gameModeTip": "Aktiviert den Gaming-Modus in Kombination mit hardwarebeschleunigter GPU-Planung.",
 	"compactModeSw": "Aktivieren Sie den Kompaktmodus im Explorer",
-	"compactModeTip": "Reduziert zusätzlichen Platz und Auffüllung zwischen den Dateien im Datei-Explorer."
+	"compactModeTip": "Reduziert zusätzlichen Platz und Auffüllung zwischen den Dateien im Datei-Explorer.",
+	"stickersTip": "Sticker sind große Emojis, die auf Hintergrundbildern erscheinen und in sozialen Messengern verwendet werden."
 }

+ 2 - 1
Optimizer/Resources/i18n/EL.json

@@ -410,5 +410,6 @@
 	"gameModeSw": "Ενεργοποίηση Gaming Λειτουργίας",
 	"gameModeTip": "Ενεργοποιεί την λειτουργία Gaming των Windows",
 	"compactModeSw": "Ενεργοποίηση Compact Λειτουργίας στα Αρχεία",
-	"compactModeTip": "Μειώνει τον επιπλέον χώρο μεταξύ των αρχείων στην Εξερεύνηση αρχείων."
+	"compactModeTip": "Μειώνει τον επιπλέον χώρο μεταξύ των αρχείων στην Εξερεύνηση αρχείων.",
+	"stickersTip": "Τα Stickers είναι μεγάλα emojis που εμφανίζονται στην επιφάνεια εργασίας και χρησιμοποιούνται στα social media."
 }

+ 2 - 1
Optimizer/Resources/i18n/EN.json

@@ -414,5 +414,6 @@ However, they are considered a risky procedure. They are usually semi-annual rel
 	"gameModeTip": "Enables Gaming mode in combination with hardware accelerated GPU scheduling.",
 	"systemRestoreM": "Are you sure you want to disable System Restore? This will delete your current backup images!",
 	"compactModeSw": "Enable Compact Mode in Explorer",
-	"compactModeTip": "Reduces extra space and padding between the files in Files Explorer."
+	"compactModeTip": "Reduces extra space and padding between the files in Files Explorer.",
+	"stickersTip": "Stickers are large emojis that appear on wallpapers, being used in social messengers."
 }

+ 2 - 1
Optimizer/Resources/i18n/ES.json

@@ -411,5 +411,6 @@ Sin embargo, se consideran un procedimiento riesgoso. Suelen ser lanzamientos se
 	"gameModeSw": "Habilitar modo de juego",
 	"gameModeTip": "Habilita el modo de juego en combinación con la programación de GPU acelerada por hardware.",
 	"compactModeSw": "Habilitar el modo compacto en Explorer",
-	"compactModeTip": "Reduce el espacio adicional y el relleno entre los archivos en el Explorador de archivos."
+	"compactModeTip": "Reduce el espacio adicional y el relleno entre los archivos en el Explorador de archivos.",
+	"stickersTip": "Las pegatinas son emojis grandes que aparecen en los fondos de pantalla y se usan en los mensajeros sociales."
 }

+ 2 - 1
Optimizer/Resources/i18n/FR.json

@@ -411,5 +411,6 @@ Cependant, elles sont considerees comme une procedure risquee. Il s'agit general
 	"gameModeSw": "Activer le mode jeu",
 	"gameModeTip": "Active le mode Gaming en combinaison avec la planification GPU accélérée par le matériel.",
 	"compactModeSw": "Activer le mode compact dans l'explorateur",
-	"compactModeTip": "Réduit l'espace supplémentaire et le rembourrage entre les fichiers dans l'explorateur de fichiers."
+	"compactModeTip": "Réduit l'espace supplémentaire et le rembourrage entre les fichiers dans l'explorateur de fichiers.",
+	"stickersTip": "Les autocollants sont de grands emojis qui apparaissent sur les fonds d'écran, utilisés dans les messagers sociaux."
 }

+ 2 - 1
Optimizer/Resources/i18n/HU.json

@@ -414,5 +414,6 @@
 	"systemRestoreM": "Biztosan ki akarja kapcsolni a Rendszer-visszaállítást? Ezzel törli a jelenlegi biztonsági másolatot!",
 	"compactModeSw": "A kompakt mód engedélyezése az Explorerben",
 	"compactModeTip": "Csökkenti az extra helyet és a kitöltést a fájlok között a Fájlkezelőben.",
-	"trayUnlocker": "Fájlfogantyúk"
+	"trayUnlocker": "Fájlfogantyúk",
+	"stickersTip": "A matricák nagy hangulatjelek, amelyek a háttérképeken jelennek meg, és közösségi üzenetküldőkben használatosak."
 }

+ 2 - 1
Optimizer/Resources/i18n/IT.json

@@ -409,5 +409,6 @@ Tuttavia, sono considerate procedure rischiose. Sono normalmente una release ogn
 	"gameModeSw": "Abilita la modalità di gioco",
 	"gameModeTip": "Abilita la modalità di gioco in combinazione con la pianificazione GPU con accelerazione hardware.",
 	"compactModeSw": "Abilita la modalità compatta in Explorer",
-	"compactModeTip": "Riduce lo spazio aggiuntivo e il riempimento tra i file in Esplora file."
+	"compactModeTip": "Riduce lo spazio aggiuntivo e il riempimento tra i file in Esplora file.",
+	"stickersTip": "Gli adesivi sono grandi emoji che appaiono sugli sfondi, utilizzati nei social messenger."
 }

+ 2 - 1
Optimizer/Resources/i18n/KO.json

@@ -414,5 +414,6 @@ Microsoft 계정 로그인이 필요합니다.",
 	"gameModeTip": "하드웨어 가속 GPU 스케줄링과 함께 게임 모드를 사용합니다.",
 	"systemRestoreM": "시스템 복원을 사용하지 않도록 설정하시겠습니까? 현재 백업 이미지가 삭제됩니다!",
 	"compactModeSw": "탐색기에서 압축 모드 사용",
-	"compactModeTip": "파일 탐색기에서 파일 사이의 추가 공간과 패딩을 줄입니다."
+	"compactModeTip": "파일 탐색기에서 파일 사이의 추가 공간과 패딩을 줄입니다.",
+	"stickersTip": "스티커는 월페이퍼에 나타나는 큰 이모티콘으로 소셜 메신저에서 사용됩니다."
 }

+ 2 - 1
Optimizer/Resources/i18n/KU.json

@@ -413,5 +413,6 @@
 	"gameModeTip": "مۆدی یاری کردن بە تێکەڵی گرافیک کارد لەگەڵ هاردوێر خێراکردنی خشتەی بەتوانا دەکات.",
 	"systemRestoreM": "ئایا تۆ دڵنیایت کە دەتەوێت مۆدی کایەکردن بە تێکەڵی گرافیک کارد لەگەڵ هاردوێر خێراکراوی خشتە چالاک بکەیت. گەڕاندنەوەی سیستەم ناچالاک بکە؟ ئەمە وێنەکانی پاڵپشتی ئێستات دەسڕێتەوە!",
 	"compactModeSw": "Explorer مۆدی کۆمپکت بەتوانا بکە لە",
-	"compactModeTip": "بۆشایی زیادە و پادینگ لە نێوان فایلەکانی ناو کۆمپیوتەر فایلەکان کەم دەکاتەوە."
+	"compactModeTip": "بۆشایی زیادە و پادینگ لە نێوان فایلەکانی ناو کۆمپیوتەر فایلەکان کەم دەکاتەوە.",
+	"stickersTip": "ستیکەر بریتییە لە ئیمۆجی گەورە کە لەسەر کاغەزی دیوارەکان دەردەکەون، لە نامەبەرە کۆمەڵایەتییەکاندا بەکاردەهێنرێن."
 }

+ 2 - 1
Optimizer/Resources/i18n/PL.json

@@ -411,5 +411,6 @@ Są one jednak uważane za ryzykowną procedurę. Zazwyczaj są wydawane co pó
 	"gameModeSw": "Włącz tryb gier",
 	"gameModeTip": "Włącza tryb gier w połączeniu z przyspieszaniem sprzętowym harmonogramu GPU.",
 	"compactModeSw": "Włącz tryb kompaktowy w Eksploratorze",
-	"compactModeTip": "Zmniejsza dodatkową przestrzeń i dopełnienie między plikami w Eksploratorze plików."
+	"compactModeTip": "Zmniejsza dodatkową przestrzeń i dopełnienie między plikami w Eksploratorze plików.",
+	"stickersTip": "Naklejki to duże emotikony, które pojawiają się na tapetach i są używane w komunikatorach społecznościowych."
 }

+ 2 - 1
Optimizer/Resources/i18n/PT.json

@@ -411,5 +411,6 @@ No entanto, eles são considerados um procedimento arriscado. Geralmente são la
 	"gameModeSw": "Ativar o modo de jogo",
 	"gameModeTip": "Ativa o modo de jogo em combinação com o agendamento de GPU acelerado por hardware.",
 	"compactModeSw": "Ativar o modo compacto no Explorer",
-	"compactModeTip": "Reduz o espaço extra e o preenchimento entre os arquivos no Explorador de Arquivos."
+	"compactModeTip": "Reduz o espaço extra e o preenchimento entre os arquivos no Explorador de Arquivos.",
+	"stickersTip": "Stickers são emojis grandes que aparecem em papéis de parede, sendo usados em mensageiros sociais."
 }

+ 2 - 1
Optimizer/Resources/i18n/RO.json

@@ -395,5 +395,6 @@ pentru analiză către Microsoft.",
 	"gameModeTip": "Activează modul Gaming în combinație cu programarea accelerată hardware a GPU-ului.",
 	"systemRestoreM": "Sunteți sigur că doriți să dezactivați restaura de sistem? Acest lucru va șterge imaginile de backup curente!",
 	"compactModeSw": "Activați Modul Compact în Explorer",
-	"compactModeTip": "Reduce spațiul suplimentar și umplutura între fișierele din File Explorer."
+	"compactModeTip": "Reduce spațiul suplimentar și umplutura între fișierele din File Explorer.",
+	"stickersTip": "Stickerele sunt emoji-uri mari care apar pe imagini de fundal, fiind folosite în mesageria socială."
 }

+ 2 - 1
Optimizer/Resources/i18n/RU.json

@@ -414,5 +414,6 @@
 	"gameModeSw": "Включить игровой режим",
 	"gameModeTip": "Включает игровой режим в сочетании с аппаратным ускорением планирования графического процессора.",
 	"compactModeSw": "Включить компактный режим в Проводнике",
-	"compactModeTip": "Уменьшает дополнительное пространство и отступы между файлами в проводнике."
+	"compactModeTip": "Уменьшает дополнительное пространство и отступы между файлами в проводнике.",
+	"stickersTip": "Стикеры — это большие смайлики, которые появляются на обоях и используются в социальных мессенджерах."
 }

+ 2 - 1
Optimizer/Resources/i18n/TR.json

@@ -412,5 +412,6 @@ Ancak, riskli bir prosedür olarak kabul edilirler. Genellikle altı aylık yay
 	"gameModeSw": "Oyun Modunu Etkinleştir",
 	"gameModeTip": "Donanım hızlandırmalı GPU zamanlaması ile birlikte Oyun modunu etkinleştirir.",
 	"compactModeSw": "Explorer'da Kompakt Modu Etkinleştir",
-	"compactModeTip": "Dosya Gezgini'ndeki dosyalar arasındaki fazladan boşluğu ve dolguyu azaltır."
+	"compactModeTip": "Dosya Gezgini'ndeki dosyalar arasındaki fazladan boşluğu ve dolguyu azaltır.",
+	"stickersTip": "Çıkartmalar, sosyal mesajlaşma programlarında kullanılan duvar kağıtlarında görünen büyük emojilerdir."
 }

+ 2 - 1
Optimizer/Resources/i18n/TW.json

@@ -412,5 +412,6 @@
 	"gameModeSw": "啟用遊戲模式",
 	"gameModeTip": "結合硬件加速 GPU 調度啟用遊戲模式。",
 	"compactModeSw": "在資源管理器中啟用緊湊模式",
-	"compactModeTip": "減少文件資源管理器中文件之間的額外空間和填充。"
+	"compactModeTip": "減少文件資源管理器中文件之間的額外空間和填充。",
+	"stickersTip": "貼紙是出現在壁紙上的大型表情符號,用於社交信使。"
 }

+ 1 - 0
Optimizer/SilentConfig.cs

@@ -60,5 +60,6 @@ namespace Optimizer
         public bool? ClassicMenu { get; set; }
         public bool? DisableTPMCheck { get; set; }
         public bool? CompactMode { get; set; }
+        public bool? DisableStickers { get; set; }
     }
 }

+ 16 - 0
Optimizer/SilentOps.cs

@@ -533,6 +533,18 @@ namespace Optimizer
                 }
             }
 
+            if (CurrentSilentConfig.DisableStickers.HasValue)
+            {
+                if (CurrentSilentConfig.DisableStickers.Value)
+                {
+                    Optimize.DisableStickers();
+                }
+                else
+                {
+                    Optimize.EnableStickers();
+                }
+            }
+
             if (CurrentSilentConfig.CompactMode.HasValue)
             {
                 if (CurrentSilentConfig.CompactMode.Value)
@@ -717,6 +729,10 @@ namespace Optimizer
 
         internal static void SilentUpdateOptions11()
         {
+            if (CurrentSilentConfig.DisableStickers.HasValue)
+            {
+                Options.CurrentOptions.DisableStickers = CurrentSilentConfig.DisableStickers.Value;
+            }
             if (CurrentSilentConfig.TaskbarToLeft.HasValue)
             {
                 Options.CurrentOptions.TaskbarToLeft = CurrentSilentConfig.TaskbarToLeft.Value;

+ 15 - 11
Optimizer/UWPHelper.cs

@@ -1,33 +1,37 @@
-using System.Collections.Generic;
+using System;
+using System.Collections.Generic;
+using System.Linq;
 using System.Management.Automation;
+using System.Text;
+using System.Windows.Forms;
 
 namespace Optimizer
 {
     internal static class UWPHelper
     {
-        internal static List<string> GetUWPApps(bool showAll)
+        internal static Dictionary<string, string> GetUWPApps(bool showAll)
         {
-            List<string> modernApps = new List<string>();
+            Dictionary<string, string> modernApps = new Dictionary<string, string>();
 
             using (PowerShell script = PowerShell.Create())
             {
                 if (showAll)
                 {
-                    script.AddScript("Get-AppxPackage | Select -Unique Name | Out-String -Stream");
+                    script.AddScript("Get-AppxPackage | Select Name,InstallLocation");
                 }
                 else
                 {
-                    script.AddScript(@"Get-AppxPackage | Where {$_.NonRemovable -like ""False""} | Select -Unique Name | Out-String -Stream");
+                    script.AddScript(@"Get-AppxPackage | Where {$_.NonRemovable -like ""False""} | Select  Name,InstallLocation");
                 }
 
-                string tmp = string.Empty;
+                string[] tmp;
+                
+
                 foreach (PSObject x in script.Invoke())
                 {
-                    tmp = x.ToString().Trim();
-                    if (!string.IsNullOrEmpty(tmp) && !tmp.Contains("---") && !tmp.Equals("Name"))
-                    {
-                        modernApps.Add(tmp);
-                    }
+                    tmp = x.ToString().Replace("@", string.Empty).Replace("{", string.Empty).Replace("}", string.Empty).Replace("Name=", string.Empty).Replace("InstallLocation=", string.Empty).Trim().Split(';');
+
+                    modernApps.Add(tmp[0], tmp[1]);
                 }
             }
 

+ 5 - 0
Optimizer/Utilities.cs

@@ -363,6 +363,11 @@ namespace Optimizer
             if (File.Exists(fileName)) Process.Start("explorer.exe", $"/select, \"{fileName}\"");
         }
 
+        internal static void FindFolder(string folder)
+        {
+            if (Directory.Exists(folder)) RunCommand($"explorer.exe \"{folder}\"");
+        }
+
         internal static string GetShortcutTargetFile(string shortcutFilename)
         {
             string pathOnly = Path.GetDirectoryName(shortcutFilename);

Some files were not shown because too many files changed in this diff