出于某种原因,我们正在提供带有我们自己的安装 GUI 的产品,这意味着我们将在后台静默运行 msi 安装。
通过使用 MSI API“MsiInstallProduct”,我可以静默安装该产品,但我不知道如何获取此安装的进度数据以及如何取消它。
有人有什么想法吗?
最佳答案
2018 年 6 月更新:虽然下面显示的工具不再可供下载,但我通过 Wayback machine 找到了它。我认为链接到它是可以并且合法的,因为该工具是免费软件。更新了下面的链接。
更新:遗憾的是,Wise 的这个工具无法再下载。我也不确定是否可以分发它。它似乎是一个免费工具,作为其主要 Wise Package Studio 套件的一部分分发,但我不认为它是开源的。我希望他们将其作为开源工具发布。
由于一系列 legal issues 原因,Wise 包装产品已停产。 .
<小时/>我相信您可以通过 MSI API 获取进度,但如果我是您,我只会在通过 msiexec.exe 调用安装后显示 MSI 本身的进度条。
MSI 支持多种不同的安装级别(完全、完全静默、基本 GUI、简化 GUI 等)。就您而言,听起来您想要一个基本的用户界面。这会产生一个进度条,您可以在其中隐藏取消按钮,并可以选择显示完成模式对话框:
静默安装,带有进度条,没有取消按钮,最后没有模式对话框:
msiexec.exe /I "Test.msi" /QB-!
为了避免手动构建这些愚蠢的 msiexec 命令行,请使用 Wise 的 msi 命令行构建器工具:http://www2.wise.com/filelib/WICLB.exe (从 Wayback 机器中复活)。
请通过virustotal.com运行下载为了安全。
<小时/>
相关:
关于installation - 如何与静默安装的 msi 交互? (进度数据并取消),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1659924/