Deploying Applications in VB.NET: Part 1/2


By Jayesh Jain, DevArticles
NOVEMBER 04, 2002

Content Type: Tutorial
Source: DevArticles


Remember back in the good old DOS days when application were small and just copying those file(s) to the clients machine was all it needed to run? Unfortunately, that won't work today.

Applications are getting more sophisticated and complicated everyday, and they need to be installed on the client's machine with utter care and in the right folders so as to make sure that every file on the client's computer is accounted and installed properly and that it does not break any existing application.

When an application is uninstalled, it should not break any existing applications and it should return the computer to its original state. Overall, this whole process should be transparent and simple for the end user.

If you're having problems deploying your Visual Basic.NET applications, then fret no more! In this article I will go through the process of creating a deployment for our application in Visual Basic.NET, which will be a simple one executable file application, which requires us to install databases, sample files, help files, etc. (in short, complicated!).

[Note] For all you VB6 or earlier programmers, there is no Package & Deployment Wizard in VB.NET as the deployment in now a project type. [End Note]

Unlike the old VB6 deployment kit, which created script-based setup files, VB.NET creates an installer (.msi) file, which is more advanced and smarter than the old setup files.

[Note] All application develop under VB.NET require the .NET framework to be installed on the clients machine. Even the installer built with VB.NET needs the .NET framework, and hence you need to install the .NET framework before installing your application. [End Note]

WHAT IS MICROSOFT WINDOWS INSTALLER?

Windows Installer is an installation and configuration service shipped with Microsoft Windows .NET Server family, Windows XP, Windows 2000, and Windows Me. The installer is also provided as a service pack to Microsoft Windows NT version 4.0, Windows 98, and Windows 95.

An installation package contains all of the information that the Windows Installer requires to install or uninstall an application or product and to run the setup user interface. Each installation package includes an .msi file, containing an installation database, a summary information stream, and data streams for various parts of the installation. The .msi file can also contain one or more transforms, internal source files, and external source files or cabinet files required by the installation.

Windows Installer allows you to roll back the installation depending on some conditions and returns the computer to its original state. It also supports self-repair, which could be used to reinstall missing file(s). Sounds great doesn't it? Well, let's see it in action!

Creating a Windows Application

Let's create a small Windows application, which will constantly display the current time on a form. To implement this, open Visual Studio.Net and create a new Windows application project, which we will call "MyClock". Click OK:

vbdeploy_2.gif

In the form design window, add a label control. Change the label controls name property to lbl_time. Add a timer control to the form. Change the timer controls interval property to 1000.

In the form design window, double click the form to open the Form1_Load procedure and enter the following line of code:

Timer1.Enabled = True ' this shall start the timer

In the form design window, double click on the timer control to open the Timer1_Tick procedure and type:

lbl_time.Text = TimeOfDay 'This shall display current time

Our digital clock application is ready to test. Built the application and run it to make sure our application is running properly before we start deploying this application.

vbdeploy_3.gif

Adding the Deployment Project

Now that our application is coded and running fine, we need to think how we are going to distribute the application. Open the solution explorer, right click the solution and select Add, then New Project. The same action could be achieved from the File menu as well.

In the Add New Project window, select Setup and Deployment Projects from the project types. Also, select Setup Project from the Templates list. Change the name to MyClockSetup, and select the location where you want to store your project file(s).

[Hot Tip] Change this location to the main application project folder. This will ensure that all project and setup file(s) are created in folders under your main project folder. [End Hot Tip]

vbdeploy_4.gif

Click OK. The Setup and Deployment project will be added to your existing project. Clicking OK will also open the File System window (we will go through that in a moment).

Select the MyClockSetup project from the Solution Explorer and open the properties window. Change the following properties:

Manufacturer: devarticles.com

ProductName: MyClock

Title: MyClock

Author: Jayesh

vbdeploy_5.gif

Open the Solution Explorer, right click on the MyClockSetup project, click View and select File System to open the File System window.

From the File System on the Target Machine, right click the Application Folder, click Add and select Project Output... . In the Add Project Output Group, select Primary output from the list of options available and finally, click OK.

vbdeploy_6.gif

To run the application on the target machine, we need to create a shortcut for the application on the user's desktop. To do this, right click on the Primary Output from MyClock (Active) and select Create ShortCut to Primary Output from MyClock (Active). Rename this newly created entry to MyClock and drag this entry (MyClock) to the user's Desktop in the File System on Target Machine Window.

The screenshot below shows you what everything should look like:

vbdeploy_7.bmp

Building the Deployment Project

Open the Solution Explorer and select the MyClockSetup project. From the Build menu, select Build MyClockSetup to build our deployment project. This procedure may take a few minutes, depending upon your machine and will create a Debug folder under the MyClockSetup folder.

Looking at Installer Files

After the Setup Project is built without any errors, the following files will be created:

InstMsiA.exe

InstMsiW.exe

MyClockSetup.msi

Setup.exe

Setup.Ini

MyClockSetup.msi is the Windows Installer file for our application. Setup.exe is the wrapper for the MyClockSetup.msi, which checks if the correct version of Windows installer is available before the application is installed.

InstMsiA.exe and InstMsiW.exe are the Windows Installer application file(s), which are used to support different Windows platforms, such as Windows 95, Windows 98, Windows ME, Windows NT and Windows 2000.

[Note] Make sure you distribute all of these files when you deploy your application and always run Setup.exe to install the application [End Note]

Guess what? You've finished creating your deployment application! Pat yourself on the back, and let's install our application.

Installing the Application

To test and run our installer, click Install from the Project menu. Alternatively, you could also start the installation by running setup.exe from the installation folder.

vbdeploy_8.bmp

Click on the Next button to continue.

vbdeploy_9.gif

Click next and follow the Screens to install the application. Once the installation is complete, make sure that a shortcut is created on the desktop and that it correctly launches our MyClock application.

Uninstalling the Application

Once you have successfully installed the application, you can also uninstall it by selecting Uninstall from the Project menu. You could also uninstall the application from the Add/Remove Programs list in control panel.

CONCLUSION

I want to mention a few things before I conclude this article. You can add as many Setup and Deployment projects in one solution as you want. Each of them can have different settings and options.

I hope that this introduction to deployment has shown you how easy and powerful deployment in Visual Basic .NET is. By adding a few bits and pieces to our project, we saved ourselves from writing code to install our application -- not to mention uninstalling the same application.

In the next article we will discover some more powerful features in deployment projects, such as adding launch conditions, adding registry entries, prompting users for inputs and much more, so stay tuned!

If you need help with your deployment project, then shoot me a message in the DevArticles VB.NET forum.