Troubleshooting the corrupt file error when using the SQL Server 2008 Express Setup Package

I've seen a number of people bringing this message up in the forums recently so I thought I would blog about it rather than type the answer over and over. (I'm lazy that way.)

Problem

When you run the installer you get the following error after the download of the SQL Server 2008 Express installation package:

   

An error occurred during the installation of SQL Server 2008 Express.

The downloaded file appears to be corrupt.

   

If you view the log you see an error that looks something like this:

   

Verbose: [T3][19:57:41. 91] ComponentInstaller.Install Start

Info: [T3][19:57:41. 92] ComponentInstaller.Install Preparing to install SQL Server 2008 Express with Advanced Services.

Verbose: [T3][19:57:41.136] ComponentInstaller.ValidateFile Start

Info: [T3][19:57:41.136] ComponentInstaller.ValidateFile Validating SQLEXPRADV_x64_ENU.exe.

Verbose: [T3][19:57:41.198] ComponentInstaller.GetFileCertificate Start - file=C:\ProgramData\Microsoft\SQL Server 2008 Express Install\Downloads\SqlExpressWithAdv\SQLEXPRADV_x64_ENU.exe

Warning: [T3][19:57:41.443] ComponentInstaller.GetFileCertificate Failed to parse certificate in SQLEXPRADV_x64_ENU.exe: System.Security.Cryptography.CryptographicException: Cannot find the requested object.

   

at System.Security.Cryptography.CryptographicException.ThrowCryptogaphicException(Int32 hr)

at System.Security.Cryptography.X509Certificates.X509Utils._QueryCertFileType(String fileName)

at System.Security.Cryptography.X509Certificates.X509Certificate.LoadCertificateFromFile(String fileName, Object password, X509KeyStorageFlags keyStorageFlags)

at Microsoft.SqlServer.SqlExpressWrapper.Controller.ComponentInstaller.GetFileCertificate(String file)

Verbose: [T3][19:57:41.948] ComponentInstaller.GetFileCertificate End - returned NULL

Warning: [T3][19:57:41.949] ComponentInstaller.ValidateFile File validation FAILED (certificate could not be obtained from file).

Verbose: [T3][19:57:41.949] ComponentInstaller.ValidateFile End - returned False

Verbose: [T3][19:57:41.991] ComponentInstaller.Install End - returned [ExitCode=0, Success=False, Action=RetryDownload, MessageStringId=]

Error: [T3][19:57:42.276] InstallController.InstallComponents Error: Microsoft.SqlServer.SqlExpressWrapper.Controller.InstallException was thrown: The downloaded file appears to be corrupt.

Source: SqlExpressWrapper

Stack: at Microsoft.SqlServer.SqlExpressWrapper.Controller.ComponentInstaller.Install()

at Microsoft.SqlServer.SqlExpressWrapper.Controller.InstallController.InstallComponents()

   

Cause

This is typically caused by a problem during the download process that results in the file saved to your disk being corrupt.

   

Resolution

Often this problem is resolved by simply hitting the Try Again button. If the problem was a dropped line or some noise on your connection it is usually transient and the next download will work fine.

   

In cases where you get the error a second time, or when you have a low bandwidth connection so you don't want to risk waiting through the second download just to get another error you should clear the cache to make sure that you don't have a partial download stuck on your hard drive. You will need to clear two folder locations to be sure you're starting clean:

  1. Empty your Temp directory since this is where the interim pieces of the file download are stored during the download process. If your system has the Disk Cleanup Utility (It's at least part of Vista), you can use this tool to empty your Temp directory. If you don't have this utility you can just open up the Run dialog and type "%temp%" (without quotes) and then clean out the files manually. (I usually do it manually.)

  2. Empty the Express Installation Package download cache. The download cache location changes depending on your operating system but I describe the location in this post introducing the Express Installation Package in the section on the architecture.

    1. Navigate to the cache folder location appropriate for your system.
    2. Find the .\Download folder.
    3. Find the edition folder for the edition you're downloading. (eg. .\SqlExpressWithAdv if you're downloading SQL Express with Advanced Services).
    4. Delete the installer package that is cached in this folder.

       

Once you've removed the files from the Temp directory and the Download Cache, run the Express Installation Package again and you'll be assured to get a new file from the Microsoft Download Center this time. This is one of those cases where Windows is sometimes too smart for its own good, it's trying to save you time by restarting a failed download where it left off, but in this case it can't restart correctly.

   

If you continue to get the corruption error after this you may be experiencing a different problem. If this is the case there are two things you can do:

  1. Report the problem in the SQL Express forum.
  2. You can try installing manually. You'll need to install the prerequisites first and then run the standard SQL Express package. But seriously, report the problem in the forum, if there is something weird going on with the download files, we need to know.

   

- Mike