Application Updater - deployment

does anybody know a good, flexible and free component for automatic application updating beside ClickOnce (not necessarily .NET only)?
In the past there was the Updater Application Block from Microsoft. But as far as i know its not maintained anymore.
What Technology are you using to keep you applications up to date?

We have designed our own updater logic based on WiX & .NET for our .NET apps. Logic is fairly simple and couple with continuous integration (so that we can fire a new release in a single click). Everything is released as open source. You can have a look at the code at http://code.google.com/p/lokad-sdk/ and more precisely at http://tinyurl.com/kwrhvo (direct app source code).

Try PADUpdater it's freeware and doesn't need any configuration as it uses your PAD.XML file to get the settings.

Related

Implementing an auto-update mechanism

I have a question about updating applications.
If I want an application to always be up-to-date, I would probably implement a launcher that checks if it is the latest version.
What are the pro's and con's of this approach, and is there an other way to achieve this behavior in compiled programming languages (specially .NET / Java)?
How would I update the launcher? I have seen applications that can do that also.
Thanks
The method of writing a launcher and checking for update is usually followed by all the applications that checks for updates. Although no necessary. Alternative to this can be a call back function which will send a "request of update" from server(the dev machine) to clients(where application is installed) when the server has a new update.
Pros of the having client to check for available update at server: Widely used
Also there are buildin classes (available for .net http://msdn.microsoft.com/en-us/library/ms404263.aspx)
Cons: Will keep checking even if update is not there (every time application is launched or timeout occurs)
Pros of callback method: no un necessary traffic (even its a very small amount still a request is made)
Cons: I dont remember of seeing any apis for such a method. So you need to implement these all by yourself.
Perhaps these links can provide some information:
Code Project: Application Auto-update via Online Files in C#
Writing my own Auto Updater
AutoUpdate using Google Code
What is the best practice to auto upgrade MSI based application?

Persisting an Approval Process to SQL

I'm starting work on a small web based request system which needs to implement a two-step approval process (C# mainly, most likely MVC3).
I have come up with a simple workflow diagram and can easily come up with code to move from step to step. However, I'm having trouble coming up with a way to persist workflow related "tasks" or "steps" in the database.
For a request, an admin would approve/deny it when it comes in, then it's goes into "working" state. At compeletion, user is requested to approve/deny "QA" step.
Can anyone provide some directions on this?
I don't want to use Windows Workflow Foundation, since I don't have time to learn yet another new framework. And Google is not being too helpful, any mention of the word "workflow" keeps bringing results for WF.
Learn WF.
Why? All you're doing by inventing your own new framework is forcing the next people to maintain your code (or those who work with you) to "learn yet another new framework," as you so put it. Do you want to write all that new documentation or do you just want to point someone to MSDN?
WF4 is actually pretty easy to learn, way better than WF3. Before you throw away the idea completely, at least read this:
A Developer's Introduction to Windows Workflow Foundation (WF) in .NET 4
http://msdn.microsoft.com/en-us/library/ee342461.aspx
If you're looking at a web based system, you may use Windows Server AppFabric to provide the persistence and monitoring layer and a WCF workflow service to host the workflow. The time you spend learning the basics of this will be far less than the time you spend inventing your own system. I guarantee it. You can install AppFabric via the Web Platform Installer tool along with SQLEXpress to persist.

Workflow Foundation suitability

I need to build a workflow based solution and need some advice.
First of all, there should be a canvas style editor where a user can create workflows. Then, they will be used in a form based workflow process, where the user answers questions and the system will guide them through the steps based on the workflow. There can also be actions, such as sending emails.
The question is: can WF be used for this? I need to use the MS stack.
Any idea would be appreciated.
Yes, you can use workflow to do this.
For the execution part it seems a very good fit.
For the end user designing workflows it depends. The workflow designer used in VS2010 can be rehosted in your own applications without to much work. It is a WPF control though so the client application needs to be able to load and display WPF controls. This rules ASP.NET and Silverlight out but will work fine with WinForms and obviously a WFP app.
Another thing with the designer is that you have to enter VB expressions and in the rehosted designer there is no IntelliSense making this a lot harder. Well there is a workaround for that but it requires VS2010 DLL's. And the expressions can be anything you can do in .NET so that includes potential nasty things like Process.Start().
The rehosted designer is actually very to use, and since all the artifacts for constructing your workflow are provided.

Setting up a web development/build environment

My current project has a development web server and live web server. Developers make changes to files on the dev server and test them (by going to the dev address) and make changes as necessary. When the file or files are ready to go, they are copied to the live server. There is no version control.
As you might expect, there are some problems with this model:
It's hard to keep track of what other programmers have done.
It's hard to keep track of what files should be copied to the live server.
There is no version control.
I'm in a position to make nearly any change I like, but I want it to be the right one! I have been turning this over in my head for quite a while, and I have a solution that might be okay. But I want SO's opinion.
Certainly version control needs to be added. But how should it work with the existing codebase and where should the developers be testing? How can anyone know what needs to be moved to the live server? What other details need to be addressed?
How would you attack this problem?
Supplementary information:
The website is vital, but not mission critical. A small amount of downtime is acceptable.
There are very few developers. (Right now, only 4.)
History: Before I started, the project used Visual Source Safe. This was a sufficiently bad experience that they quit using it and abandoned version control.
The project is an ASP.NET (C#) website.
This seems like a question that may have a complicated answer. Thanks for thinking about it!
Use source control. Even VSS is better than nothing, but there are plenty of better alternatives, free or otherwise. Simple enough option in Subversion, with a plugin like VisualSVN to integrate with Visual Studio.
Developers' initial testing should just use their own local development web servers that VS will fire up, or their own local IIS instances.
Add a web deployment project to pre-compile the website, and exclude it from the debug build configuration so it doesn't slow everyone down when they build.
When you want to deploy, deploy the entire output of the web deployment project built in release mode. Don't do it piecemeal, otherwise you'll never know what's there.

Using Clickonce Deployment with Background intelligent transfer service

We are thinking about the deployment and update strategy for a fairly large framework throughout our organization. The application will be in .NET 3.5 and will run on Windows XP, Vista and Win 7 machines. I have used Clickonce few times and it works well for sure.
Has anyone thought of, or have implemented the BITS feature of Windows with Clickonce. I feel the trickle upgrade approach of BITS would make the frequent framework updates pretty user friendly.
Any help appreciated.
The thing is that BITS is used to transfer data in the background, while CLICKONCE is more-or-less a JIT downloader of those DLLs/executables needed to install/update/run an application.
Additionally, ClickOnce is an out-of-box experience. It already works, whereas a BITS solution (even one using the old Updater Application Block) requires you to roll out a framework for updating the application.
Also note that there's nothing saying that a BITS solution would be a "trickle" approach. One could have it download the file in one batch, on high-priority and basically emulate the functionality of ClickOnce, or one could build it to download updates in the background similiar to how FireFox performs updates.
Finally, be aware that ClickOnce does have security ramifications in what the ClickOnce deployed application is allowed to do by default, or even what resources it is allowed to communicate with by default. Read more here.
I have worked on a project that uses BITS and ClickOnce but not in the same context as what you want. ClickOnce was the mechanism for downloading the application which was very light, as light as it could be made. Then using a combination of Microsoft Synchronization services and BITS to synchronize data and pull down artifacts (around 2 GB).
Remember with ClickOnce you do not need to force the user to upgrade before opening. You have the ability to upgrade the application whilst the application is in use and then the next time the application is started the new version will be run.
I doubt that Clickonce would be of much help, because it's unlikely that you could extend it to use BITS. Maybe a combined approach would work where you initially deploy a small custom downloader via Clickonce which uses BITS to get the remaining parts and does all future updates.