2013-02-06 18 views
1

我通过PowerShell的安装文件默默的,但想给上安装进度的反馈。我似乎无法在任何地方找到这些信息。这是我运行该exe文件的代码:从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做异步管线电话?

谢谢

回答

2

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

我想尝试看看你的exe文件,看看它是否有一个“基本UI”(或类似类型),您可以用它代替无声选项模式。最后一种选择是使用这种选项重新打包设置(仅使用进度条自动进行安装)。该解决方案仍然只能在单独的窗口中显示进度条,而不是在PowerShell本身中。

+0

我不认为这是可能的。我只是不确定是否有班级监测到我不知道的情况。我想我可以做一个小小的欺骗,并通过异步调用管道来监视输出文件夹,以检查其大小与预先确定的最大大小。 –