Introduce Command Not Found module (#26319)

* Introduce Command Not Found module

* rewrite module to depend on WinGet PowerShell module

* address Dongbo's feedback

* try and implement settings UI

* fix SUI build; try and store PowerShell object

* add and use object pool

* apply Dongbo's feedback

* add warm up; implement IPooledObjectPolicy

* Add module interface

* WIP trying to import module from settings

* Add EnableModule.ps1

* spellcheck

* spellcheck again

* Installer. Add DisableModule.ps1

* Fix styling

* Give the user some output from installing

* Prettify the Settings controls

* Add button to check PowerShell 7's version

* Fix Settings Assets paths

* Fix PowerShell 7 output

* Make module enable and disable scripts give better information

* Fix spellcheck

* Fix image files and placeholders

* Don't remove CmdNotFound on upgrade and don't fail on uninstall of
CmdNotFound

* Consistent install module scripts location on debug and installed

* installer: Avoid messageboxes and hide powershell on uninstalling CmdNotFound

* Fix psd1 file resolution when installed

* Fix spellcheck

* Add telemetry events

* Fix gpo files

* If GPO is set, enable/disable module on PT start depending on gpo value

* Cleanup module interface

* Cleanup settings code

* If GPO is set, disable Settings page logic

* Adding icons

* Update settings UI and strings

* Add telemetry for suggestions and feedbacks

* Fix sln file

* Fix build

* minor fixes

* Updating icon

* Remove global.json

* Remove unused PowerShell dependency

* Don't use preview version of Automation and fix NOTICE

* Fix signing

* Fix NOTICE.md

* Fix version checking for getfilesiginforedist.dll

* Fix spellchecker

* Fix README.md

* Fix false positives section in expect.txt

* Add logs to module interface

---------

Co-authored-by: Stefan Markovic <stefan@janeasystems.com>
Co-authored-by: Jaime Bernardo <jaime@janeasystems.com>
Co-authored-by: Niels Laute <niels.laute@live.nl>
This commit is contained in:
Carlos Zamora
2024-01-03 07:43:42 -08:00
committed by GitHub
parent 3b90f73bd0
commit 46f5316858
65 changed files with 1633 additions and 63 deletions

View File

@@ -2358,6 +2358,10 @@ From there, simply click on one of the supported files in the File Explorer and
<value>Learn more about Awake</value>
<comment>Awake is a product name, do not loc</comment>
</data>
<data name="LearnMore_CmdNotFound.Text" xml:space="preserve">
<value>Learn more about Command Not Found</value>
<comment> Command Not Found is the name of the module. </comment>
</data>
<data name="SecondaryLink_Awake.Text" xml:space="preserve">
<value>Den Delimarsky's work on creating Awake</value>
<comment>Awake is a product name, do not loc</comment>
@@ -3655,6 +3659,51 @@ Activate by holding the key for the character you want to add an accent to, then
<data name="Oobe_PastePlain_HowToUse.Text" xml:space="preserve">
<value>to paste your clipboard data as plain text. Note: this will replace the formatted text in your clipboard with the plain text.</value>
</data>
<data name="Shell_CmdNotFound.Content" xml:space="preserve">
<value>Command Not Found</value>
<comment>Product name: Navigation view item name for Command Not Found</comment>
</data>
<data name="CmdNotFound.ModuleDescription" xml:space="preserve">
<value>A PowerShell module that detects an error thrown by a command and suggests a relevant WinGet package to install, if available.</value>
<comment>"Command Not Found" is a product name</comment>
</data>
<data name="CmdNotFound.ModuleTitle" xml:space="preserve">
<value>Command Not Found</value>
<comment>"Command Not Found" is a product name</comment>
</data>
<data name="CmdNotFound_Enable.Header" xml:space="preserve">
<value>Command Not Found</value>
<comment>"Command Not Found" is a product name</comment>
</data>
<data name="CmdNotFound_Enable_DescriptionText.Text" xml:space="preserve">
<value>Add this module to the PowerShell 7 profile script so that it is enabled with every new session</value>
</data>
<data name="CmdNotFound_ModuleInstallationLogs.Text" xml:space="preserve">
<value>Installation logs</value>
</data>
<data name="CmdNotFound_CheckPowerShellVersionButtonControl.Description" xml:space="preserve">
<value>PowerShell 7 is required to use this module</value>
</data>
<data name="CmdNotFound_CheckCompatibility.Content" xml:space="preserve">
<value>Check if your PowerShell configuration is compatible</value>
</data>
<data name="CmdNotFound_InstallButton.Content" xml:space="preserve">
<value>Install</value>
</data>
<data name="CmdNotFound_UninstallButton.Content" xml:space="preserve">
<value>Uninstall</value>
</data>
<data name="Oobe_CmdNotFound.Description" xml:space="preserve">
<value>Command Not Found detects an error thrown by a command in PowerShell and suggests a relevant WinGet package to install, if available.</value>
<comment>"Command Not Found" is a product name</comment>
</data>
<data name="Oobe_CmdNotFound.Title" xml:space="preserve">
<value>Command Not Found</value>
<comment>"Command Not Found" is a product name</comment>
</data>
<data name="Oobe_CmdNotFound_HowToUse.Text" xml:space="preserve">
<value>If a command returns an error, the module will suggest a WinGet package that may provide the relevant executable.</value>
</data>
<data name="AllAppsTxt.Text" xml:space="preserve">
<value>All apps</value>
</data>