I just discovered a strange behavior with the script that checks to see if VC8.1 is installed. If you install VC8.1 and then uninstall it from under add/remove programs, this script does not detect the missing install. This causes all sorts of problems if the install requires this runtime.
To test this, I created an empty install that included the 8.0 (service pack 1) runtime. On vista, the first time you run this install, you get the prerequisites dialog about installing the runtime. Next go into add/remove programs and remove both the dummy app and the runtime. The next time you run the installer, you do not get the prerequisite dialog, and the runtime is not installed.
It would appear that this runtime's uninstall is leaving around components which are fooling the system. Unfortunatly, I do not know enough about the internals of this runtime to know what is going on.
checkvc81 does not work correctly on vista
There's a bug in checkvc81. It may or may not be the source of the problem you see but FWIW, here are the details:
checkvc81 is the script that checks for the presence of the vc8.1 runtime package. What is does, though, is test for the presence of the mfc80dll. If it finds that, it concludes that the rest of the package is present and skips it.
Trouble is, you can install just the MFC part by using a merge module (the merge modules are all separate!). Hence, for example, if you install App A (which uses just MFC), then install AppB (which has vc8.1 as a pre-requisite), the App B install deduces (incorrectly) that the *entire* vc8.1 package is present, and doesn't attempt to install it.
checkvc81 is the script that checks for the presence of the vc8.1 runtime package. What is does, though, is test for the presence of the mfc80dll. If it finds that, it concludes that the rest of the package is present and skips it.
Trouble is, you can install just the MFC part by using a merge module (the merge modules are all separate!). Hence, for example, if you install App A (which uses just MFC), then install AppB (which has vc8.1 as a pre-requisite), the App B install deduces (incorrectly) that the *entire* vc8.1 package is present, and doesn't attempt to install it.
I don't have my test code around anymore, but the problem seemed to be that the uninstall for the VC81 package was leaving around some files. this caused the pre-requisite checking code to think that everything was installed correctly.
To fix this, I added an extra line to make sure that the uninstall entry for the package was still in the registry. This seems to work well enough until I can figure out what is going on inside vista and the "side by side" mess.
To fix this, I added an extra line to make sure that the uninstall entry for the package was still in the registry. This seems to work well enough until I can figure out what is going on inside vista and the "side by side" mess.
Who is online
Users browsing this forum: Google [Bot] and 98 guests