![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Originally published at Fiberglass flowers. You can comment here or there.
After Microsoft didn’t include .NET 3.5 in any current release of Windows (read “Vista service pack 1″), some of us developers who believed in long-ago C# 3.0 ads, had to roll back to .NET 3.0 and C# 2.0.
Including me.
Not mentioning pain of rolling back all LINQ tasties in code and debugging our replacements (do you know why you can’t implement Where() just with yield-style function?), it means installing .NET 3.0.
It seemed to be not a problem, having a MSBuild code snippet that worked for 3.5 - just replace 3.5 with 3.0:
<ItemGroup> <BootstrapperFile Include="Microsoft.Net.Framework.3.0"> <ProductName>.NET Framework 3.0</ProductName> </BootstrapperFile> <BootstrapperFile Include="Microsoft.Windows.Installer.3.1"> <ProductName>Windows Installer 3.1</ProductName> </BootstrapperFile> <Target Name="Bootstrapper"> <GenerateBootstrapper ApplicationName="blah blah blah blah" BootstrapperItems="@(BootstrapperFile)" BootstrapperKeyFile="" OutputPath="obj" ComponentsLocation="HomeSite" CopyComponents="false" SupportUrl="http://www.microsoft.com/downloads/details.aspx?familyid=10CC340B-F857-4A14-83F5-25634C3BF043" Culture="en" Path="$(BootstrapperPath)"/> </Target>
Won’t work.
Hell why? Who knows. Logs in temp don’t give proper diagnostics, nor system events do. WPF fails to install at some point onto every XP installations we have, including clean special test XP SP2 VMWare images downloaded from Microsoft.
Update: Here’s the answer.
Now I rolled back to dotnetfx3setup.exe redistributable. It’s 2.8M compared to 300K bootstrapper generated by MSBuild, and it’s a pain to see installer grow…And if .NET 3.0 is already installed it starts to uninstall it… and there is no key to make it just “check or install”, need to trick it via WiX.
But we have to pay it. Oh my.
All over the Web I see no evidence that any man walked this path before. For.NET 2.0 - a lot of mentions and code samples. And completely empty for .NET 3.0.