Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Installation 如何以静默方式安装msi?(进度数据并取消)_Installation_Windows Installer_Silent Installer - Fatal编程技术网

Installation 如何以静默方式安装msi?(进度数据并取消)

Installation 如何以静默方式安装msi?(进度数据并取消),installation,windows-installer,silent-installer,Installation,Windows Installer,Silent Installer,出于某种原因,我们正在提供一个带有我们自己的安装GUI的产品,这意味着,我们将在后台以静默方式运行msi安装 通过使用MSI API“MsiInstallProduct”,我可以静默地安装产品,但我不知道如何获取此安装的进度数据以及如何取消它 有人有什么想法吗?2018年6月更新:虽然下面显示的工具不再可供下载,但我是通过Wayback机器找到的。我认为链接到它是合法的,因为这个工具是免费的。更新了下面的链接 更新:令人遗憾的是,Wise提供的此工具不再可下载。我也不确定是否可以分发它。它似乎是

出于某种原因,我们正在提供一个带有我们自己的安装GUI的产品,这意味着,我们将在后台以静默方式运行msi安装

通过使用MSI API“MsiInstallProduct”,我可以静默地安装产品,但我不知道如何获取此安装的进度数据以及如何取消它


有人有什么想法吗?

2018年6月更新:虽然下面显示的工具不再可供下载,但我是通过Wayback机器找到的。我认为链接到它是合法的,因为这个工具是免费的。更新了下面的链接

更新:令人遗憾的是,Wise提供的此工具不再可下载。我也不确定是否可以分发它。它似乎是一个免费的工具,作为他们主要的Wise软件包Studio套件的一部分分发,但我认为它不是开源的。我希望他们能把它作为一个开源工具发布

Wise包装产品因一些原因而停产


我相信您可以通过MSIAPI获得进度,但如果我是您,我会在通过msiexec.exe调用安装后从MSI本身显示进度条

MSI支持几种不同的安装级别(完整、完全静默、基本GUI、精简GUI等)。在您的情况下,听起来您需要一个基本的UI。这将生成一个进度条,您可以在其中隐藏“取消”按钮,并可以选择显示完成模式对话框:

使用进度条、无取消按钮和结尾无模式对话框进行静默安装:

msiexec.exe /I "Test.msi" /QB-!
为避免手动构造这些愚蠢的msiexec命令行,请使用Wise:(从Wayback机器中复活的msi命令行生成器工具)

为了安全起见,请运行下载


相关的


在MSInstallProduct之前,您需要使用MsiSetExternalUI或MsiSetExternalUIRecord指定外部UI处理程序(后者更好,但MSI版本要求更高)。Windows Installer希望您处理的每条消息都将调用您指定的函数。这将为您提供数据,并让您有机会作出响应,告诉它取消。如果您需要MSI 4.5或更高版本,可以使用嵌入式外部UI处理程序DLL,它不需要引导。

以下是一个示例项目,它似乎可以执行您所指的操作:

我会让你投票表决,但不会赞成我的答案。我们没有使用msi GUI,因为它不适合我们的产品风格,所以我们提供了一个更酷的进度条,我所需要的只是设置进度条的进度数据。msi的基本GUI是不可接受的。我仍然无法从纯API中取消它,对吗?下面是一个如何使用MSI公告牌和进度条的示例:。如果这不是您所需要的,请查看以下参考资料:记住单击“查看所有文件”按钮(否则您只会得到一个演示)。