mirror of
https://github.com/microsoft/PowerToys.git
synced 2026-04-06 19:26:39 +02:00
* 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>
58 lines
1.9 KiB
C#
58 lines
1.9 KiB
C#
// 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.Management.Automation;
|
|
using System.Management.Automation.Subsystem;
|
|
using System.Management.Automation.Subsystem.Feedback;
|
|
using System.Management.Automation.Subsystem.Prediction;
|
|
|
|
namespace WinGetCommandNotFound
|
|
{
|
|
public sealed class Init : IModuleAssemblyInitializer, IModuleAssemblyCleanup
|
|
{
|
|
internal const string Id = "e5351aa4-dfde-4d4d-bf0f-1a2f5a37d8d6";
|
|
|
|
public void OnImport()
|
|
{
|
|
if (!Platform.IsWindows || !IsWinGetInstalled())
|
|
{
|
|
return;
|
|
}
|
|
|
|
SubsystemManager.RegisterSubsystem(SubsystemKind.FeedbackProvider, WinGetCommandNotFoundFeedbackPredictor.Singleton);
|
|
SubsystemManager.RegisterSubsystem(SubsystemKind.CommandPredictor, WinGetCommandNotFoundFeedbackPredictor.Singleton);
|
|
}
|
|
|
|
public void OnRemove(PSModuleInfo psModuleInfo)
|
|
{
|
|
if (!IsWinGetInstalled())
|
|
{
|
|
return;
|
|
}
|
|
|
|
SubsystemManager.UnregisterSubsystem<IFeedbackProvider>(new Guid(Id));
|
|
SubsystemManager.UnregisterSubsystem<ICommandPredictor>(new Guid(Id));
|
|
}
|
|
|
|
private bool IsWinGetInstalled()
|
|
{
|
|
// Ensure WinGet is installed
|
|
using (var pwsh = PowerShell.Create(RunspaceMode.CurrentRunspace))
|
|
{
|
|
var results = pwsh.AddCommand("Get-Command")
|
|
.AddParameter("Name", "winget")
|
|
.AddParameter("CommandType", "Application")
|
|
.Invoke();
|
|
|
|
if (results.Count is 0)
|
|
{
|
|
return false;
|
|
}
|
|
}
|
|
|
|
return true;
|
|
}
|
|
}
|
|
}
|