View Full Version : Problem with side-by-side assemblies when upgrading product
09-28-2009, 09:06 AM
I am working on a product which uses InstallShield to package the software. Initially we were using Visual Studio 2003 and InstallShield 11.5 Premier Edition. Recently we upgraded to Visual Studio 2008 and InstallShield 2009 Premier Edition. A fresh install of the product works OK, but I am seeing problems when trying to upgrade older versions of our product. On upgrade, the CRT and MFC side-by-side assemblies do not get installed on the target system. So when I try to run any of our executables, it fails with "application configuration is incorrect" message. This is an InstallScript project.
Can someone please tell me why this happens and how this can be fixed? Please let me know if you need more information about the project settings. Thank you for your help.
09-28-2009, 04:36 PM
Have you tried restarting the machine?
I remember running into "application configuration is incorrect". In my case, it only affected machines that had an earlier version of my product installed and did not have the prerequisite installed.
I restarted, tried to run the app, had the same error. So I uninstalled and reinstalled the application. And everything worked fine.
I haven't been able to reproduce the problem since, and wasn't able to figure out what caused it. :/
09-29-2009, 12:21 AM
I presume that the error will be like "Application failed to start. Reinstalling the application may fix the issue". Normally this type of errors are due to not having necessary re-distributables in the destination machine.
You have upgraded your .net IDE to Visual studio 2k8. This requires installation of vcredist_x86.exe of visual studio 2k8. As the problem persists in upgradation , better do modification in Install script itself by writing an install script function to find out whether vcredist_x86.exe is installed or not before Launch conditions actions.
I may conclude like, write an install script function which checks whether vcredist_x86.exe is installed or not in normal installation itself. This function helps to validate the redistributable in normal and upgradation of the setup.
You can verify the vc redist in registry at the following location: [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\DevDiv\VC\Servicing\9.0\x86Runtime]
use REGDBEXISTS function to search the above reg path.....
09-29-2009, 02:26 AM
Hi sneale and reachyouvenkat7,
Thank you for taking the time to respond to my question.
It sounds like you were facing the same problem that I'm seeing now. Our product includes a driver, so the system has to be restarted to complete the installation. This doesn't fix the problem. Uninstalling the old version and reinstalling the new one works, but I want to avoid that since it requires two reboots. It helps to know that I'm not the only one with this issue, since I wasn't able to find anything on a google search and this confirms that it's not just a problem with my install project.
Your suggestion sounds good. I'll try it out and post back the results.
09-29-2009, 12:56 PM
reachyouvenkat7's suggestion is interesting because that's the prerequisite we are using in our product as well.
Yeah, google search was little help for this problem. It seems like the only suggestions are rebooting.
I found it was a spotty problem to reproduce. I hope you can fix it.
Please let me know if you find out anymore information! :)
09-30-2009, 12:45 PM
OK. I think I've finally fixed it.
I did get the vcredist_x86.exe solution working, but decided not to go with that since it creates an entry in Add/Remove Programs and the user could potentially uninstall the DLLs and they'd start seeing the initial problem again.
So this is what I finally went with. I created a new invisible feature, then added the Visual Studio C++ 9.0 MFC and CRT merge modules under it. I also added the following statement before calling FeatureReinstall:
This seems to have fixed it. Upgrade, new install and reinstall are all working fine.
I could consistently reproduce the problem every time I tried to upgrade an older version of the product which depended on earlier versions of the CRT and MFC DLLs. My guess is that on a maintenance install InstallShield assumes that all the dependencies for the existing features have been installed, so it doesn't do that again. It doesn't take into account situations where the dependencies could have changed.
Thanks again for your help guys.
Powered by vBulletin® Version 4.2.0 Copyright © 2013 vBulletin Solutions, Inc. All rights reserved.