PowerShell 7执行MSI安装弹出Windows Installer窗口无响应求助
Fixing msiexec Help Popup When Running MSI Install via PowerShell 7
我来帮你搞定这个问题——弹出Windows Installer帮助窗口百分百说明你的msiexec命令参数格式有问题,结合你给出的代码,主要有几个关键错误需要修正:
问题点分析
- 参数缺少必要的斜杠前缀:你写的
passive应该是/passive,msiexec的所有选项参数都必须以/开头,无斜杠的参数会被判定为无效,直接触发帮助弹窗。 /i参数与MSI路径的组合错误:你把/i(还漏写了前面的/)和MSI路径塞进了同一个数组元素里,在PowerShell的Start-Process中,这种写法会导致参数解析混乱,msiexec无法正确识别安装指令。- 日志参数的拆分问题:
/l* C:\tmp_installation\logs\Prime_log.txt作为单个参数也可能引发解析问题,最好拆分成两个独立元素。
修正后的代码
首先提前创建日志目录(避免因目录不存在导致安装失败):
$logDir = "C:\tmp_installation\logs" if (-not (Test-Path -Path $logDir)) { New-Item -ItemType Directory -Path $logDir | Out-Null }
然后调整参数数组和执行命令:
$webDeployInstallerFilePath = "C:\fa_components\PRIME\SUN TEST 2020.1 (x64).msi" $switch2 = @( "/i", $webDeployInstallerFilePath, "/quiet", # 二选一即可,/quiet是完全静默无界面,/passive显示进度条 # "/passive", "/l*", "C:\tmp_installation\logs\Prime_log.txt", "INSTALLDIR=C:\", "FRONTINIDIR=C:\ProgramData\Front\64bit\ini\", "FRONTINILOG=C:\ProgramData\Front\64bit\log\", "PRIME=C:\TEST Arena\", "ProgramMenuFolder=C:\ProgramData\", "COMMONAPPDATA_FRONTDIR=C:\ProgramData\Front\", "COMMONAPPDATA_FRONT64BITDIR=C:\ProgramData\Front\64bit\", "CommonAppDataFolder=C:\ProgramData\" ) Start-Process msiexec.exe -ArgumentList $switch2 -Wait -NoNewWindow
关键修正说明
- 把
/i和MSI路径拆成独立参数:PowerShell会自动处理路径中的空格,不需要手动加引号,避免解析错误。 - 给
passive补上/前缀:符合msiexec的参数规范,让程序识别这是被动安装选项。 - 拆分日志参数:
/l*作为单独的日志指令,路径作为独立参数,确保msiexec正确识别日志输出位置。 - 建议
/quiet和/passive二选一:同时使用可能引发冲突,根据需求选择完全静默或带进度条的安装模式。
内容的提问来源于stack exchange,提问作者vel
相关产品推荐
相关产品推荐

