One
scenario people want to support is to have multiple versions of the same
application installed to a single machine/user's account. . For example, say
you have a version 2.0.0.0 of an application that is your production version,
and you publish a new beta version (3.0.0.0) that you want a limited set of
users to access, but those same users need to be able to run both production
and beta side by side through ClickOnce on their machines (perhaps for feature
comparison testing).
The first
step is that you will need to have different deployment manifests for the
multiple versions you want a single user to run. You direct the user to launch
from each URL to the different deployment manifests and they will get a
separate installation on their machine... or will they? The answer depends on a
hidden aspect of the ClickOnce runtime regarding what the runtime considers a
unique identity for an installed application.
If you are
not familiar with the things that ClickOnce does under the covers to install an
application on a client machine, it downloads and caches the deployment
manifest, the application manifest, and all of the application files. Those
manifests have to be signed by a publisher certificate that is
cryptographically unique. Additionally, the installed application has a product
name that gets embedded in the deployment manifest.
You might
be tempted, as I was, to think that a unique product name, combined with a
separate deployment manifest would be sufficient to make the client machine
treat those installs as separate and distinct (such as setting the product
names to "MyApp" and "MyApp - Beta"). Unfortunately you
would be wrong, as I was.
There is
actually a separate piece of information that the ClickOnce runtime uses to
distinguish one application from another - the application identity is set by
an identity set for the deployment manifest itself. This identity is normally
created by Visual Studio when publishing and is set to the deployment manifest
name (i.e. WindowsApplication1.application). You do not have control from
Visual Studio to set this to anything else. Through the mageui.exe SDK tool, or
better yet my Manifest Manager Utility, you can set this application identity
to any string that you like to uniquely identify multiple published versions of
a single application.
So to
address the scenario presented earlier, you can simply set the application
identity to MyApp for one version and MyApp-Beta for the other version, and you
will be able to side-by-side install those two copies of the app on the same
machine.
Learning
Source:
http://robindotnet.wordpress.com/2009/04/22/clickonce-installing-multiple-versions-concurrently/