2016-05-13 57 views
0

我正在开发一个Windows应用程序(使用vb.net),可以安装各种版本的运行时,如vC++,Direct X,.net框架等一台PC。我的程序必须能够在后台一次运行一个运行时安装程序(msi & exe),并执行以下操作:如何捕捉安装进度和vb.net中的安装程序的返回值

1.检查天气运行时是否已安装(以前)。
2.在程序主窗体的进度条中显示安装进度。
3.最后从安装程序获取返回码(退出代码)以指示安装是否成功。

执行上述任务需要哪些代码?

另外我想知道安装程序可以返回的所有可能的返回代码(值)。

回答

2

所有这些redistributable可能有不同的命令行选项,所以它不可能是一切的一个答案。

目前尚不清楚如何获得安装进度。这几乎肯定不可能或非常困难。你问的是如何运行一个程序来“窃取”其他一些程序的输出,而且在很多情况下这将是Windows Installer。如果我有一个启动Windows Form程序的程序,那么你就会问“如何获取该程序的内容并窃取输出消息”。这不是一个安装问题,它是一个Windows消息/ Windows消息循环问题。

这些设置使用的检测方法在内部编码(或配置为内部数据),因此您还要问所有这些程序中的代码是如何检测未安装依赖项的(在多个操作系统版本和32位和64位),其中一些可能在网络上可用,但它不太可能适用于每个可再发行组件。

您可能也有EULA的问题。有些可再发行组件需要EULA才能被接受,并且除非它被接受,否则可能不会安装,或者某些可再发行组件可能包含类似ACCEPTEULA = 1的命令行选项(仅作为示例)。

基本上你应该:

  1. 可以找到所有这些再分发,看看他们是否有一个显示只有进步的一个选项的命令行选项,然后让他们显示。

  2. 同样,看看他们是否有文件,告诉你,如果退出代码意味着成功与否。

  3. 不要打扰试图找到所有检测方法 - 只需运行redist,如果目标已经安装,它将不会执行任何操作。

最后,你正在重新发明车轮。 WiX,Bootstrap Manifest Generator,InstallShield,Advanced Installer(等等)都提供了引导程序,这些程序已经成为安装软件的先决条件。由于存在现有解决方案,因此没有人再编写代码来执行此操作。

相关问题