הסרת תוכנה דרך הרישום או PowerShell
כל תוכנה מותקנת רושמת פקודת הסרה ברישום. כשאי אפשר להסיר תוכנה דרך הגדרות → אפליקציות, או כשצריך להסיר אותה בשקט, הפקודה הזו היא הדרך.
איפה Windows שומר את פקודות ההסרה
תוכנות שהותקנו לכל המשתמשים נמצאות תחת HKLM, תוכנות 32 ביט ב־Windows של 64 ביט תחת WOW6432Node, ותוכנות שהותקנו רק למשתמש הנוכחי תחת HKCU. לכל תוכנה יש מפתח משנה עם DisplayName, DisplayVersion, UninstallString ולעתים קרובות גם QuietUninstallString.
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\UninstallHKLM\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\UninstallHKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstallרשימת התוכנות המותקנות ב־PowerShell
הפקודות קוראות את שלושת המיקומים ומציגות שם, גרסה ופקודות הסרה.
$keys = "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*", "HKLM:\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\*", "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\*"Get-ItemProperty $keys | Where-Object DisplayName | Select-Object DisplayName, DisplayVersion, UninstallString, QuietUninstallString | Sort-Object DisplayNameהרצת פקודת ההסרה
אם קיים QuietUninstallString, הוא מסיר את התוכנה בלי שאלות. אחרת מריצים את UninstallString ומוסיפים את הפרמטר השקט של סוג ההתקנה (/S ל־NSIS, /VERYSILENT ל־Inno Setup). בחבילות MSI שם מפתח המשנה הוא ה־ProductCode, ו־msiexec /x מסיר אותה.
msiexec /x {PRODUCT-CODE-GUID} /qn /norestart"C:\Program Files\App\uninstall.exe" /Sאו להשאיר את זה ל־winget
winget מוצא תוכנות באותם מפתחות רישום, גם כאלה שהוא לא התקין, ומריץ את מסיר ההתקנה שלהן.
winget listwinget uninstall --name "App Name"כשמסיר ההתקנה חסר
אם קובץ מסיר ההתקנה נמחק, התקנה מחדש של אותה גרסה בדרך כלל מתקנת אותו, ואחר כך אפשר להסיר את התוכנה כרגיל. מחיקה ידנית של רשומה ברישום מתאימה רק כשקובצי התוכנה כבר אינם, ולפני המחיקה יש לייצא את המפתח.
שאלות נפוצות
למה תוכנה לא מופיעה בהגדרות → אפליקציות?
ההגדרות מציגות רק רשומות עם DisplayName שאינן מסומנות כרכיבי מערכת. תוכנות ניידות לא רושמות דבר, ומסירים אותן במחיקת התיקייה שלהן.
מהו ה־ProductCode של MSI?
מזהה GUID של חבילת MSI אחת. זה שם מפתח המשנה של התוכנה תחת …\Uninstall, והוא מוצג בדף ההתקנה השקטה של כל תוכנת MSI ב־ExeAtlas.