确定MSI是否已被修改的最佳方法是什么

时间:2015-02-17 13:14:19

标签: c# windows-installer windows-api-code-pack file-comparison filecompare

在我们的组织中,每次成功构建后,自动脚本都会将所有MSI从构建位置复制到共享文件夹中的新文件夹。有超过150个项目。我面临的问题是,即使只更改了20个项目,自动脚本也会复制并粘贴所有150个MSI到新文件夹。因此,我无法确定哪个项目的MSI在最近的版本中经历了变化。如果我看到时间戳,则对于新文件夹中的所有MSI都是相同的。

任何人都可以建议通过程序或使用任何工具手动识别修改过的MSI列表吗?如果手动,它不应该是逐个文件比较。

基本上,我想比较两个共享文件夹,以生成修改后的MSI列表。

请注意:我们无权访问构建位置,也无法更改现有的自动脚本。但我可以写新的。

1 个答案:

答案 0 :(得分:1)

Windows Installer程序包的Summary Information Stream包含Last Saved Time/Date Summary property。当您单击文件上的属性并转到详细信息页面(Origin | Content created属性)时,您可以在资源管理器中看到此信息。您可以使用任意数量的语言以编程方式访问它。如果使用C#,请查看Windows Installer XML(WiX)部署工具基础(DTF)Microsoft.Deployment.WindowsInstaller互操作程序集。它有一个SummaryInfo类,它有一个像这样的构造函数:

public SummaryInfo(
    string packagePath,
    bool enableWrite
)

从那里它有一个属性:

public DateTime LastSaveTime { get; set; }