This trick may have shown up somewhere else. But I still see people asking the same question. So I'll post it in my blog.
Many people experience failure when installing .Net Framework 1.1 Redist. Usually you see a MSI dialog says “Internal Error 2908.”. Later you will see another dialog says “Error 1935. An error occured during the installation of component xxxx. HRESULT: -2147319761”.
The problem usually is because a broken previous install. Rename %windir%\system32\mscoree.dll and re-install usually does the trick.
This works because MSI uses existence of %windir%\system32\mscoree.dll to tell if a .Net framework is already installed. If MSI believes a .Net framework is already installed, it will use the existing .Net framework to install assemblies into GAC. Renaming mscoree.dll tricks MSI to believe .Net framework is not present. In that case MSI will do a fresh install. Fresh installs rarely fail.