0

我正在尝试创建一个 vb.net 项目,该项目将调用多个 msi 进行安装。

我已经能够使用

Program.StartInfo.FileName = "C:Windows\System32\msiexec.exe"
Program.StartInfo.Arguments = "/i  MsiName.msi /qb”
Program.Start()
Program.WaitForExit()

这可行,但我希望能够使用该表单显示与安装进度相关的进度条,我认为该进度条使用 MsiSetExternalUI 并能够将退出代码传递给 exe。

我不确定如何以这种方式调用 msi。任何人都可以提供代码来调用一个 msi 并传递此信息,以便我可以在表单上显示它吗?

谢谢您的帮助。

更新

我可以找到一些 C++ 示例和编码,但不幸的是,我对脚本编写相对较新,所以我不知道如何将 C++ 转换为 VB.net,因此对于此过程的编码的任何帮助将不胜感激。

4

1 回答 1

0

查看 Windows Installer XML 的 (Wix) 部署工具框架 (DTF) MSI 互操作库 (Microsoft.Deployment.WindowsInstaller.dll) 它包含调用安装所需的所有部分,并提供外部 UI 处理程序来接收 ProgressBar 更新消息然后您可以路由到您的 VB.Net UI。

有关详细信息,请参阅以下主题和子主题:

使用 MsiSetExternalUI 监控安装

这些示例在 C++ 中使用 MSI Win32 函数,DTF 互操作库用类封装了所有这些。DTF 帮助文件告诉您哪些类和方法映射到哪些 Win32 函数。

于 2013-07-30T13:21:50.930 回答