Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Multiple ClickOnce installations with different Deployment Identity, but same Application Identity

Tags:

clickonce

We have several deployments of the same assemblies with different configuration files for different environments. We package these up in to separate ClickOnce deployments with different Deployment Identities (Program_ENV1, Program_ENV2, etc.).

The Application Identity is Program.exe for all of them, because we have a third-party component that requires the executable using it to have the same name as it was compiled for.

When we want to have multiple installs of the same version number on the same machine (for testing), we get an error on installation that something with the same application identity already exists.

We don't want to make separate builds with new version numbers for each deployment (QA signed off on version X.X.X.45 assemblies, not version X.X.X.46).

Is there another way around this issue?

like image 968
Karg Avatar asked Jul 30 '09 04:07

Karg


People also ask

What is ClickOnce application deployment manifest?

A ClickOnce application manifest is an XML file that describes an application that is deployed using ClickOnce. ClickOnce application manifests have the following elements and attributes. Element. Description.

Where does a ClickOnce application get installed?

ClickOnce data directory. Every ClickOnce application installed on a local computer has a data directory, stored in the user's Documents and Settings folder. Any file included in a ClickOnce application and marked as a "data" file is copied to this directory when an application is installed.

What is ClickOnce application deployment Support Library?

ClickOnce is a deployment technology that enables you to create self-updating Windows-based applications that can be installed and run with minimal user interaction.


2 Answers

To run concurrent versions of a ClickOnce application, you must change the AssemblyName, and it's recommended that you also change the ProductName in the Publish properties, so you can tell in a start menu which one is which.

Click here to see how to Install Multiple Versions Concurrently

like image 128
RobinDotNet Avatar answered Oct 12 '22 06:10

RobinDotNet


I ended up using -u -Update option to create a new Deployment for QA based on Production.

Here are the steps I did to test a verify

  1. create a simple WPF application
  2. copied mage.exe to the project since Visual Studio can't resolve it at build time
  3. Added the below text to the project's post build

cd "$(TargetDir)"

"$(ProjectDir)mage.exe" -New Application -Name $(ProjectName) -p msil -TrustLevel FullTrust -Version 1.0.0.0 -FromDirectory . -ToFile ".\$(TargetFileName).manifest"

"$(ProjectDir)mage.exe" -New Deployment -Install false -Name $(ProjectName) -p msil -Version 1.0.0.0 -AppManifest ".\$(TargetFileName).manifest" -ToFile ".\$(TargetName).application"

"$(ProjectDir)mage.exe" -Update ".\$(TargetName).application" -Install false -Name $(ProjectName).QA -p msil -Version 1.0.0.0 -AppManifest ".\$(TargetFileName).manifest" -ToFile ".\$(TargetName).QA.application"

I needed to change to the "$(TargetDir)" via cd "$(TargetDir)" because mage wouln't process directories and filepaths correctly when I gave it paths with spaces that are enclosed in double quotes. To get around that, I set the current directory to the location of where the files are built to.

The 2nd line creates the manifest file

The 3rd line creates the Production deployment file.

The 4th line creates the QA deployment file from the Production deployment file. (NOTE: I'm adding QA to the deployment file and the Application Name.)

The 4th line causes a 2nd application file to get created. When both applications are ran, they will have the same binaries but the ApplicationDeployment.UpdateLocation will be different for each. One will have the filename $(TargetName).application and the other will have the filename $(TargetName).QA.application. In my code I can use this to determine which 'Version' of the Application was ran (QA or Production)

like image 40
Hasani Blackwell Avatar answered Oct 12 '22 04:10

Hasani Blackwell