SQL Server 2005 Express Edition – Part 11 – ClickOnce Deployment and Maintenance Options

In the most recent installments of our series dedicated to SQL Server 2005
Express Edition, we have discussed the User Instance mechanism, presenting its
unique characteristics and providing examples demonstrating its behavior. We
have also described the role of Visual Basic 2005 Express Edition in designing
and implementing applications that utilize this functionality. In this article,
we will focus on the process of deploying and maintaining user instance-based
applications, which employs ClickOnce technology, designed to minimize the
administrative burden of application lifecycle management in a distributed
environment.

The wealth of capabilities of Visual Basic 2005 Express Edition goes beyond
its programming features. Its graphical interface includes options that can be
used for distribution and automatic updates of .NET applications (accessible in
the same straightforward manner as development actions we have employed earlier
to create our sample code). However, to explore their range fully, you should
first ensure that your local system is running Internet Information Services
(IIS) and File Transfer Protocol (FTP) server-side components, which give you the
ability to post content to be downloaded by your clients. To accomplish this,
launch the Add or Remove Programs applet from the Control Panel and select
Add/Remove Windows Components icon in the resulting dialog box. If you are
running one of Windows Server 2003 editions, highlight the Application Server
entry in the list of items in the Windows Component Wizard page and click on the
Details command button, which will subsequently display subcomponents of
Application Server, including Internet Information Services. If you are using a
Windows XP Professional system, you will find the Internet Information Services
listed as one of the top level components on the first page of the wizard. In
either case, once you locate and highlight the relevant entry, click on the
Details command button, ensure that File Transfer Protocol (FTP) Service and
World Wide Web Service are included in the installation, and continue with the
wizard to its completion.

If you added the IIS component after you have set up Visual Basic 2005
Express Edition, then you should also apply the procedure described in
Microsoft Knowledge Base article 306005. This is relevant in
situations where you want to make your database applications available for
deployment via ASP.NET. In short, this involves running aspnet_regiis.exe -i from a local folder
containing the most recent .NET Framework version (which in our case should be %Windir%Microsoft.NETFrameworkv2.0.50727,
where v2.0.50727
designates the RTM release of .NET Framework 2.0). This step can be ignored if
IIS was already present when you installed Visual Basic 2005 Express Edition
(since its setup process automatically takes care of creating appropriate
ASP.NET application mappings).

Now that we have satisfied prerequisites of full ClickOnce functionality, let’s
briefly review its advantages. One of its most important benefits is making
applications readily available to users without the need for administrative
privileges or knowledge of setup options (installation is completed via a straightforward,
one-step process). Equally important is the self-maintenance capability,
facilitating incremental, centrally-controlled updates to all deployed
instances of the application. Each installation functions as a self-contained
entity, which eliminates potential conflicts due to overwriting shared
components utilized by other software running on the same system. An additional
factor that contributes to the superiority of the ClickOnce mechanism is its
ability to leverage Code Access Security permissions in determining privileges
required by its applications.

In general, ClickOnce applications can be distributed via file shares, Web
or FTP sites, or removable media. Depending on your preferences, you can launch
them directly from the source location or install them locally. Note however,
that even in case of the latter, the setup process does not affect content of
the Program Files folder or registry, since application files and settings are
stored in a secure cache, allocated on a per-user and per-application basis. (In
addition, appropriate entries are added to the user’s Programs menu and Add or
Remove Programs (or its Vista equivalent Program and Features) Control Panel
applet.)

