Somehow we ended up with something going wrong with one of our recently deployed upgrades (internal deploy, only about a dozen machines or so) and there are now 2 entries for our program showing up in windows add/remove program and I'm trying to figure out what could have caused this. In a nutshell what does windows use to determine whether a program is replacing a previous version or if it's a new program?
We are using WiX to create our installers, but nothing in the SVN revisions shows much out of the ordinary (been working fine for the past year with over 100 upgrades). Product version is * because w开发者_运维知识库e're forcing a major upgrade each time, but the upgrade code has never changed.
I believe that the Windows considers any applications with the same "Minor Version" number to be the same, and will uninstall an older version w/ the same "Minor Version" when installing a new application. The numbering convention works as follows:
<major version>.<minor version>.<build number>.<revision>
Hopefully that helps. Here are some resources from MS:
http://msdn.microsoft.com/en-us/library/51ket42z.aspx
http://msdn.microsoft.com/en-us/library/aa368032(VS.85).aspx
I once had this issue when my major upgrade didn't contain or remove a file from the previous version. So my question would be, between the 2 versions hanging around did the first have a file that the second does not? That would be what I would check.
What turned out to be the issue was that the [revision] part of the version number isn't checked and we'd occasionally have internal releases that differed only in [revision] number.
I had an issue with upgrade not working because the install had changed from per-user mode to per-machine mode. I'm not sure what was the exact cause, but I think it had to do with changes to the WixUI that was being used. Now it's set explicitly.
精彩评论