Jump to content


This is a ready-only archive of the InstallSite Forum. You cannot post any new content here. / Dies ist ein Archiv des InstallSite Forums. Hier können keine neuen Beiträge veröffentlicht werden.
Photo

how to support downgrade in Installshield basic msi project


3 replies to this topic

gmpk82

gmpk82
  • Full Members
  • 40 posts

Posted 15 April 2014 - 04:52

hi ,
 
    does Installshield basic msi project support downgrades, my customers are asking me to provide downgrade support. they do not want to bother about product version , they just need new files on target host whenever they run installer. Their install cases are like lower version on new version , new version on older version and same version on same version . please suggest me is it possible in basic msi project? if so where I need to change in project file.why installshield does not support downgrades?
 
 
thanks
GMP

Edited by gmpk82, 18 April 2014 - 07:04.


Glytzhkof

Glytzhkof
  • Moderators
  • 1,447 posts

Posted 18 April 2014 - 20:37

I implemented this, but I don't have access to the source files now.

 

As far as I recall what I did was to configure the upgrade table to uninstall any version of the application on the box, and then to set a custom REINSTALLMODE to ensure that all "older files" get installed after a major upgrade placed early in the InstallExecuteSequence had uninstalled the newer verson.

 

The big problem with this sort of downgrade is that MSI in general will refuse to install files that have lower versions than those that are on disk. The process of FileCosting (standard action in the InstallExecuteSequence) takes care of determining what files should be installed and what files should not. Setting a custom REINSTALLMODE will change the default handling of how MSI replaces files, making it possible to install files older than those found on disk.

 

I don't like this sort of "hack" because there are unforeseeable consequences for advanced installation scenarios such as IIS, GAC, WinSxS and those kinds of things.

 

One way to really "hack" it is to have a custom action delete the whole installation folder as one of the first steps in the InstallExecuteSequence and condition this custom action to run only on major upgrade (UPGRADINGPRODUCTCODE is the conditon). You can also enable it with a property set at the command line. For example ALLOWDOWNGRADE. I wouldn't recommend any of this.

 

Finally; you can create your own setup.exe wrapper that will first uninstall the new version and then install the older version. This is the safest approach in my opinion, but it requires that the setup is delivered as an EXE file.

 

Looking over this "answer" I kind of feel like deleting it since the only recommendable solution is the last one. Everything else is sort of crazy, but possible. I will leave it as it is, some advice from experience is better than none, but be careful. I only recommend using a setup.exe when it comes down to it.


Edited by Glytzhkof, 19 April 2014 - 22:50.

Regards
-Stein Åsmul

gmpk82

gmpk82
  • Full Members
  • 40 posts

Posted 21 April 2014 - 09:26

very very informative reply , thanks much. 2 days back I prepared a VB script for this issue as explained in the FINAL way in ur reply. I have 2 chances here one is to provide additional VB script or .exe and second one is to reject my internal customers requirement by saying it is Installshield limitation.

 

once again thanks.



Glytzhkof

Glytzhkof
  • Moderators
  • 1,447 posts

Posted 21 April 2014 - 13:08

This is actually a Windows Installer limitation - it is Windows itself that is designed this way.

 

Messing automatically with REINSTALLMODE is quite dangerous since it applies to every file that is due for install. This could overwrite even system files, though Windows has been changed these days so that this is more likely to cause a runtime error than a downgrade. It is only safe to define to overwrite any file version if you have no system files in your setup. That's almost never the case if you are including any merge modules.


Edited by Glytzhkof, 21 April 2014 - 23:41.

Regards
-Stein Åsmul