With that information, it is obvious that the problem is not in the generation of the SFX/ZIP file, it is in the
transfer of the file. The SFX file is correct and works fine. Something goes wrong when you transfer it and then try to run it.
There are sevevral possibilities. First, the SFX requires the .NET Framework v2.0 (or later) on the client machine. Have you verified that is the case? IF there is no .NET Framework on the browser machine, running the exe will fail. I don't know
how it will fail because I don't have a machine to test it on. But it will fail. In this case the exe may be received correctly and intact on the client machine, but it is still useless because the necessary pre-requisites are not present.
Another possibility is that the file is being corrupted during transmission. If I were troubleshooting this I would hook up Fiddler to the browser to see if everything was downloading correctly. check the length of the transfer. You
may also have a cached copy of a corrupted version of the SFX file in the IE Cache. In this case you will get the same bad result repeatedly. Clearing the IE cache (Tools...Internet Options...Delete Browsing History) would solve it, if this
is your problem.
Maybe you might try to map the .exe extension to an HttpModule (.ashx) that directly supports the download of the file.
Definitely does not sound like a DotNetZip problem though. Good luck.