We decided on this 12 months ago.
The people near the top of this place who talk to the people near the top of our customers places neglected to mention this fact when they got them to sign the contracts 12 months ago.
We peons who know what we're doing, told them to make sure the customers know. They ignored us. They get payed more and act insulted when we tell them what to do, after all, we're just gruntworkers. Hell, they get insulted and confused when we use "all that technobabble", such as words like ".NET" and "2.0". They prefer us to use "managerspeak", infused with "forward-thinking paradigms" and "enterprise platforms".
So we're almost ready to roll out our product, merely a month from now. We had one group of techies representing one of our customers over so we could demonstrate what we have.
One of their techs asked what version of .NET this uses. We were surprised, after all, everyone knows that it was on .NET 2.0.
They were surprised too, since heretoforth, noone had mentioned anything of a platform version upgrade. It took them over an hour to tell their management what this meant, and then the entire delegation stormed out of our office without even seeing the demo.
You see, the companies we deal with are very high on security concerns. It takes roughly a year to complete the bureaucratic process of evaluating a new platform for security risks and finally getting it deployed. They had not planned on going to .NET 2.0 for a long time.
And now they simply cannot accept our product, unless we spend a significant amount of time retooling it back to .NET 1.1 (which completely defeats the point of our upgrade to .NET 2.0 in the first place). It gets better; we have a policy of branching the product for each gold-level customer (they pay lotsssses of money for their own branch; they feel it's worth it because all of our customers compete against each other anyways, so any edge against the others is money well spent), so we'd have to down-port at least 9 different branches back to .NET 1.1.
Quite frankly, not a single person in the company (except for the fools who caused this problem in the first place) thinks down-porting is even remotely a consideration.
*le sigh*
Either that or get a "native code compiler" (http://www.remotesoft.com/linker/) that basically bundles up the necessary runtime stuff into an EXE that unpacks itself upon launch and cleans up upon quit.
That's basically what I'm doing with my games. Can't much expect end-users to have Flash 8 (or even know what Flash 8 is), so I bundle the runtime interpreter into the executable.
Clients rarely know what you're talking about and won't tell you that they don't know. Worst case I had was back while contracting at IBM we had some clients who just assumed that "dragon drop" meant that an animated dragon icon would drop your data where it needed to go.
Thankfully I had already given my four days notice, so I didn't get to watch the whole project go down in flames about a month after I left.
It's a bumpy ride ahead. I don't envy you.