StrataFrame Forum

ClickOnce deploy testing

http://forum.strataframe.net/Topic26574.aspx

By Keith Chisarik - 3/22/2010

Any ClickOnce users that can tell me how to test deployment?

Is it as easy as publishing to alternate location and running from there?

I published (to web) a small application and it is live. I have now made changes, including implementing a new reporting engine, and I want to test the deployment without publishing it to the production site and potentially making unhappy users if I dont have it right.

TIA!

By Trent L. Taylor - 3/23/2010

You know where me and ClickOnce stand Smile So I won't be of much help here.
By Keith Chisarik - 3/23/2010

Understood, I think Greg uses it a lot, was hoping he would lend me some ideas.
By Trent L. Taylor - 3/23/2010

Only an Eagles fan would use ClickOnce Wink (You know I am kidding, but I couldn't resist)
By Keith Chisarik - 3/23/2010

I would like to have some witty comback about the Cowboys, how much they suck, and how much of a choker your QB is, but given the last three games.... better not Sad
By Trent L. Taylor - 3/23/2010

I was about to say Smile
By Bill Cunnien - 3/23/2010

I have been using ClickOnce for several years. There are some unusual situations on clients that I have never been able to resolve (assemblies don't get updated, random failures, etc.). Recently, I was connected to a utility called AppLife Update. It was promoted in these forums last fall. You can find their product at http://www.kineticjump.com. For the price, it is unbeatable. It is an excellent product with wonderful support (just like StrataFrame!!). I have completed testing on the use of an MSI file being distributed via Group Policy Active Directory (one-time setup, no admin rights necessary--very simple). The ongoing updates are all handled by AppLife. It is slick, chock full of features and very professional looking. You won't be disappointed if you chose that route.
By Bill Cunnien - 3/23/2010

Check this out: http://blog.kineticjump.com/
By Greg McGuffey - 3/23/2010

Yep, I have some ideas. Anything to stop the (American) football talk. Tongue



OK, you can definitely publish to multiple deployments, but there are some tricks and if you mess it up, you'll likely whack your local installs and have to do a manual removal. Blink I have 3 deployments going usually. One for internal testing, one for user testing and one for production. All three can be installed on a given machine. This assumes you aren't doing anything funky with the GAC or have dependent apps where versioning could get weird. Just a straightforward x-copy sorta install. If it's more complicated, you could likely get it to work, but the fun increases exponentially.



The first thing to realize is that you MUST have a different publish version every time you deploy. I think I had the best luck also changing the app versions too. Not doing this is painful, as sooner or later you'll fubar you local work station and have to delete all deployed apps manually. (A great learning experience!).



The next thing to understand is that you have to update the product name. This can't be done on the publish page, but has to be done via something like MageUI (comes with .NET SDK). The product name and the version are what .NET uses to figure out if an install is the same app. I know, based on this, you'd think that incrementing the publish version wouldn't be so critical, but trust me, it is.



Next, you have to remember is that deployments are signed with a hash. After you change the product name, you then have to reselect the application manifest (the one defining the files) so it gets resigned.



And in order for any of this to work, I'd suggest you separate publishing from deploying. I.e. you will publish it to you local hard drive, then update using mageui, then deploy via file copy methods (ftp, vpn to the server, UNC path etc).



Here are a couple of blogs about this from the guy that wrote the book on ClickOnce (Brian Noyes).



http://www.softinsight.com/bnoyes/PermaLink.aspx?guid=fe63caf8-a84e-4cb4-a784-703835ac327e

[url]http://www.softinsight.com/bnoyes/PermaLink.aspx?guid=bd37cddc-3574-49fc-b226-a7df516ecb43[url]



To the best of my recollection, here is the process I followed (besides any other normal setup, like setting minimum version):



In VS

1. Update versions. Forgetting to do this will likely break deployment on any machine previously installed on, likely corrupting application store on local machine. Fun. Blink

2. Update publish locations. I set the publishing folder (where on hard disk to publish to) AND the installation folder (the URL it's deployed from). I have folders for alpha, beta and production.

3. Publish

4. Open .application (deployment manifest) in MageUI.

5. Update product name. This is the "Name" field on the first tab in Mage. It is used to determine what product is being installed by ClickOnce and must be unique for each deployment.

6. Update the display name. This is the "Product" field on the Description tab. This is what is displayed on ClickOnce dialogs and on start menu items (if used).

7. Reselect the application manifest (.manifest) on the Application Reference tab.

8. Save file (resigns both the application manifest and the deployment manifest). Forgetting to do this will mean deployment won't work.

9. Copy to appropriate deployment server.

10. Update you're access HTML page to point to right application manifest.



See, simple! Wink Actually, when I was doing this regularly, this entire process took 5-10 minutes, maybe a bit more. The zip file I'd copy to server was 7+ MB.






By Trent L. Taylor - 3/23/2010

I have actually had a conversation with these guys and this really is a good tool. Once I get my head above water we may use this tool for some of our projects. This really is a good tool and moves away from ClickOnce.
By Greg McGuffey - 3/23/2010

The thing that didn't work in my situation was the initial deployment. 99% of my users are remote. Like panhandle Texas remote (oh, did I say that out loud?!!?). Just providing the setup program wasn't working. ClickOnce reduces installation overhead by like 200%, so it has been worth the pain. However, I really like AppLife for the update process, looked very nice.
By Bill Cunnien - 3/23/2010

ClickOnce is good.

MSI with AppLife is better.



I've asked Brian Haas from AppLife to blog on the differences between these two approaches. There are pros and cons for each. He will obviously be biased, but I think he will also provide a fair shake to the ClickOnce methodology.



Great summary, Greg. I've forgotten some of the stuff involved in getting a ClickOnce deployment going. Keith, it may look daunting, but once it is in place and working, it really is nice and simple after that. I am still deploying my app via ClickOnce...I do not even think about it anymore. I increment the version and publish. That's it.
By Keith Chisarik - 3/23/2010

Trying this now wish me luck Smile I do appreciate your time in posting this.

Also look forward to learning more about AppLife.

By Edhy Rijo - 3/23/2010

Keith Chisarik (03/23/2010)
Trying this now wish me luck Smile I do appreciate your time in posting this.



Also look forward to learning more about AppLife.




Hey Keith,



Good luck! and for whatever it is worth, I also use AppLife Update for smart client applications and it is just great! Brian is a very accessible guy and always willing to help you in any way he can with the product, so even if you have not buy it yet, drop him an email with your concerns and I am sure he will get back to you in no time, here is his email brianh@kineticjump.com
By Keith Chisarik - 4/5/2010

Just wanted to add to this thread that this turned out great, I was able to have separate ClickOnce web installs for production, user testing, and internal developer testing that installed and updated independantly even on the same machine.

Thanks Greg and all that contributed to the discussion.

By Greg McGuffey - 4/5/2010

Excellent! Glad I was of help! BigGrin
By Bill Cunnien - 4/9/2010

Brian Haas has posted an article about ClickOnce. It's a good read.



Thanks, Brian!!