在 Nsis 中找到 Powershell 的路径

Find Path to Powershell in Nsis

我在 NSIS 安装程序中使用 Powershell 运行 一些需要执行的脚本。大多数答案会告诉您使用类似于此的内容:

nsExec::ExecToStack 'powershell -inputformat none -ExecutionPolicy RemoteSigned -File "file1.ps1"'

此解决方案的问题在于它依赖于 Windows 中的路径变量。如果 Powershell 未在路径中设置,则永远不会执行 Powershell。

有没有更好更可靠的方法来确保即使没有设置路径变量也能执行 Powershell?

Powershell的安装路径是(据我所知) C:\Windows\System32\WindowsPowerShell\v1.0

这可以用于在没有路径变量的情况下可靠地打开 Powershell 吗?还是可以通过某种方式从注册表中读取路径?

默认情况下,PowerShell 路径包含在 PATH 环境变量中,因此除非有人故意从 PATH 变量中删除目录,否则仅使用可执行文件名称应该可以。不过,我建议指定扩展名。

安装路径是相对于Windows系统目录的,所以如果你想使用完整路径,我会使用$SYSDIR变量:

$SYSDIR\WindowsPowerShell\v1.0\powershell.exe