Attention: We are retiring the ASP.NET Community Blogs. Learn more >

Implementing No Touch Deployment without going through IE

Per this article:

http://msdn.microsoft.com/netframework/using/building/windows/analystreports

/smartclient.aspx

"Use the Assembly.LoadFrom method from the System.Reflection class:

This is helpful in two scenarios. In the first, the initial executable was

launched via a URL (see #1 above), but now needs to access DLLs that are

located in a different directory on the server or on a different Web server

altogether. In the second, more common scenario, the application is

architected so that there is a small, lightweight executable installed on

the client machine. This executable need not contain much in the way of core

logic. Ideally, it just references the DLLs it needs, which reside out on a

remote Web server and which supply all of the necessary application logic.

Having the executable installed on the client machine in this way means that

the user will have an icon with which to launch the application. Again,

installing the executable could be as easy as copying it onto your user's

local disk—no registration required. The code samples below give guidance on

how to use Assembly.LoadFrom: "

This is exactly what we do.

I am seeing cases though, when a assembly on the web server is modified,

where the .net client is not downloading the modified assembly. The IIS Log

shows a return code of 204, no changes.

I assume something is failing with the If-Modified-Since check. We are not

using IE's download cache as we do not put an executable out on our remote

Web server, and then let the user navigate to it by entering the URL in

Microsoft Internet Explorer.

We distribute a lightweight exe, as described above, that calls

Assembly.LoadFrom loading the assemblies from our web server.

When an assembly on the web server is modified, the only way I can get the

client to download it is to clear out the download cache. So, it makes me

wonder if .NET's download cache is not checking the If_Modified_Since header

and\or you have to go through IE to get this to work.

No Comments