【问题标题】:Display progress of exe installation from powershell?从powershell显示exe安装进度?
【发布时间】:2013-02-07 06:00:36
【问题描述】:

我正在通过 powershell 静默安装文件,但想就安装进度提供反馈。我似乎无法在任何地方找到这些信息。这是我运行 exe 的代码:

$exe = "wls1033_oepe111150_win32.exe"
$xmlLocation = Resolve-Path "silent_install.xml"
$xmlLocation = "-silent_xml=" + $xmlLocation
$installLogLoc = Resolve-Path "wls_install.log"
$installLogLoc = "-log=" + $installLogLoc
$AllArgs = @('-mode=silent', $xmlLocation, $installLogLoc)
$filePath = Resolve-Path $exe
$p = New-Object System.Diagnostics.Process
$p.StartInfo.Filename = $filePath
$p.StartInfo.Arguments = $AllArgs
$p.Start();
$p.WaitForExit();

有没有办法做到这一点?我确实在安装 exe 的备用命令窗口中获得了提取过程的进度表,但除此之外,它在那里停留了大约 10 分钟,没有任何指示。

编辑:既然这是不可能的,有没有办法在运行 exe 时进行异步管道调用?

谢谢

【问题讨论】:

    标签: powershell


    【解决方案1】:

    如果我错了,请纠正我,但我 99% 确定这是不可能的。您的 exe 文件是单独的进程,而不是 PowerShell 脚本。它将无法将状态消息传递到您的 PowerShell 会话。唯一的可能性是检测设置日志文件,跟踪它并根据日志中的关键字更新 PowerShell 中的进度条。然而,这是一项艰巨的任务,您需要为每个设置文件进行自定义。

    我会尝试查看您的 exe 文件,看看它是否具有“基本 ui”(或类似类型)模式,您可以使用该模式代替静默选项。最后一种选择是使用这样的选项重新打包设置(仅使用进度条使安装自动化)。此解决方案仍将仅在单独的窗口中显示进度条,而不是在 PowerShell 本身中。

    【讨论】:

    • 我认为这是不可能的。我只是不确定是否有一个我不知道的监控它的类。我想我可以做一点作弊并监控输出文件夹,通过管道异步调用检查它的大小与预先确定的最大大小。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-04
    • 2019-02-19
    • 1970-01-01
    • 2023-03-28
    • 1970-01-01
    相关资源
    最近更新 更多