cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
Magnus
Level 6

Minor upgrade does not work

I run minor upgrade on version 5.4.6.0 to version 5.4.9.0.

The upgrade seems to work, all files were installed (upgraded).

But when I'm starting the installation again, I got the dialog "This setup will perform an upgrade of ..." again. I'm expecting the maintenance GUI.

Now I can't even remove it from Add/Remove programs either.

Please help me.

/Magnus
Labels (1)
0 Kudos

(18) Replies
Reureu
Level 10

What project type is it?

If it is an Basic MSI or InstallScript MSI project, you can:

  • Log what's going on while the minor upgrade is taking place and when you launch the installer again.
  • Use the Upgrade Validation Wizard to see if your installation package respects all rules to support a minor upgrade.
0 Kudos
Brandon_Lowe
Level 6

I have 3 different Basic MSI installation right now that we are working on and we just started on the minor upgrade part and they are all 3 doing the same thing. Once you upgrade to the new build/version it now will only run in upgrade mode. No matter what you do it is now in update mode.

I will try what is asked above to see if any of it helps.
0 Kudos
Magnus
Level 6

Yes I'm using Basic MSI project IE 2012, the wizard and logfiles gives me nothing that points in any direction that helps me solve this problem.

I'm still looking for a solution.

(Is this an IS2012 thing, I have not seen this using the IS2011)
0 Kudos
Magnus
Level 6

I have still not found any solution of this...

To reproduce this (takes 10 minutes).
0: unzip the attached zipfile, (contains and ism and a test app .exe).
1: Build the attached installation in IS2012 and install the build version.
2: Change version from 5.31.788.006 to 5.31.789.006 and build this version.
3: Install the minor upgrade 5.31.789.006.
4: Start the installation (3) again, now I expect the wizard to be launched in maintenance mode, but it only end up in upgrade mode.

Please help.

(I have just converted this project from IS2011 to IS2012, if that helps)
0 Kudos
Brandon_Lowe
Level 6

Make sure if you are following his steps above that you test it on a test machine because after you do it you will also not be able to uninstall.

I can duplicate it at will with the three new MSI installations we are developing in IS2012 right now.

After doing the upgrade and getting stuck where it will only want to upgrade I thought maybe the system just did not think it upgraded so I went back and tried to run the previous install again but it displayed and error that the product was already installed and would not run.

This problem is really bad for me and my team right now as we are getting ready for beta and I cannot let beta go with this error. I'm hoping it is just user error on my part but the fact that another team member has the same issue with a completely different install leads me to think not.
0 Kudos
Magnus
Level 6

You can always skip the minor upgrade, create a major upgrade instead, then it is possble to uninstall.
0 Kudos
Magnus
Level 6

I still don't know whats wrong in the ism, but when running FixIt program, it manage to solve the problem.

http://support.microsoft.com/fixit

See also: http://support.microsoft.com/kb/971187

If anyone could give me a hint what I shall do in the InstallShield project, I would be happy.
0 Kudos
Magnus
Level 6

After a lot of investigations it seems to be that the installer sets the Preselected property to "1", and I don't know why.

This property is used in SetupResume Condition in User Interface Sequence: "Installed And (RESUME Or Preselected) And Not PATCH"

How can I fix this?
0 Kudos
Reureu
Level 10

It is due to the way msiexec is called when performing a minor upgrade.
Your setup.exe calls msiexec and sets the REINSTALL property. Then the Preselected property gets set to "1".
MSDN says:
The installer sets the Preselected property to a value of "1" during the resumption of a suspended installation or when any of the following properties are specified on the command line. If the Preselected property has been set to 1, the installer does not use the Condition table to evaluate the selection of features.

It means the Preselected property is handled internally. As far as I know, it is an expected behaviour.
Did you run the Minor Upgrade Validation Wizard?
0 Kudos
Magnus
Level 6

Thanks!!
I can see in the msi log that REINSTALL=ALL is set from command Line, but can't find how to remove this "REINSTALL=ALL" from command line?

MSI (c) (0C:84) [11:33:18:770]: Command Line: REINSTALL=ALL
0 Kudos
Reureu
Level 10

You can't, and you shouldn't even try.
Users are not supposed to change the feature selection when performing a minor upgrade.

The minor upgrade is in actual fact a reinstallation of the same product, which only upgrades the components that have changed.
You can try to launch a minor upgrade from the command-line, in the same way as your setup.exe launcher does:
It would be something like:
msiexec /i "YourProduct.msi" REINSTALL=ALL REINSTALLMODE=vomus IS_MINOR_UPGRADE=1

What you need to do is use the minor upgrade validator to see if your setup can perform a minor upgrade at all.

