Visual C++ 2005 SP1 Redist update breaks installers

Got a problem you cannot solve? Try here.
Post Reply
jsmith
Posts: 178
Joined: Tue Nov 04, 2008 10:47 am

Visual C++ 2005 SP1 Redist update breaks installers

Post by jsmith »

Yesterday Windows Update installed some stuff relevant to the VCRT on my workstation. After the reboot, when I build an installer using IA9, the installation package fails to install. It fails in a call to Run DLL Function where I call into my custom action DLL.

My guess about what is happening here is this:

- the visual C++ runtimes were updated on my workstation (They show a date of 7/12/09)
- my custom action DLL is built against these runtimes
- InstallAware is bundling the not-updated runtimes
- when our custom action is called, it fails because the runtimes on the
target computer don't match the ones my DLL was built against


Is this plausible? Will IA be releasing an updated VCRT soon to bring it up to date with:

http://support.microsoft.com/kb/973544

(There's also a similar update for VS 2008.)
Last edited by jsmith on Fri Jul 31, 2009 3:01 pm, edited 1 time in total.
using InstallAware 9 R2 (Build Moya.sp3.070910)
jsmith
Posts: 178
Joined: Tue Nov 04, 2008 10:47 am

Post by jsmith »

We have confirmed that this windows update is causing the problem. Here's what we did:

- Started with a workstation that did not have the update and built our single-exe installer on that workstation.
- Installed it on a VM and it installed without fail.
- Used Windows Update to install this new VCRT redist on this worksation.
- Rebuilt our installer on this workstation.
- Reverted the VM to a before-we-installed state.
- Tried to install the newly-built installer. It failed trying to call our C++ DLL function.
Last edited by jsmith on Fri Jul 31, 2009 3:41 pm, edited 1 time in total.
using InstallAware 9 R2 (Build Moya.sp3.070910)
jsmith
Posts: 178
Joined: Tue Nov 04, 2008 10:47 am

Post by jsmith »

I have tried manually installing the updated VCRT redist on my VM before running the installer. The redist package has a timestamp of 7/12/09 3:12 AM, taken from:
C:\\Program Files\\Microsoft Visual Studio 8\\SDK\\v2.0\\BootStrapper\\Packages\\vcredist_x86\\vcredist_x86.exe
I thought this would solve things (as a workaround), but it did not. The installer still failed.
Last edited by jsmith on Fri Jul 31, 2009 3:42 pm, edited 1 time in total.
using InstallAware 9 R2 (Build Moya.sp3.070910)
jsmith
Posts: 178
Joined: Tue Nov 04, 2008 10:47 am

Post by jsmith »

The next thing I tried was to copy my build directory full of binaries over to the VM, bypassing the installer. When I tried to run any of my c++ code, it failed to launch. So then I copied over the updated VCRT redistributable DLLs, with dates ranging from 7/11/09 to 7/12/09, taken from:
C:\\Program Files\\Microsoft Visual Studio 8\\VC\\redist\\x86\\Microsoft.VC80.CRT
and
C:\\Program Files\\Microsoft Visual Studio 8\\VC\\redist\\x86\\Microsoft.VC80.MFC
I copied these DLLs into the same folder on the VM as all of my binaries and suddenly the binaries began to work.

What all of this says is that MS updated the Visual C++ 2005 SP1 runtimes and its corresponding redistributable via a windows update. Until the matching InstallAware runtime is updated, any installers built on computers that have applied this Windows Update will fail. They may not fail during custom actions like ours does, but the software will fail to run.

What is the usual turnaround time for IA to update the VC++ runtime after MS updates it? This update was released on Tuesday, July 28, 2009.

Finally, how will we be notified that the IA-ready runtime has been updated?
using InstallAware 9 R2 (Build Moya.sp3.070910)
MichaelNesmith
Posts: 3452
Joined: Thu Dec 22, 2005 7:17 pm
Contact:

Post by MichaelNesmith »

Typically we support new runtimes in 24-48 hours, but they have to be a major update like a new .NET version. There is currently no ETA on when these will be delivered, but you can edit your runtime installer scripts and runtimes to do this without waiting for us. You have the source.

PS: No amount of asking will change R&D's internal schedules who are very busy with InstallAware 10 :)
Michael Nesmith
Install[b]Aware[/b]
[i]Home of The Next Generation MSI Installer[/i]
Get your free copy today - http://www.installaware.com/
jsmith
Posts: 178
Joined: Tue Nov 04, 2008 10:47 am

Post by jsmith »

MichaelNesmith wrote:...but you can edit your runtime installer scripts and runtimes to do this without waiting for us. You have the source.
Yes, we do have the source to setupvc81.mia. Unfortunately, all it does is install the vcredist.msi that I believe is packaged by InstallAware. The redistributable provided by MS is an exe. Without an updated MSI from IA, there's not much I can do short of completely rewriting the functionality.
MichaelNesmith wrote:PS: No amount of asking will change R&D's internal schedules who are very busy with InstallAware 10
Asking what the typical turn around time is for IA to update their runtimes when MS updates their binaries is not the same as asking R&D to change their schedules.
using InstallAware 9 R2 (Build Moya.sp3.070910)
MichaelNesmith
Posts: 3452
Joined: Thu Dec 22, 2005 7:17 pm
Contact:

Post by MichaelNesmith »

You can just update the MSI file. Grab it from the MS redist and simply put it into place after pre-processing with the Setup Decompressor.
Michael Nesmith
Install[b]Aware[/b]
[i]Home of The Next Generation MSI Installer[/i]
Get your free copy today - http://www.installaware.com/
MikeOnline
Posts: 20
Joined: Tue Nov 25, 2008 8:54 pm
Location: N. California

Post by MikeOnline »

MichaelNesmith wrote:You can just update the MSI file. Grab it from the MS redist and simply put it into place after pre-processing with the Setup Decompressor.
You also have to change two CHECK VERSION commands within the checkvc81.mia script, so that the version being checked must be greater than 8.0.50727.4052 (the new version is 8.0.50727.4053).

Also, I use the setup decompressor on the msi file AND on the associated cab file. Once decompressed, the vcredist.msi and cab file will be the approximate size of the previous version of these files, as listed in the InstallAware runtimes subfolder.

If you have Visual Studio 2005, you'll find the 32-bit vcredist.exe under C:\\Program Files\\Microsoft Visual Studio 8\\SDK\\v2.0\\BootStrapper\\Packages\\vcredist_x86. Run the EXE with /T:path and /C switches to extract the msi and cab files to 'path' without installing them again.
MichaelNesmith
Posts: 3452
Joined: Thu Dec 22, 2005 7:17 pm
Contact:

Post by MichaelNesmith »

Fantastic sleuthing! :)

