tags:

views:

335

answers:

3

I am working on a large click-once application (150MB, >200 DLLs) and as part of the interative debugging process I would like to update just 1 DLL and relaunch the application without having to rebuild and redeploy the entire application.

Is that possible? If so... how?

Question Clarification: 9/26/2009

I know that it is possible to manually patch DLLs on the client after it has downloaded the entire application and then launch the client .EXE directly from the local cache folder. That's not the point. I want to know how to change/add a DLL on the server and have all clients get the new DLL the next time they launch. I am looking for a "copy the DLL to this folder and edit this text file" kind of answer if possible. I specifically do NOT want to have rebuild or redeploy the click-once install on the server... just patch it by hand with a single DLL that I compiled in the IDE.

+1  A: 

ClickOnce will determine the updated dlls for you, your clients won't have to download the full 150MB but only the updated ones. Only downside is you still have to upload all the 150MB.

I have a ClickOnce Application at my Customer that works that way, about 40MB always remains the same. No extra work required.

Johannes Rudolph
+1: Same here. It's a 20 min deployment, but takes about 10s for my clients to download the diffs.
SnOrfus
yeah, the upload everything always sucks a little, esp. when deploying from remote (and the client's click once repository grows and grows and grows...)
Johannes Rudolph
It's not so much the launching on the client that's a problem. I want to know how to patch the master file list on the server with just one DLL that I have compiled individually without actually rebuilding the entire product or rebuilding the click-once install set. I'm looking for a "copy DLL to this folder on the server and edit this text file and click-once launches will start using the new DLL" kind of answer.
Simon Gillbee
that wasn't the original question. I'm afraid I can't offer an answer to your scenario.
Johannes Rudolph
A: 

Assuming you are working in the live environment on the clients system you should be able to replace a dll by copying it over the previous dll in the installation folder. I think the location of clickonce installations on Windows XP is C:\Documents and Settings\userprofile\Local Settings\Apps.

mattythomas2000
This works for a single client. I am looking for solution where I can patch a single DLL manually on the server (which I have direct access to) so that all clients will get the new DLL.
Simon Gillbee
+1  A: 

I'm having the same problem here. I think you need to copy the specific file to the clickOnce folder. Edit the .manifest and .application files with MageUI. Advance the version number in both files. Not sure about this but the ClickOnce at client side is expected to download the file that was changed.

Alon Amsalem
This worked for me but it's a serious headache. It turned out to be easier to just rebuild the ClickOnce install and redeploy it (as painful as that was). Too bad :(
Simon Gillbee