所有这些redistributable可能有不同的命令行选项,所以它不可能是一切的一个答案。
目前尚不清楚如何获得安装进度。这几乎肯定不可能或非常困难。你问的是如何运行一个程序来“窃取”其他一些程序的输出,而且在很多情况下这将是Windows Installer。如果我有一个启动Windows Form程序的程序,那么你就会问“如何获取该程序的内容并窃取输出消息”。这不是一个安装问题,它是一个Windows消息/ Windows消息循环问题。
这些设置使用的检测方法在内部编码(或配置为内部数据),因此您还要问所有这些程序中的代码是如何检测未安装依赖项的(在多个操作系统版本和32位和64位),其中一些可能在网络上可用,但它不太可能适用于每个可再发行组件。
您可能也有EULA的问题。有些可再发行组件需要EULA才能被接受,并且除非它被接受,否则可能不会安装,或者某些可再发行组件可能包含类似ACCEPTEULA = 1的命令行选项(仅作为示例)。
基本上你应该:
可以找到所有这些再分发,看看他们是否有一个显示只有进步的一个选项的命令行选项,然后让他们显示。
同样,看看他们是否有文件,告诉你,如果退出代码意味着成功与否。
不要打扰试图找到所有检测方法 - 只需运行redist,如果目标已经安装,它将不会执行任何操作。
最后,你正在重新发明车轮。 WiX,Bootstrap Manifest Generator,InstallShield,Advanced Installer(等等)都提供了引导程序,这些程序已经成为安装软件的先决条件。由于存在现有解决方案,因此没有人再编写代码来执行此操作。