我有一个用python编写的应用程序,使用py2exe冻结,并使用wix捆绑为msi。我想要实现的是提供一种直接从应用程序卸载应用程序的方法。为此,我将以下命令作为python
中的子进程运行command = "MsiExec /x{product-code of the application} /qn"
process = subprocess.Popen(command,shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
out = process.communicate()
我的问题是上面的代码片段是否会卸载应用程序,即使它正在运行,其次如果我触发卸载并关闭主应用程序,卸载会继续吗?或者子进程与父进程一起死亡?
答案 0 :(得分:0)
您可以调用卸载并退出以避免锁定文件。 MSIExec将继续运行。即使这样,这也不是真正的问题,因为无论是否重启,MSI都可以删除它。
真正的问题是您的流程需要提升才能使/ qn正常工作。在静默运行时,MSI不会从标准用户执行UAC提示。 / qb会。
或者您的应用程序是按用户安装的,并且不需要提升。