在应用程序本身内启动python应用程序的卸载

时间:2015-09-29 09:31:12

标签: python windows windows-installer py2exe msiexec

我有一个用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()

我的问题是上面的代码片段是否会卸载应用程序,即使它正在运行,其次如果我触发卸载并关闭主应用程序,卸载会继续吗?或者子进程与父进程一起死亡?

1 个答案:

答案 0 :(得分:0)

您可以调用卸载并退出以避免锁定文件。 MSIExec将继续运行。即使这样,这也不是真正的问题,因为无论是否重启,MSI都可以删除它。

真正的问题是您的流程需要提升才能使/ qn正常工作。在静默运行时,MSI不会从标准用户执行UAC提示。 / qb会。

或者您的应用程序是按用户安装的,并且不需要提升。