To examine implementation and configuration of these features, we will
leverage the sample application, whose development process we have described in
our previous article. Its characteristics related to ClickOnce functionality
are accessible via the Project Properties menu item (in the Project top level
menu of the Visual Basic 2005 Express Edition main interface). After you select
it, you will be presented with the Project Designer window, with Publish
section that contains the following list of options:

  • "Publish Location (web site, ftp server, or file path)"
    textbox designates a location where the current project will be published as a ClickOnce
    deployable application. This can be a file system path (local or remote, using
    UNC notation) as well as Web or FTP site (based on URL link). The browse…
    command button gives you the ability to point to a desired target via the Open
    Web Site dialog box (from where you can choose among File System, Local IIS,
    FTP Site, or Remote Site categories). It is also possible to assign a value of
    "Installation URL (if different than above)" textbox, which is useful
    in situations where applications are initially published to a staging area.
  • "Install Mode and Settings" mutually exclusive options
    allow you to dictate whether the application will be available only while the
    system is online or while both online and offline (i.e. when a source location
    where installation files reside is not reachable). In case of the latter,
    relevant files and settings are retained on the target system (in a secure,
    application-specific cache within the end-user’s profile), application entry is
    included in the Add or Remove Programs applet in Control Panel, and its
    shortcut appears in the user’s portion of the Start->All Programs menu. More
    granular configuration options are available via the following command buttons
    (and their corresponding dialog boxes):
    • "Application Files" – gives you the ability to specify
      files to be included with the ClickOnce-deployable application and to define
      their role. For each entry, the dialog box displays the file name, its publish
      status, and download group (defining collections of files to be installed
      depending on arbitrary conditions). The publish status dictates an action that
      will take place during publishing, application version update, or automatic
      downloads to clients, and can be assigned one of four values:
      • Data File – designates a file identified as data (which, in our
        case, includes our SQL Server 2005 Express Edition database and its log, since
        files with extensions .mdf and .ldf are automatically assigned this status).
        Based on this assignment, the file gets stored in an application-specific data
        directory (located within the end-user’s profile).
      • Include – indicates that the file (other than data) should be
        added to the publish location.
      • Exclude – indicates that the file should not be added to the
        publish location.
      • Prerequisite – prevents installation if the file is not already
        present on a target computer.

    • "Prerequisites" – lists prerequisites of your
      application (which in our case include .NET Framework 2.0, Windows Installer
      3.1, and SQL Server 2005 Express Edition) and allows you to create a setup
      program that installs them on the target computer if their presence is not
      detected (this results in setup.exe being added to the publish location). In
      addition, you can specify whether the prerequisites should be downloaded from
      their original source (vendor’s web site), from the same location as the
      application, or from an arbitrary location you point to within a designated
      text box.
    • "Updates" – dictates whether the application will be
      automatically checking for updates (as expected, this command button is
      disabled when "The application is available online only" option is
      selected). This can be configured to take place either before or after the
      application starts. While the former ensures that only the latest version of
      application is used, you might opt for the latter if the speedy application
      launch is your priority (to limit the possibility of running outdated code,
      schedule periodic update checks or specify the minimum required version).
    • "Options" – contains other miscellaneous deployment
      settings, including a language in which the application is published, publisher
      and product names, URL that can be referenced when looking for support, name of
      deployment web page (set to publish.htm by default) with checkboxes that
      control whether to "Automatically generate deployment page after every
      publish" and "Open deployment page after publish", as well as
      the following:
      • "Block application from being activated via a URL" –
        applies specifically to applications that were installed (rather than set up
        for online only use) from a Web site and determines whether a user is required
        to initiate the application via its Start menu shortcut or can access it by
        pointing at its original source. Note that if you decide to disable it, the
        application will launch automatically following its installation.
      • "Use ".deploy" file extension" – enabled by
        default, assigns .deploy extension to application files (so .exe or .mdf become
        .exe.deploy and mdf.deploy) to prevent issues caused by download restrictions
        imposed on the Web server to which the application has been published.
      • "Allow URL parameters to be passed to application" –
        provides the ability to use a portion of the URL associated with the location
        of the published application as an input parameter during its execution.
      • "For CD installations, automatically start Setup when CD is
        inserted" – applicable to situations where removable media-based
        deployment is used; results in the addition of an Autorun.inf file to the root
        folder where application files are stored. This, in turn, triggers the setup
        process as soon as the media presence is detected on a target computer.
      • "Verify files uploaded to a web server" – introduces an
        additional check during the publishing process, confirming that download of
        each application file works as intended.
  • Publish version – consists of four integers, representing major,
    minor, build, and revision number, respectively. With "Automatically
    increment revision with each publish" checkbox, you can control whether
    every subsequent publication of a given application is considered an update,
    which, as we mentioned earlier, affects the installation process on a target
    computer that hosts its older release. Similarly, if you want to ensure that
    changes you made to the application are applied to its already deployed
    instances, increase its version number and take advantage of the application
    update options.
    • "Publish Wizard" – launches the Publish Wizard (which
      you can also access using the Publish option from the Build menu in the main
      interface of Visual Basic 2005 Express Edition). The wizard handles the process
      of making installation files available via a local or remote file system path,
      or via a download from a Web or FTP site, (all you are required to provide is a
      target location).
    • "Publish Now" – publishes the current application using
      settings in the Publish section of the Project Designer window (listed above).

In our next article of this series, we will look in more detail at the
impact of some of these options on the application installation, deployment,
and updates.

»


See All Articles by Columnist
Marcin Policht

Marcin Policht
Marcin Policht
Being a long time reader, I'm proud to join the crowd of technology gurus gathered here. I have a fair share of Microsoft exams behind me, a couple of acronyms after my name - MCSE, MCSD, and MCT, decent familiarity with majority of MS BackOffice products (SMS, SQL, Exchange, IIS), programming and scripting languages (VB, C++, VBScript with wsh) and several years of practical experience with Windows environment administration and engineering. My focus these days is on SQL Server and Windows 2000, and I'll attempt to share the most interesting experiences with these products.

Latest Articles