65.9K
CodeProject 正在变化。 阅读更多。
Home

Windows Installer数据库差异工具

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.68/5 (15投票s)

2004年12月22日

CPOL

2分钟阅读

viewsIcon

71651

downloadIcon

931

一个命令行工具,用于生成两个 Windows 安装程序数据库的 XML 和/或 HTML 差异报告。

引言

Windows Installer 数据库非常适合将应用程序或组件的所有部署需求封装到一个文件中。但是,如果您的安装程序突然崩溃,这些文件的相当不透明的性质会使找出问题所在变得困难。

此工具是一个命令行实用程序,它将生成两个 Windows 安装程序数据库的差异报告。它输出 XML 和 HTML 版本,并支持 MSM 和 MSI 数据库。

背景

最近,就在我们对一个大型软件版本进行最终测试时,我们的测试人员发现我们的安装程序突然在 NT4 上停止工作,而在不久之前它一直可以正常工作。我有一个可以工作的 MSI 数据库,还有一个不能工作的数据库,但它们有什么不同?

我使用 Orca(MS 平台 SDK 工具)来寻找罪魁祸首,但安装程序数据库中有数十个表,对于大型应用程序,其中一些表将有数百条记录。 深入研究如此多的数据很快就会变得痛苦。

幸运的是,平台 SDK 还包含一个 VBScript 文件,它将差异化两个数据库(<SDK_PATH>\Samples\sysmgmt\msi\Scripts\WiDiffDb.vbs,以防您想知道)。 此脚本的输出虽然有用,但不太容易理解或导航。 虽然它允许我找到问题,但我决定将来需要一些更好的东西。

(对于好奇的人:问题实际上是构建机上的病毒扫描程序升级。它更新了一些先前从我们用于构建合并模块的 VS.NET 部署项目中排除的系统文件。当手动排除的依赖项的版本发生更改时,排除将神奇地消失,即使 .vdproj 文件本身几个月没有更改。

微软,如果您正在阅读此内容:如果您对 VS.NET 2005 进行一项更改,允许我禁用部署项目中检测到的依赖项的自动包含!)

使用该工具

使用 MSIDiff.exe 非常简单。只需为其提供您想要比较的两个数据库的路径,它就会为您生成报告。如果您真的喜欢分页浏览控制台输出,请使用 -verbose 标志。

XML 和 HTML 格式的示例输出可在 此处 下载。

MSIDiff <PATH1> <PATH2> [-html] [-xml] [out=<PATH3>] [-view] [-verbose]

PATH1 and PATH2 are paths to the MSI or MSM databases to compare
-html or -xml indicate what type of output to generate
PATH3 is the name of the output file to create
        If not specified, the output will be created in the same folder as PATH1
 with a name derived from the input files
        If PATH3 is relative, it will be created relative to PATH1
-view will open the output file in a web browser
        If both -xml and -html are specified the html will be shown
-verbose outputs status to the console

关注点

差不多就是这样了。我希望这能对您有所帮助!

历史

  • 2004/12/21 - 初始发布。
© . All rights reserved.