From 26111e223e93c76863fc1a191b96124b2f067864 Mon Sep 17 00:00:00 2001 From: leedongmyung Date: Sun, 5 Jan 2025 11:55:32 +0900 Subject: [PATCH] update powershell calll --- lib/platform/process.dart | 27 +++++++++------------------ lib/utils/os_startup.dart | 14 +++++++++----- 2 files changed, 18 insertions(+), 23 deletions(-) diff --git a/lib/platform/process.dart b/lib/platform/process.dart index de29f1b..3b1499c 100644 --- a/lib/platform/process.dart +++ b/lib/platform/process.dart @@ -127,20 +127,10 @@ class ProcessData { } class ProcessExecutor { - static String _powershellPath = ''; - static Future getPowershell() async { - if (_powershellPath.isEmpty) { - var result = await Process.run('cmd', ['/c', 'where powershell']); - if (result.exitCode == 0) { - var path = result.stdout.toString().split('\n')[0]; - _powershellPath = File(path).absolute.path; - print(_powershellPath); - } - if (_powershellPath.isEmpty) { - throw UnsupportedError('Not found powershell'); - } - - result = await Process.run( + static bool _initedPowershell = false; + static Future initPowershell() async { + if (!_initedPowershell) { + var result = await Process.run( 'cmd', [ '/C', @@ -151,11 +141,13 @@ class ProcessExecutor { runInShell: true, ); + _initedPowershell = true; + if (result.stderr.toString().trim().isNotEmpty) { print('[Powershell Grant] Error: ${result.stderr}'); } } - return dataFutrue(_powershellPath); + return simpleFuture; } static Future startExe(String exe, List args, @@ -237,8 +229,7 @@ class ProcessExecutor { file.createSync(); file.writeAsStringSync(shell.toString(), flush: true); - var powershell = await getPowershell(); - print(powershell); + await initPowershell(); try { processData.process = await Process.start('cmd', ['/C', 'powershell', '-NoProfile', '-File', file.absolute.path]); @@ -299,7 +290,7 @@ class ProcessExecutor { print(file.absolute.path); - var powshell = await getPowershell(); + await initPowershell(); processResult = await Process.run( 'cmd', // PowerShell 실행 diff --git a/lib/utils/os_startup.dart b/lib/utils/os_startup.dart index 4ae3ece..2b62891 100644 --- a/lib/utils/os_startup.dart +++ b/lib/utils/os_startup.dart @@ -323,9 +323,9 @@ Exit @override Future isRegistedStartup(String label) async { + await ProcessExecutor.initPowershell(); var shell = 'Get-ScheduledTask | Where-Object {\$_.TaskName -eq "$label"}'; - var process = - await Process.run(await ProcessExecutor.getPowershell(), [shell]); + var process = await Process.run('cmd', ['/C', 'powershell', shell]); var exist = false; if (process.exitCode == 0) { var existLine = []; @@ -388,8 +388,9 @@ Exit var powershellCommand = 'Start-Process powershell.exe -ArgumentList "-NoProfile -ExecutionPolicy Bypass -Command `& \'${tempFile.path}\'; exit" -Verb RunAs -WindowStyle Hidden'; - var process = await Process.run(await ProcessExecutor.getPowershell(), - ['-Command', powershellCommand, '-Wait']); + await ProcessExecutor.initPowershell(); + var process = await Process.run( + 'cmd', ['/C', 'powershell', '-Command', powershellCommand, '-Wait']); print(process.stdout.toString()); print(process.stderr.toString()); @@ -402,10 +403,13 @@ Exit @override Future unregistStartup(String label) async { + await ProcessExecutor.initPowershell(); var shell = 'Unregister-ScheduledTask -TaskName "$label" -Confirm:\$false'; var process = await Process.run( - await ProcessExecutor.getPowershell(), + 'cmd', [ + '/C', + 'powershell', '-Command', 'Start-Process powershell -ArgumentList \'-NoProfile -ExecutionPolicy Bypass -Command "$shell"\' -Verb RunAs -WindowStyle Hidden' ],