Many applications uses Microsoft .NET Framework 3.5 as development platform, and thus requires .NET Framework to be installed beforehand, else the installation will request to download and install .NET Framework from Internet. On offline system without Internet access or online server with slow downloading speed, the requirement to download setup files through web may hit the wall – a no go.
Microsoft initially just provides a minimal size dotnetfx35setup.exe download which is a bootstrapper that will still need to download more files via Internet. For users who prefer to perform offline installation or install .NET Framework 3.5 SP1 without waiting for download to complete will have to download and save a copy of full complete standalone or redistributable Microsoft .NET Framework 3.5 SP1 setup installer, which is finally published by Microsoft.
Microsoft .NET Framework 3.5 SP1 (Service Pack 1) is a full cumulative update that contains many new features building incrementally upon .NET Framework 2.0, 3.0, 3.5, and includes cumulative servicing updates to the .NET Framework 2.0 and .NET Framework 3.0 subcomponents. See KB951847 for list of changes and fixed issues in the .NET Framework 3.5 Service Pack 1.
Download full package of Microsoft .NET Framework 3.5 SP1: dotnetfx35.exe (231 MB)
For known issues and release notes, refer to Microsoft .NET Framework 3.5 SP1 Readme.
My good friend Paul Jones, has released a great tool called WebGAC to github. WebGAC is a great way to manage .net assemblies and adding them to .Net projects from a centralised repository of binaries. As someone who has used this tool on literally dozens of projects for nearly 2 years now, Its a must have tool for all Visual Studio developers.
Managing binary dependencies in .NET can be a complicated task. For small projects, checking the dependencies into source control tends to work just fine. So does requesting that all developers have various binaries available in their GAC. Grow much bigger, or add more projects, and managing that starts to get very difficult. The Java world has had a solution to this problem for a long time, in the form of Maven and Ivy. Remote servers store the binaries, and the build tool automatically downloads them on demand.
WebGAC adds the core of this functionality to .NET, but without requiring you to switch build tools, or maintain a separate configuration file. Dependencies are specified just the same way as normal, but if you don’t have them when building your project, WebGAC will fetch them for you automatically.
WebGAC is available at http://github.com/paulj/webgac. Browse over there for more information and installation instructions, or continue reading here for more details.
One of the main projects I have been working on recently has been a .Net 3.5 web project. While I have always liked the agile development and IDE which .Net and Visual Studio provide, The Setup Project template (which creates MSI installation files) has always been hard to use, difficult to customise and very restrictive.
In the past, I’ve used the NSIS (Nullsoft Scriptable Install System), which:
… is a professional open source system to create Windows installers. It is designed to be as small and flexible as possible and is therefore very suitable for internet distribution.(http://nsis.sourceforge.net).
However, despite the great number of resources and example scripts to do anything you can pretty-well imagine, a simple straight up installer script to modify IIS using NSIS to install the web application seems to be quite a challenge.
I did, however, stumble across a blog faced with a similar issue, wanting an installer system to perform the following tasks:
- Show ‘Hello’ page
- Ask to select virtual directory name and installation folder
- Ask about database connection string (user name, password etc)
- Copy working files to destination folder
- Create Virtual Directory
- Create Database
- Show ‘Installation complete’ page
- Open installed application in web browser
They provided an example script which I repost here should the direct link ever go down. They do mention on their blog a number of future enhancements missing from the installer script:
There are many things should be improved in installer. First is improvement of virtual folder creation. User should have possibility to choose between different virtual servers. Also correct default installation directory should be suggested (now it hardcoded as “C:\Inetpub\wwwroot\TargetProcess2”). Installer should detect if .Net 2.0 is installed and help to download and install it. Installer should upgrade old version of TargetProcess to new.
Given that I have quite a bit of experience with NSIS, I think those points should be mostly trivial and I will be sure to post the updated example script to this blog once it’s complete.
This url http://weblogs.asp.net/krobertson/archive/2004/04/01/106002.aspx
looks promising, not exactly what I want to do but a useful reference never-the-less.
I’ve done a lot of feed reading and writing over my more recent professional career, and something that has always been a fascination of mine, has always been an engine which could “read” RSS/ATOM feeds. That is, an engine which can turn a feed, into a set of MP3’s.
I had bookmarked this page a while ago, and found it when cleaning up my bookmarks. I didn’t want it bookmarked anymore so I thought I would blog it and share the link with the other 2 people subscribed to this blog.
The library itself is not too shabby, but the Microsoft Speech Engine is actually pretty lame. I guess there is always time though.
The code looks like:
private void SoundFeed(string url, int itemCount)
RssFeed feed = RssFeed.Read(url);
RssChannel channel = (RssChannel)feed.Channels;
if (channel.Items.Count > 0)
SpVoice readr = new SpVoice();
readr.Speak(“Your are listening to “ +
channel.Title + “.”,
int counter = 1; // num of items tracker
foreach (RssItem item in channel.Items)
if (counter > itemCount)
readr.Speak(“Reading Item “ +
counter.ToString() + “.”,
readr.Speak(“Title of the Post: “,
catch (Exception ex)
I think I shall have to play with this some more soon and make me a Windows Mobile 6.0 app to download podcasts for me to listen to each night.
I have been creating a lot of Http Modules lately as a number of projects I am working and consulting on have large API back ends. Http Modules work fantastically for ASP.NET because all Http requests are pumped through all of a site’s modules before they actually hit IIS.
One of the API methods I’m working on requires a URL to be passed as a parameter, and in order to simplify usage of the API, these parameters are passed through the URL so the application using the API, doesn’t have to post variables to the API.
However, if the request contains certain reserved characters then you can run into a problem. Even if the characters such as $. %, ? are encoded correctly the page may not be returned and all you see is “bad request” (error 400). It isn’t your code that is causing this though but the behaviour of the ASP.NET ISAPI filter which doesn’t pass the request on.
After some Googling I found there is a Microsoft KB Article 826437 about the issue
Apparently the solution given is incorrect though and the correct registry key entry is shown below:
Windows Registry Editor Version 5.00
However, this didn’t seem to work for me, perhaps because I am running version 2.0 of the Framework and not 1.1 as indicated in the Knowledge Base Article.
There is an upside however, in that you can pass reserved characters through the request if they are inside a query string value. It’s not a perfect solution of course, because PHP would let you do it no problems, but it is a work around that worked for me.