Home > Software Deployment > Concurrent builds w/ Installshield Stand-Alone Release Builder (IsCmdBld.exe)

Concurrent builds w/ Installshield Stand-Alone Release Builder (IsCmdBld.exe)

My team has recently undergone a project to simplify and optimize our build scripts.  My team member worked on transitioning from Perl to Ms-Build to simplify the script logic,.. and it’s a welcomed change.  To optimize the build, we’ve been experimenting with concurrent builds with the IsCmdBld.exe stand-alone builder and while we’ve realized incredible speed increases, there are some errors I’m going to share as well as how we’re getting around them.

This post is mainly about working around the ISDEV : fatal error -5092: Internal build error

1. Re-Author components to all use the same base path variable.

We have around 35 installers with varying sets of files that were being copied to a sub directory of ISProject in the old script.  To reduce the disk churning, I went through every file component and changed the source path to use a path variable we named SRCROOT (which evaluates to something like c:\project\release-win32\).  SRCROOT is where-ever our ms-build script outputs our files for each build.  When our script calls IsCmdBld.exe, we use the -l argument to override the path variable ‘SRCROOT’ to point to where-ever this particular installers assets can be found.

2. There were various hacks needed to overcome the -5092 Internal build error that other users are also recieving:

User slomicka writes:

I too saw problems. All of the builds run without error stand alone. When I run concurrent builds the IS portion of the builds crashes with “ISDEV : fatal error -5092: Internal build error” – regularly.

To overcome this error we had to do a few hacks:

a. Make a seperate copy of the Prerequisite and Merge module folders that each instance of IsCmdBld.exe and use the arguments -prqpath and -o, respectively. (I’d link to a KB from Acresso, but a Google search only returns a link to the outdated IS12 documentation that doesn’t contain these arguments)  Do a IsCmdBld.exe /? to return all available arguments.  (on my Win7 x64 box running IS 2011, IsCmdBld.exe is found in “C:\Program Files (x86)\InstallShield\2011 SAB\System\IsCmdBld.exe”)

b. Stagger the builds… and this is where it gets ugly. 🙂 I assume this is what Chris Painter was referring to when I (prematurely) said that we got concurrent builds working :

Concurrent builds only recently started working. They used to throw errors as the procs stepped on each others temp files.

It appears this is still a problem and we had to implement a good old fashioned .sleep hack.  yuck!   We had to stagger the build starts and the magic number we came up with was 3 minutes.  Your millage may vary.  We’re running AMD Hexacores (x6 1090 T @3.20GHz).  The only reason I’m mentioning this is our 3 minutes worked on this select hardware and environment,.. so if you have a faster or slower machine that time would vary.

Sleep statements are very unreliable. It may be slightly better to use a command line wrapper that parses each line of standard out text and when the  -5092 error is found, it should restart the process.  This can be done in any language such as C# or even vbscript’s .exec method found in another of my blog posts.

Until Installshield fixes these ‘internal error’ bugs and fully supports concurrent builds to take advantage of modern day processors, we’ll have to resort to hacks like these to get concurrent builds working.

The combination of optimizing the scripts (Ms-Build) as well as implementing concurrent builds has yield a 4.5x speed increase from our old system, so the development and time spent figuring out the hacks was well worth it.

Advertisements
  1. is parallel
    March 8, 2013 at 10:52 pm

    For those reading this post now, I believe this issue has been resolved, along with some others ones related to parallel building.

    Now the only thing that limits the number of builds we can run in parallel is licensing. They didn’t mention it on their site the last time I looked, but the limit was something like 5 concurrent builds max with a standard license of SAB.

    See this post on their forums :

    http://community.flexerasoftware.com/showthread.php?202164-multiple-builds-in-parallel-error-6003-An-error-occurred-streaming-into-setup-exe

  1. No trackbacks yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: