Its not different options that are the problem, it is huge applications. Here is an example. ProE has of package of 1.8gb in size. This package is the base package. It will need to be deployed by the end of the week to 100 machines. Because they are using the software to teach classes, they all have the same configuration.
Unfortuanately, our network here is sketchy at best. Some labs are set at 100, and others are only set at 10. Because of some weird University mandate, we have to deploy our packages at startup instead of allowing them to run with elevated privlages when the user selects them. The likelyhood of pulling down a package that is nearly 2gb with no packetloss, is well, not good. However, if I could break the package up into smaller peices, that were interdependant on one another, it would be more likely to run smoothly. Think of it like disk spanning .zip archives. It would be something like, proe.msi requires proe1.msi and proe2.msi, and runs with transform proe.mst.
I was messing with this yesterday during lunch, and I think you can create a blank msi using installshield, and then maybe add portions of the original msi to this "empty" package.