Saturday, 15 May 2010

Deploying windows applications using ClickOnce (Visual Studio 2008)

ClickOnce deployment allows you to publish Windows-based applications to a Web server or network file share for simplified installation. Visual Studio provides full support for publishing and updating applications deployed with ClickOnce. ClickOnce deployment is available for projects created with Visual Basic, Visual C#, and Visual J#, but not for Visual C++.
You can publish a ClickOnce application in three different ways: from a Web page, from a network file share, or from media such as a CD-ROM. A ClickOnce application can be installed on an end user's computer and run locally even when the computer is offline, or it can be run in an online-only mode without permanently installing anything on the end user's computer.

Open visual studio 2008 IDE and create a new windows application.

Go to Project –> <Application Name> Properties –> Publish

Publish Location
Publishing folder location can be either web site (http://www.mydomain.com/installation/), ftp (ftp://mydomain/installation) or file share. If you are using other than a file share to deployment, then you can provide a Installation Folder URL, since the end users may not have the permission to access the publishing folder directly. (Since I am using a shared path, installation folder URL will not be required)

Install Mode and Settings
If you select ‘The application is available online only’, each time it is run, it will be run from the published location and no start menu icon will be created.
But selecting ‘The application is available offline as well’, A shortcut on the Start menu will be created for the application and it will enable the application to be run when the user is disconnected from the network.

Publish Version
Here you should state the publish version (Not the application version). And if you check ‘Automatically increment revision with each publish’ will make sure that the revision number will get incremented automatically when you publish your application.

Application Files
Sometimes it is necessary to publish other files than the application. So this is where you state which ones to include or exclude from the deployment.

Prerequisites
You can create a setup file to install the prerequisites, which are required by your application in order to function correctly. And all required prerequisites are selected automatically. But if you want you can either add or remove them from your prerequisites setup.

Updates
In this window you should define how your application should be updated. Check ‘The application should check for updates’. And choose whether it should be updated before or after the application starts. If you choose to update it after running the application, you can mention whether you want to check each time it runs or can mention a time period, which it should check. But it is always advisable to check before application starts, so users will get the latest updates each time they run the application.
And mention a minimum required version, so that end user will get the mentioned version of the application, if they have an older version installed on their pc.
If the updating location is other than the publish location, please mention the path.

Save settings and go to the form designer and add a label to the form.
Save and go to Build –> Publish <Application Name>
If you wish do any changes to the publish settings which you completed earlier click next or click on the finish button.
Click next
Click next
And the deployment setup will be created in the published path.
Run the setup.exe to install the application. And click on install button.

Now close the application and change the label to ‘Version 1.0.0.1’. And go to publish settings and on the update window change the minimum required version to 1.0.0.1.
Click ok and save settings and publish the application.
There will be a start menu shortcut from the first installation.
Click on that to run the application. You will see an update screen and the updated application will be downloaded, installed and executed.
Above mentioned are the basic steps which is required to deploy a .Net windows application using ClickOnce.

We have shared drive on network, and P:\CompName.Shared\ (Yes we have dot in folder name!) folder is shared to everyone. I am creating AppNameSetup folder under this folder and would like to publish application to this folder and users will install application from this folder.

I tried to publish and at step 'Where will the application check for updates?', I put same folder name as publish path it gives me error:

"Invalid value for 'Update URL'. The string must be a fully qualified URL or UNC path , ..."

I do not have ip address but I have fileserver name and that fileserver is mapped to P: drive. I changed to fileserver name with P: and put full UNC path, it published the package with setup.exe. Now when I clicked setup.exe I get this error: 'Cannot download the application. The application is missing required files. Contact application vendor for assistance.'

In publishing process, at Prerequisites step, I selected 'Create setup program to install prerequisite componenets' and 'Download prerequisites from the same location as my application'

I am working on Window's application. Using VS-2010. I can publish the project too. But the Setup file always contain the same Name as of my project name. Is there a way i can name my setup file. So when I will install that file User will see that specific name and now the Project name.

I have one more question. When i create new assembly, I have to uninstall the old assembly. is there a way i can create an setup so that it will uninstall the old version and install the new version in one setup file.

What do you mean by the 'Setup File' ? Is it the manifest file that you are mentioning here. And if you set the minimum required version in the 'Application Update Dialog' it will make sure to install the new assemblies before running the application.

when i want to run this application from another PC do i need to install the application right? is there anyway to install in one location and run in another location without installing the application? thanks in advance

Hi Manjuke, nice article.I have one question though, my installation path is a shared folder on a server, and to access the shared folder, the users must supply their credential.When the users execute the application (installed locally), the application will not check for any updates if the users haven't connected to the server and save their credential. The current solution is to ask the users to connect to the shared folder before they execute the application.How should I handle this kind of situation?Thanks in advance

Thanks. Have you tried mapping that location as a drive, and connect automatically when the user logs in ? And if this shared path is in the same location, and permission is set to the required users, I think the credentials aren't required when user tries to access the path. Please check these things and let me know the out come.

About Me

My passion lies in building business intelligence and data-based solutions, writing about things I work with and talking about it. New technologies relevant to my line of work interest me and I am often seen playing with early releases of such technologies.
My current role involves architecting and building a variety of data solutions, providing database maintenance and administration support, building the organization’s data practice, and training and mentoring peers.
My aspiration over the next several years is to achieve higher competency and recognition in the field of Data Analytics and move into a career of data science.
Specialities: SQL Server, T-SQL Development, SQL Server Administration, SSRS, SSIS, C#, ASP.Net, Crystal Reports