2014-06-10 181 views
1

我使用Visual Studio 2010创建了一个msi文件。我使用msiexec/a从msi文件中提取所有文件,然后验证它是否包含名为version.config的文本文件。我打开这个文件,并验证它有最新版本。 我在Windows-2003计算机上成功安装了msi文件,并查看了安装的version.config的内容。令我惊讶的是,旧的version.config文件已经安装!使用msiexec/a,我再次在测试计算机上验证msi文件是否包含最新版本的version.config文件。我卸载了应用程序,我验证了所有已安装的目录都已删除,然后重新安装应用程序。再次,旧的version.config文件已安装!看来,Windows安装程序有一个地方旧版本的.config文件! 这是非常糟糕的,因为其他文件的旧版本可能已经安装了,而我没有注意到它! 为什么会发生这种情况,我该怎么做,以便msi文件安装最新的文件版本,而不是某些缓存版本?Windows安装程序安装旧文件

我添加详细日志记录和以下输入关于version.config文件中记录:

MSI(一个或多个)(14:E4)[09:18:57:594]:执行运算:ComponentRegister(COMPONENTID = {B38411CB-AEFB-CD55-F7F7-71CD83323CBD},KeyPath = C:\ Unisystems \ Runtime \ Version.config,State = 3,Disk = 1,SharedDllRefCount = 0,BinaryType = 0) 1:{700E649A-3C70 -4C73-965E-2EE7DA72D74C} 2:{B38411CB-AEFB-CD55-F7F7-71CD83323CBD} 3:C:\ Unisystems \ Runtime \ Version.config

MSI(s)(14:E4)[09:19: 01:875]:执行op:FileCopy(SourceName = VERSIO〜1.CON | Version.config,SourceCabKey = _26B563DCBD184EACA09AC6F37F1FB178,DestName = Version.config,Attrib utes = 512,FileSize = 157,PerTick = 32768,VerifyMedia = 1 ,,,,, CheckCRC = 0 ,,, InstallMode = 58982400 ,,,,,,,) MSI(s:14:E4)[09 :19:01:875]:文件:C:\ Unisystems \ Runtime \ Version.config;待安装;不会修补;文件'_26B563DCBD184EACA09AC6F37F1FB178'的源文件已被压缩 InstallFiles:File:Version.config,目录:C:\ Unisystems \ Runtime \,大小:157 微星(14:E4)[09:19:01:875]:注意:1:2318 2:C:\ Unisystems \ Runtime \ Version.config

这些条目对我来说似乎还行。日志的大小是3MB,我可以在某处上传它。

回答

0

您需要发布安装程序日志来进行调试。 MSI不缓存并随机安装旧文件。我的猜测是你有一个在安装过程中执行的自定义操作,它不会在管理员安装期间执行,它会影响结果。

+0

您还需要发布有关确切场景的更多信息。事实上,现有的文本文件意味着您可能实际上正在尝试升级,并且需要使用VS调用RemovePreviousVersions的内容。人们重建VS安装文件并重新运行它们并不罕见,请参阅修复/删除并假定修复将使用MSI中的新文件更新产品 - 它不会! – PhilDW

0

谢谢你,在更好地调查安装项目后,我发现一个修改此文件的自定义操作。请原谅我指责Windows安装程序。