So why would you try to reset the REINSTALL property? To perform a "standard" installation? If that's the case, you might want to go for a major upgrade.
0 Kudos
Magnus
Level 6

Now have found a solution of this problem.

If I change

ReinstallModeText=omus

to

ReinstallModeText=vomus

the upgrade suddenly works fine. You can try this in the attached file ATestInstall.zip (found in this early thread).

But I still want to know why ReinstallModeText=omus generates this bad behavior, is it a bug in InstallShield or msiexec, or s it something else in this ism-project that makes the "omus" setting fail?
0 Kudos
Reureu
Level 10

According to http://helpnet.flexerasoftware.com/isxhelp19/helplibrary/IHelpISXProperties.htm, the ReinstallModeText should not be relevant for a Minor Upgrade. But as you might have understood in my previous reply, REINSTALLMODE is relevant!
As stated in the documentation, ReinstallModeText and REINSTALLMODE are related: the value of ReinstallModeText is used to set the REINSTALLMODE when you click on Repair in a maintenance scenario.
So, if I follow your reasoning, the REINSTALLMODE property might be erroneously set to "omus" during your minor upgrade.
When performing a minor upgrade, the "v" in the REINSTALLMODE property is required. "v" means "runs from source and recaches local package"

Why don't you try the following:
[LIST=1]
  • Leave the ReinstallModeText property set to its default value (omus) in the Property Manager
  • Rebuild your installation package
  • Try to launch your minor upgrade using msiexec
    msiexec /i "Blabla.msi" REINSTALL=ALL REINSTALLMODE=vomus IS_MINOR_UPGRADE=1 /L*vx C:\Logfile.txt
    or
    setup.exe /V"/L*vx C:\Logfile.txt"

  • Then analyze your logfile to see whether the REINSTALLMODE property changes during the upgrade. It shouldn't!
    If it is reset to omus during the upgrade, then try to see which action resets it. You should be able to narrow it down.


    Did you try the minor upgrade validation tool?
  • 0 Kudos
    Magnus
    Level 6

    Hello, thanks for helping me!! So, if "v" is required in minor upgrade, your reasoning sounds to be correct.

    I don't really understand "runs from source and re-caches local package", could you please explain?

    I have tried the upgrade validation tool, but it give me nothing, the only thing I changed between the releases is actually the version number.

    BR
    Magnus
    0 Kudos
    Magnus
    Level 6

    OK, running as suggested above give me folowing logFile:

    [FONT=Courier New][SIZE=1]Info 2726.Action not found: SetMediaPackagePathRegistryEntry.
    Action ended 12:06:59: SetMediaPackagePathRegistryEntry. Return value 0.
    MSI (c) (F8:1C) [12:06:59:433]: PROPERTY CHANGE: Modifying REINSTALLMODE property. Its current value is 'vomus'. Its new value: 'omus'.
    Action ended 12:06:59: SetupResume. Return value 1.
    [/SIZE][/FONT]
    Need help from here finding where REINSTALLMODE resets to "omus"
    0 Kudos
    Reureu
    Level 10

    About the "v" in REINSTALLMODE: As you know, when installing an MSI package, one slightly adapted version of the MSI package is cached on the local machine (in C:\Windows\Installer).
    When reinstalling or repairing product, you can ask Windows Installer to re-cache the local MSI package.
    As explained earlier, the minor upgrade consists of reinstalling the same product with a package with the same ProductCode, but a higher version.
    If everything works, you would expect the product to be installed as if it had been directly installed with the latest package. Therefore, the local MSI package needs to be recached with the latest version so you can perform a maintenance, a repair or a deinstallation.

    As you probably know, you need to tell Windows Installer how to behave some files/registry entries already exist on the target PC. Shall they be overwritten or not? What rules shall be applied?
    This is actually the main purpose of the REINSTALLMODE property. On top of that, it allows you to tell MSI to recache the local package.
    With that in mind, I would suggest you type msiexec /? in a command prompt and read the description of the various parameters.

    As for you logfile, just post it on the forum.

    It's a pleasure to help when people learn something from it. Maybe I should start a consultancy business 😉
    0 Kudos
    Reureu
    Level 10

    Hi Magnus,

    I assume you managed to solve your problem with the REINSTALLMODE property.
    Am I right in thinking that it was due to the Next button of the SetupResume dialog sending a ReinstallMode event with [ReinstallModeText] as argument?

    Regards,
    Reureu
    0 Kudos
    Magnus
    Level 6

    Yes, I removed the event in the SetupResume dialog and now the installation work like a charm, many thanks for all help I got from you!!!

    Regards
    Magnus
    0 Kudos