How about platforms like Vista, Server 2008, and Windows 7/2008 R2? Has Microsoft released an MSU update package for them or does the same MSI file work?
Michael Nesmith
Install[b]Aware[/b]
[i]Home of The Next Generation MSI Installer[/i]
Get your free copy today - http://www.installaware.com/
MikeOnline
Posts: 20
Joined: Tue Nov 25, 2008 8:54 pm
Location: N. California

Post by MikeOnline »

MichaelNesmith wrote:How about platforms like Vista, Server 2008, and Windows 7/2008 R2? Has Microsoft released an MSU update package for them or does the same MSI file work?
I don't know; I've assumed the 32-bit vcredist.exe in the Visual Studio 2005 SDK subfolder (mentioned in an earlier post, and part of the recent ATL Security Fix for Visual Studio 2005 SP1) will work on all current Windows platforms, but perhaps not.

These more in-depth issues are precisely why the InstallAware community needs new InstallAware-prepared runtimes soon after Microsoft releases an update, such as Microsoft's latest VC++ 8.0 ATL Security fix to the VC++ 8.0 redistributable runtimes, released 7/28/2009. The VC++ 8.0 redistributables are so widespread, I am surprised InstallAware Corp has not taken the initiative on this.

It's a no-brainer that InstallAware's own developers could prepare the runtime and related MSI scripts in a more reliable way than having each InstallAware customer attempt it on their own. And, with their experience, I assume they could do so in short order.

- Michael
GrandChain
Posts: 18
Joined: Thu Mar 01, 2007 10:22 am
Location: Edinburgh, UK

Here's one I prepared earlier

Post by GrandChain »

Hi MikeOnline,

thank you very much. I'm so glad I found this posting. I'll now be able to ship to a key customer this week...

I've packaged it up as a runtime - see attached. Anyone is free to use it (but it comes with no warranties - it worked for me is all I claim).

I have to agree, I thought this was the sort of thing InstallAware claimed as one of their premier advantages - keeping track of updates to Microsoft libraries. This should have been prepared and uploaded to the support forum at support.installaware.com . I would be perfectly happy to take the hit on InstallAware 10 - installations which work now are more important than new features.

Mike Nesmith - can you please make sure your support team are aware of this issue and probable symptoms ("application configuration incorrect") - and please can we have this provided for us next time?

Cheers,

Ian

File Attached:

vc82-runtime.zip
MikeOnline
Posts: 20
Joined: Tue Nov 25, 2008 8:54 pm
Location: N. California

Re: Official runtime installers now available

Post by MikeOnline »

MikeOnline wrote:...InstallAware's own developers could prepare the runtime and related MSI scripts in a more reliable way than having each InstallAware customer attempt it on their own
The InstallAware developers have released a runtime package for the VC++ 8.0 and 9.0 SP1 with the latest security fixes. Better still, they've releaed VC++ 2010 and .Net Framerwork 4 runtime packages, plus several other packages. See the following links:

Forum thread: http://www.installaware.com/forum/viewt ... f=2&t=5543
Web-based installer for new runtime packages: http://www.installaware.com/rup2010/ins ... %20web.exe

Note: as of 4/19/2010 at 10:30 am PST, this web-based installer would only proceed if the F# runtime was de-selected. The F# package can be downloaded directly at http://www.installaware.com/Microsoft%2 ... e%202.7zip and then unzipped (with 7-ZIP) into the InstallAware runtimes subfolder.

Thanks go to the InstallAware developers and Michael Nesmith for the new runtime packages and their installer.

- Michael
MichaelNesmith
Posts: 3452
Joined: Thu Dec 22, 2005 7:17 pm
Contact:

Re: Visual C++ 2005 SP1 Redist update breaks installers

Post by MichaelNesmith »

I have fixed the FSharp web media block problem - sorry about that! :P
Michael Nesmith
Install[b]Aware[/b]
[i]Home of The Next Generation MSI Installer[/i]
Get your free copy today - http://www.installaware.com/
Post Reply