Installshield Error 27504 and SQLServer

Obtaining Installshield Error 27504 during an install of our platform in our labs was quite a surprise last week.  Part of delivering a platform on premise to a variety of operating system (2008, 2008R2, 2012, 2012R2, 2016) and SQLServer database versions (2008-2016 with various service packs) involves testing on many combinations.

A New Error is Always an Opportunity for Learning

This error detailed that there was an unsupported version of SQLServer on the machine where the install was occurring.  This was strange since the machine had SQLServer 2014 Service pack 1.  This has long been one of our supported database versions.  Some investigation showed that in Installshield, in the “Direct Editor”, there’s a table called “ISSQLSBMetaData”.  Here, Installshield checks the version you have of SQLServer whether you set the project up to check the SQLServer version or not.  The gory details here show the means in which the installer checks the version.  In Installshield 2015 (SP1) the SQL command it was using was “Select @@Version”.  You can check this in the “VersionInfoCmd” property.

This particular command failed because it was assuming a particular format of what this command would return.  This is indicated by the “VersionBeginToken and “VersionEndToken” columns used to parse the result.  Performing a “Select @@Version” in a query window yielded a result that Installshield couldn’t parse.  To resolve, we followed the lead of this article.  This was the learning part:

https://community.flexerasoftware.com/showthread.php?219487-quot-Error-27504-quot-when-installing-against-SQL-2012-SP2 where we edited the command in “VersionInfoCmd”.  We changed this command to the safer “Select ServerProperty(‘ProductVersion’)”.  This eliminated the need to have a “VersionBeginToken” or a “VersionEndToken” at all.

A new error can be surprising and sometimes irritating, but the learning that results is satisfying.  Now we know more about the internal mechanisms of how InstallShield checks its database versions.  This even though we didn’t ask it to.