Я работаю над методом чтения UninstallStrings для программного обеспечения из реестра. А затем я пытаюсь выполнить эти строки, чтобы удалить программное обеспечение.
Когда я распечатываю переменные, содержащие информацию о строке, он правильно печатает всю строку (с аргументами), но я не могу запустить эти строки. Эта проблема состоит из нескольких частей.
Некоторые строки установки отформатированы следующим образом
c:\file path\blah\app.exe /uninstall
"c:\file path\blah\app.exe" /uninstall
c:\file path\blah\app.exe --uninstall
'c:\file path\blah\app.exe' /uninstall
Я пытаюсь найти лучший способ запустить программу удаления. «универсальным» способом. Есть ли способ сделать это эффективно?
Я пробовал выполнять строки двумя разными способами.
& $uninstaller
и
Start-Process -FilePath cmd.exe -ArgumentList '/c', $uninstaller -Wait
Ни один из них, похоже, не работает. Ошибок нет, но похоже, что они не запускаются, потому что, когда я проверяю приложение, оно все еще установлено.
И я попытался разделить текст несколькими способами.
$Uninstaller.split("/")[0]
$Uninstaller.split("/",2)[1]
$($Uninstaller) | Invoke-Expression
$Uninstaller.Substring(0,$Uninstaller.lastIndexOf('.exe '))
$Uninstaller.split('^(*?\.exe) *')
Заранее спасибо!