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.