Windows installer 列出需要由MSI“修复”(msiexec)修复的文件

Windows installer 列出需要由MSI“修复”(msiexec)修复的文件,windows-installer,Windows Installer,我知道有不同的修复安装的方法,使用UI控制面板或CLI msiexec.exe,但是: 我如何只列出在没有真正修复的情况下执行的操作。即,显示文件xyz丢失。或文件abc在安装后被修改,而不恢复它们。这些文件作为重要和关键文件安装。Windows Installer不会在该粒度级别公开有关其操作的信息。您可以编写一个外部UI处理程序,在设置::MsiSetExternalUI后启动修复操作调用::MsiConfigureProduct,然后在调用InstallValidate操作后评估组件状态。

我知道有不同的修复安装的方法,使用UI控制面板或CLI msiexec.exe,但是:


我如何只列出在没有真正修复的情况下执行的操作。即,显示文件xyz丢失。或文件abc在安装后被修改,而不恢复它们。这些文件作为重要和关键文件安装。

Windows Installer不会在该粒度级别公开有关其操作的信息。您可以编写一个外部UI处理程序,在设置::MsiSetExternalUI后启动修复操作调用::MsiConfigureProduct,然后在调用InstallValidate操作后评估组件状态。这应该能够为组件操作状态获取写入日志文件的相同信息。

Windows Installer不会在该粒度级别公开有关其操作的信息。您可以编写一个外部UI处理程序,在设置::MsiSetExternalUI后启动修复操作调用::MsiConfigureProduct,然后在调用InstallValidate操作后评估组件状态。这应该能够为您获得写入组件操作状态日志文件的相同信息。

这并不能回答您的问题,但基于您的兴趣,我建议您阅读:

主题挑战1:自我调用弹性非常有趣。它描述了应用程序与其安装程序之间的共生关系。MSIAPI旨在被应用程序用来增强健康检查,而不仅仅是通过COM激活和使用公布的快捷方式来调用


非常不幸的是,在过去的14年中,很少有应用程序费心将其提升到这一水平。

这并不能回答您的问题,但基于您的兴趣,我建议您阅读:

主题挑战1:自我调用弹性非常有趣。它描述了应用程序与其安装程序之间的共生关系。MSIAPI旨在被应用程序用来增强健康检查,而不仅仅是通过COM激活和使用公布的快捷方式来调用


非常不幸的是,在过去的14年中,只有非常非常少的应用程序费心将其提升到这一水平。

我认为Windows Installer不可能做到这一点。另一种方法是将.msi解压到一个临时文件夹中,然后手动将其区分开来,非常难看。。我只是觉得其他人可能也有同样的需求/这只在重新安装模式=amus的情况下有效。您必须考虑Windows Installer在成本计算过程中应用的所有业务规则文件版本控制规则。这就是Rob的答案涉及评估组件状态的原因。我认为Windows Installer不可能做到这一点。另一种方法是将.msi解包到一个临时文件夹中,然后手动将其区分开来,非常难看。。我只是觉得其他人可能也有同样的需求/这只在重新安装模式=amus的情况下有效。您必须考虑Windows Installer在成本计算过程中应用的所有业务规则文件版本控制规则。这就是为什么Rob的答案包括评估组件状态。他真的需要外部UI吗?我想知道他是否可以在InstallValidate之后编写一个定制操作,根据组件状态和sql查询创建一个操作列表,然后在ReadyToInstall之前的对话框中显示?当然,它只会出现在“更改”按钮上。似乎是可能的,但这不是我可能会花费$$$来编写的。自定义操作可以获得相同的数据,但它必须从自定义操作中获取数据,然后将其写入某个磁盘?然后取消安装。这对我来说似乎比使用外部UI处理程序更尴尬。我想他的故事对我来说并不清楚。我不知道他是想在“开始”菜单中安装一个应用程序,还是只想在开始交易前通知用户。我阅读了唯一的列表,其中列出了在没有真正修复部分问题的情况下会执行的操作,说不需要实际修复,只是一个操作列表。他真的需要外部UI吗?我想知道他是否可以在InstallValidate之后编写一个定制操作,根据组件状态和sql查询创建一个操作列表,然后在ReadyToInstall之前的对话框中显示?当然,它只会出现在“更改”按钮上。似乎是可能的,但这不是我可能会花费$$$来编写的。自定义操作可以获得相同的数据,但它必须从自定义操作中获取数据,然后将其写入某个磁盘?然后取消安装。这对我来说似乎比使用外部UI处理程序更尴尬。我想他的故事对我来说并不清楚。我不知道他是想在“开始”菜单上安装一个应用程序,还是
我只是想在开始交易之前通知用户。我阅读了唯一的列表,没有真正修复问题的一部分就可以执行的操作,说不需要实际修复,只是一个操作列表。