Inno Setup编译时SW_HIDE无法隐藏PowerShell窗口的问题及解决
问题修复方案
这个问题是可以修复的,原因在于SW_HIDE是传递给系统的窗口显示参数,但PowerShell启动时可能会先创建窗口再响应隐藏指令,或是NSIS的Exec指令调用控制台程序时的特性导致弹窗出现。以下是几种可行的解决方法:
给PowerShell添加窗口隐藏参数:在PowerShell命令行中加入
-WindowStyle Hidden,同时搭配-NoProfile可以减少启动加载时间,修改后的指令如下:#expr Exec( \ "powershell", "-NoProfile -ExecutionPolicy Bypass -WindowStyle Hidden -File UpdateDatabaseVersionInfo.ps1", \ SourcePath, SW_HIDE)改用NSIS的
ExecShell指令:ExecShell对控制台程序的窗口隐藏支持更稳定,调整后的指令格式:#expr ExecShell("open", "powershell", "-NoProfile -ExecutionPolicy Bypass -File UpdateDatabaseVersionInfo.ps1", SourcePath, SW_HIDE, "")通过
-Command参数间接执行脚本:将脚本调用逻辑通过命令行传递,避免单独启动脚本窗口,示例:#expr Exec( \ "powershell", "-NoProfile -ExecutionPolicy Bypass -WindowStyle Hidden -Command ""& 'UpdateDatabaseVersionInfo.ps1'""", \ SourcePath, SW_HIDE)
注意:如果脚本路径包含空格,需要用引号将脚本路径包裹,确保参数解析正确。
内容的提问来源于stack exchange,提问作者Andrew Truckle
相关产品推荐
相关产品推荐

