2
votes

The 2011 InstallShield Standalone Builder does not include the SetupPrerequisites required for .NET 3.5; when building with the Full installation, it completes successfully, but when building with the SAB, it gives the following set of errors:

ISDEV : error -1007: Cannot copy source 'c:\Program Files\InstallShield\2011 SAB\SetupPrerequisites\Microsoft .net\3.5\Full\dotnetfx35.exe' to target '[path]\Release\DiskImages\DISK1\ISSetupPrerequisites{2B692A0F-7172-44B2-B0CB-9991078AFD31}\dotnetfx35.exe'

ISDEV : error -5054: Could not determine the size of the file "[path]\Release\DiskImages\DISK1\ISSetupPrerequisites{2B692A0F-7172-44B2-B0CB-9991078AFD31}\dotnetfx35.exe"

ISDEV : error -1007: Cannot copy source 'c:\Program Files\InstallShield\2011 SAB\SetupPrerequisites\Microsoft .net\3.5\Full\Helper.exe' to target '[path]\Release\DiskImages\DISK1\ISSetupPrerequisites{2B692A0F-7172-44B2-B0CB-9991078AFD31}\Helper.exe'

ISDEV : error -5054: Could not determine the size of the file "[path]\Release\DiskImages\DISK1\ISSetupPrerequisites{2B692A0F-7172-44B2-B0CB-9991078AFD31}\Helper.exe"

It is somewhat strange that after not being able to copy (from SRC to DEST), it still tries to determine the file size of DEST!

But anyway, the root cause is that the "Microsoft .net" folder under SetupPrerequisites in the install directory (c:\Program Files\InstallShield\2011 SAB) is missing. It should have a folder "3.5", which should have a folder "Full", which should contain two files: dotnetfx35.exe and Helper.exe.

We have fixed this in our SAB installations by copying these files from the Full installation to the SAB installation.

Actually, we already had an InstallShield folder with the ISM in it, so we just created a SetupPrerequisites folder under there, put the same structure as should have been installed, and then added logic to the build such that if it sees this folder, it will copy everything in it down to the SAB install folder so that the build will succeed.

I'm answering my own question in the above paragraph; I wanted to put this out there for anyone else who might experience this issue.

1

1 Answers

2
votes

Your observations are correct and I don't like the way InstallShield works ( by default ) as it encourages the magical (build) machine antipattern.

Instead, I prefer to edit the PRQ files and the ISM references to the PRQs ( ISSetupPrerequisites table, ISBuildSourcePath column ) and make everything use relative paths based on the ISPROJECTDIR path variable. I check then check all the PRQ files and redist files into my source control so that when my build pulls the tree everything can be found. This pattern can be made more complex if you are reusing redists across multiple builds but the concept is the same.