1

I have 2 versions of product "product1" (1.2.2.2 and 1.2.2.3).

For both upgrade/downgrade, product1 is using "reinstall=all reinstallmode=vamus" MSI parameters so the always new files will be in installation directory.

If i do upgrade from 1.2.2.2 to 1.2.2.3 , not all new files are coping to installation directory. I am facing this problem only on windows 7 (both x86 and x64). No issues with XP (both x86 and x64).

I compared logs on xp and win7. I found following difference.

XP: SetSourceFolder(Folder=1\PROGRA~1\company~1\product~1\drivers\|program files\companyname\productname\drivers)

win7: Executing op: SetSourceFolder(Folder=C:\Windows\Installer\$PatchCache$\Managed\A7C0B53D545489A48A0183013BEF525E\1.2.2)

It is my setup. Our product supports both upgrades and downgrades. To make as simple as possible for clients, we choose "REINSTALL=All REINSTALLMODE=vamus" , so that these options supports for both upgrade and downgrade. Another important point is, this MSI doesn't have separate upgrade or downhrade information. MSI had plane components. All the components inside MSI are signed. Version information also embedded. My questions are 1) does windows installer behavior changed on win7? 2) does installer takes only a.b.c as version information? will it ignore after that?

Another important point is, this MSI doesn't have separate upgrade or downhrade information. MSI had plane components. "REINSTALL=All REINSTALLMODE=vamus" parameters ensures that always running msi version components goes to install directory. So far this method works for almost 5 years. Only win7 had problem.

To reproduce this problem... 1) install 1.2.2.2 by msiexec /i 1.2.2.2.msi 2) downgrade to 1.2.2.1 had no issues msiexec /i 1.2.2.1.msi REINSTALL=ALL REINSTALLMODE=vamus 3) upgrade to 1.2.2.2 causes problem msiexec /i 1.2.2.2.msi REINSTALL=ALL REINSTALLMODE=vamus 4) retry to upgrade again to 1.2.2.2 . This time no issues.

Another observation is, one of the component in MSI say "comp1" had 2 files say file1, file2. File1 is keypath to the component comp1. at the time of problem comes (step 3), file1 is not getting updated. But file2 is updating properly.

another observation. I ran above test on different different versions.

--> upgrade/downgrade between 1.2.1.1 and 1.2.2.1 working as expected --> upgrade/downgrade between 1.2.1.1 and 1.2.1.2 is not working as expected --> upgrade/downgrade between 1.2.2.1 and 1.2.2.2 is not working as expected

as mentioned above windows installer is considering version up to a.b.c. Upgrade/downgrade between a.b.c.x and a.b.c.y is causing problem on windows-7

Rajeshaz09
  • 348
  • 5
  • 14
  • Please provide some more information. Is this your own setup or one that you are trying to install from a third party? It looks like you are installing drivers. What drivers? Are they signed? If it is a third party product, which product? – Stein Åsmul Jun 16 '11 at 13:18
  • It is my setup. Our product supports both upgrades and downgrades. To make as simple as possible for clients, we choose "REINSTALL=All REINSTALLMODE=vamus" , so that these options supports for both upgrade and downgrade. Another important point is, this MSI doesn't have separate upgrade or downhrade information. MSI had plane components. All the components inside MSI are signed. Version information also embedded. My questions are 1) does windows installer behavior changed on win7? 2) does installer takes only a.b.c as version information? will it ignore after that? – Rajeshaz09 Jun 17 '11 at 05:08
  • Another important point is, this MSI doesn't have separate upgrade or downhrade information. MSI had plane components. "REINSTALL=All REINSTALLMODE=vamus" parameters ensures that always running msi version components goes to install directory. So far this method works for almost 5 years. Only win7 had problem. – Rajeshaz09 Jun 17 '11 at 05:11
  • To reproduce this problem... 1) install 1.2.2.2 by **msiexec /i 1.2.2.2.msi** 2) downgrade to 1.2.2.1 had no issues **msiexec /i 1.2.2.1.msi REINSTALL=ALL REINSTALLMODE=vamus** 3) upgrade to 1.2.2.2 causes problem **msiexec /i 1.2.2.2.msi REINSTALL=ALL REINSTALLMODE=vamus**. 4) retry to upgrade again to 1.2.2.2 . This time no issues. – Rajeshaz09 Jun 17 '11 at 05:16

3 Answers3

1

Only 3 first digit parts are valuable, so MSI didn't make difference between 1.2.2.2 and 1.2.2.3

se_pavel
  • 2,181
  • 1
  • 28
  • 42
  • Is this new restriction introduced in WindowsInstaller-5.0 version? Same installer is perfectly working on xp. – Rajeshaz09 Jun 24 '11 at 04:46
0

Are all the files properly listed in the File table with version and date information? Did the version numbers increment and dates get later in the upgrade package?

File versioning is critical to Windows Installer functionality; by default, a file with no version info is considered "user data" that shouldn't be overwritten during a reinstall or upgrade. Thus, upgrades are easiest--and don't require special command-line options--if they are replacing the files with higher version numbers or newer dates.

ewall
  • 27,179
  • 15
  • 70
  • 84
  • Ah, good. A couple questions then: Is there a chance that "File1" is in-use at the time of the upgrade? I'm sure you've already considered and possibly planned for situations where the program itself is running when the MSI is run, but also Windows Installer itself could be at fault, for example if custom actions are running simultaneously instead of sequentially... – ewall Jun 17 '11 at 13:12
  • another observation. I ran above test on different different versions. --> upgrade/downgrade between 1.2.1.1 and 1.2.2.1 working as expected --> upgrade/downgrade between 1.2.1.1 and 1.2.1.2 is not working as expected --> upgrade/downgrade between 1.2.2.1 and 1.2.2.2 is not working as expected as mentioned above windows installer is considering version up to a.b.c. Upgrade/downgrade between a.b.c.x and a.b.c.y is causing problem on windows-7 – Rajeshaz09 Jun 17 '11 at 13:59
-1

The correct parameters are:

REINSTALL="ALL" REINSTALLMODE="vamus"

Properties are case sensitive and their values must be enclosed in quotes.

Cosmin
  • 21,216
  • 5
  • 45
  • 60
  • A rare downvote from me, but as Jon Skeet put it "this is actively unhelpful". Setting REINSTALLMODE to vamus is dangerous for a setup that might contain merge modules or otherwise mess with files that aren't your own. It may downgrade system components and Windows 7 could be actively trying to block this. Exchange the a for o and make it vomus for a safe approach (reinstall if the file is missing or is an older version - http://msdn.microsoft.com/en-us/library/aa371182(v=vs.85).aspx). – Stein Åsmul Jun 16 '11 at 13:16
  • I agree with you about REINSTALLMODE, but I think the downvote is uncalled for. Firstly, I suggested the correct form of the parameters Rajeshaz09 was using. Secondly, he mentioned that files are not being installed during his minor upgrade, which usually happens when the files have the same version in both packages. So using "o" instead of "a" won't work. – Cosmin Jun 16 '11 at 13:45
  • I almost never downvote, and never unless I think the information is dangerous. I think precision and syntactic correctness is irrelevant if the end result is harmful. – Stein Åsmul Jun 16 '11 at 14:11