Python 通过paramiko运行msi安装程序并等待任务完成

Python 通过paramiko运行msi安装程序并等待任务完成,python,synchronization,windows-installer,paramiko,Python,Synchronization,Windows Installer,Paramiko,我在这里遇到了一些麻烦。 愿望 一个python脚本,可以在我的所有工厂机器上更新第三方软件 我是如何做到的 我编写了一个python脚本,它使用Paramiko对所有计算机进行ssh,复制所需文件并在任何成功连接上运行.msi包 问题 好吧,我并没有找到任何方式或方法来等待msi进程结束并返回任何退出代码。 我需要等待安装完成并获取返回代码,因为我需要复制x86程序安装目录中的修补程序文件。 因此,我尝试了以下方法: stdin, stdout, stderr = self.client.e

我在这里遇到了一些麻烦。

愿望
一个python脚本,可以在我的所有工厂机器上更新第三方软件

我是如何做到的
我编写了一个python脚本,它使用Paramiko对所有计算机进行ssh,复制所需文件并在任何成功连接上运行.msi包

问题
好吧,我并没有找到任何方式或方法来等待msi进程结束并返回任何退出代码。 我需要等待安装完成并获取返回代码,因为我需要复制x86程序安装目录中的修补程序文件。
因此,我尝试了以下方法:

stdin, stdout, stderr = self.client.exec_command("msiexec.exe /a msi_file_name.msi /qn")
但上面提到的似乎没有人会等到安装结束

我向你们提出的问题
我想知道是否有办法运行msi,让shell等待任务结束。 通过python或exec_命令,使用一些cmd解决方法,这两种方式都可以

谢谢,

Hele

这不是一个Paramiko问题,甚至不是Python问题。这是
/qn
开关的结果。使用该开关,顶级
msiexec
进程将安装委托给隐藏的子进程,并立即终止自身

考虑使用
/qb
/qb或类似


复制自Inno Setup上的类似问题:

谢谢,但我的目标是通过ssh管理会话安静地安装应用程序,/qb实际上会支持GUI,这是一个问题:没有人会与modal交互。另外,我知道这不是一个直接的paramiko问题,但正如我所问的,也许有一种方法可以通过paramiko(例如:一个ipotetic函数client.exec_msi())实现,paramiko无论如何都不会帮你。所以,如果您知道这不是Paramiko/Python问题,那么您提出了一个错误的问题。考虑只询问本地MSI唯一的问题:“如何从命令行执行沉默MSI安装并等待它完成”。一旦有了答案,就可以通过SSH/Paramiko远程执行同样的操作。您当前的问题需要MSI和Paramiko/Python/SSH知识。你将很难找到同时具备这两方面专业知识的人。限制问题的范围。
stdin, stdout, stderr = self.client.exec_command("start /wait msiexec.exe /a msi_file_name.msi /qn")
stdin, stdout, stderr = self.client.exec_command("msi_file_name.msi /qn")