首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从msi安装中检索详细结果

如何从msi安装中检索详细结果
EN

Stack Overflow用户
提问于 2016-07-14 09:22:01
回答 4查看 503关注 0票数 0

我有一个由Wix工具集创建的.msi文件,用于安装5个驱动程序。我有一个安装应用程序,可以使用msiexec.exe命令通过CreateProcess启动.msi,并提供一个UI。目前,我的需求是获得安装的详细结果-哪些驱动安装成功,哪些驱动安装失败。既然我只能得到CreateProcess的结果,那么如何从安装中检索详细的结果呢?如果你能提供一些关于这个问题的信息,我将非常感谢。

我使用difx:.msi标志创建了驱动程序文件,如下所示:

代码语言:javascript
复制
<difx:Driver AddRemovePrograms="no" DeleteFiles="no" ForceInstall="no" Legacy="no" PlugAndPlayPrompt="no" />
EN

回答 4

Stack Overflow用户

发布于 2016-07-15 01:16:53

基于MSI的设置是事务性的。它要么全部工作,要么全部失败,并将系统回滚到其以前的状态。看起来你已经做出了一个选择,击败了这个范例,并让它部分成功,留下了一些安装的驱动程序和其他的驱动程序。

您似乎还隐藏了安装程序的UI,因此找不到错误信息。

我有两个建议:

  1. 不要使用CreateProcess()和“即发即忘”模型。在此模型中使用MsiSetExternalUIRecord:

https://msdn.microsoft.com/en-us/library/windows/desktop/bb309215(v=vs.85).aspx

这里也有C# p/invoke的等价物。如果您不想显示所有的UI,那么只要收集错误消息并将其显示给用户就可以了。这是获取实际错误消息的唯一可靠方法。这是您拥有UI并仅收集您认为重要的消息的受支持方式。

  1. 允许失败的驱动程序安装使整个安装失败并将其全部回滚。它实际上可能已经是这样了。如果安装部分成功,并且没有安装四个驱动程序,计划是什么?您无法再次运行MSI,因为它将进入修复/维护模式。如果用户需要修复某些东西并重新安装,则无论如何都需要卸载该产品。
票数 1
EN

Stack Overflow用户

发布于 2016-07-14 09:29:10

您可以使用/L*V参数检索详细的安装日志:

代码语言:javascript
复制
msiexec /i "C:\MyPackage\Example.msi" /L*V "C:\log\example.log"

你可以阅读更多的here

其总体结构为:

代码语言:javascript
复制
msiexec.exe [/i][/x] <path_to_package> [/L{i|w|e|a|r|u|c|m|o|p|v|x+|!|*}][/log] 

/L - enable logging i - include status messages w - include non-fatal warnings e - include all error messages a - mention when an action is started r - include action-specific records u - include user requests c - include the initial UI parameters m - include out-of-memory or fatal exit information o - include out-of-disk-space messages p - include terminal properties v - verbose output x - include extra debugging information + - append to an existing log file ! - flush each line to the log * - log all information, except for v and x options

票数 0
EN

Stack Overflow用户

发布于 2016-07-14 15:08:04

另一种更简单的方法是向机器上的check if the drivers are installed编写一个小的C#自定义操作,而不是解析日志。

您需要将该自定义操作安排为延迟(而不是立即)关闭安装过程的结束。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38364091

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档