Welcome to the frustrating world of installations. This is not a function of StrataFrame, but rather how you deploy your application. InstallAware does a poor job of distributing .NET assemblies into the GAC. They do a good job of getting them in there the first time, but after that you are on your own. Also, using an MSM will just further complicate things within InstallAware since you need to first remove the assemblies before adding any new ones.
We created a .NET EXE to do everything for us that InstallAware wouldn't...which ended up being a lot One of these is run at the beginning of our installation within our medical product. StrataFrame does this in one of the install phases that you see (I believe it is the first one).
Before the installation even starts, we query the GAC for anything that starts with MicroFour using the gacutil tool (which can be distributed). You can include your startup EXE and the gacutil program in the Support directory of your installation. I redirect the output of the gacutil tool to an Output stream so the end-user doesn't see the gacutil window popup. I them parse the list of all installed items in the GAC for assemblies that start with MicroFour. I then create a collection of those assemblies full names and turn around and use the gacutil to remove them from the assembly before allowing the installation to install any files. This way I know that my GAC is clean and the installation can install then without issue. We also use the gacutil to install the assemblies as wel just to make things easier. We copy the assemblies to a folder and then call the same program as before (with a different command line) to register the assemblies.
It isn't fun, but this is the GAC and installations. We have spent a full year tweaking our installation for our medical product as it is VERY complicated and performs a vast number of automated tasks. So I don't think you will have to spend this much time, but you will have to work through the distribution of your assemblies to the GAC.
Another option is to set your application up so that it does not use the GAC at all and your entry point assembly and all other referenced assemblies are in the same folder (or at least the executing path). This approach will prevent having to do anything with the GAC at all.