【问题标题】:Programatically install Python msi application from a Python script从 Python 脚本以编程方式安装 Python msi 应用程序
【发布时间】:2013-08-07 22:10:31
【问题描述】:

如何以编程方式安装位于此位置的 Python msi:

X:\install\python-3.3.2.msi

我知道我可以使用subprocess.call()Popen() 来做到这一点,但我不知道如何自动设置其他参数。比如让所有用户都可以使用该程序等。

我要做的是从 Python 脚本运行 msi 应用程序,这样每次我运行脚本时,它都会在运行脚本的机器上安装 python-3.3.2.msi

现在一个新问题是 Python msi 安装程序是否支持静默安装。实际上,我希望安装保持静默,即我希望安装程序“知道”命令行调用中的所有参数,并且根本不需要用户交互。请查看下面 Viktor Kerkez 的评论,让我知道您是否也会这样做。

是否可以通过命令行告诉所有必要的参数?

【问题讨论】:

  • 您的用户只需双击 .msi 文件,或直接从 Web 下载运行它。你想完成什么?
  • 我认为他正在尝试从 python 脚本启动 msi 应用程序,但它不起作用,因为 msi 不是可执行文件并且他不知道如何执行它。解决方法是调用msiexec:msiexec /i c:\path\to\python-3.3.2.msi /quiet /qn /norestart /log c:\path\to\install.log 但是我不确定Python msi安装程序是否支持静默安装...
  • @ViktorKerkez:这正是我要问的。所以,请允许我用你的表述更新我的问题。谢谢!
  • 我刚刚阅读了下面 Philm 建议的页面之一。它看起来像这样:ProcessStartInfo(exeFile, arguments) 我想知道 Python 是否可以以同样的方式接受参数。

标签: python windows-installer silent-installer


【解决方案1】:

通常每个精心设计的 MSI 都可以静默安装。应该尝试给定的标准命令行,其他可选参数可能是目录的 TARGETDIR 等。

msiexec 参数“/quiet”和“/qn”的作用相同,不要同时使用它们。

您的主要问题是关于管理员权限。如果您没有做特殊的事情(例如添加/更改手动清单),脚本通常不会以管理员权限运行。如果您只使用参数“/qb”而不是“/qn”,通常 MSI 应该提供 UAC。首先尝试一下,这是最简单(也许不是绝对最好)的解决方案。不是静默,而是无人值守的安装,对您来说可能就足够了。 或者甚至是“/qb+”然后你也会得到一个最终的盒子。

从脚本开始安装(或其他需要管理员权限的)需要:

1) 来自 .exe 的引导调用(如已编写的 setup.exe)在运行时已获得管理员权限

2) 您可以通过单击鼠标右键或手动添加一些用于鼠标右键/shell 集成的 shell 条目以管理员权限启动脚本。

3) 更改 pyhton 解释器本身的清单(或尝试兼容性标志“始终需要管理员权限”)。

如果你告诉我们,走哪条路,也许我们可以给出一些更详细的提示。 请在以下具有共同点的 SE 问题中阅读我的答案: Install msi with msiexec and c#

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-11
    • 2012-10-09
    • 2023-04-07
    • 2012-06-23
    • 1970-01-01
    • 2023-03-03
    • 1970-01-01
    相关资源
    最近更新 更多