2009-07-30 5 views
26

Nous avons plusieurs déploiements des mêmes assemblys avec différents fichiers de configuration pour différents environnements. Nous les regroupons pour séparer les déploiements ClickOnce avec différentes identités de déploiement (Program_ENV1, Program_ENV2, etc.). L'identité d'application est Program.exe pour chacun d'entre eux, car nous avons un composant tiers qui nécessite que l'exécutable qui l'utilise ait le même nom que celui pour lequel il a été compilé. Lorsque nous souhaitons effectuer plusieurs installations du même numéro de version sur la même machine (pour les tests), nous obtenons une erreur lors de l'installation, car il existe déjà quelque chose avec la même identité d'application.Installations ClickOnce multiples avec différentes identités de déploiement, mais avec la même identité d'application

Nous ne souhaitons pas effectuer de générations distinctes avec de nouveaux numéros de version pour chaque déploiement (QA signé sur les assemblages de la version X.X.X.45, et non sur la version X.X.X.46).

Existe-t-il un autre moyen de contourner ce problème?

Répondre

1

Essayez d'utiliser MageUI. Ouvrez votre manifeste de déploiement (celui avec l'extension .application). Sélectionnez "Nom" dans la liste à gauche et modifiez la zone de texte "Nom". Sélectionnez ensuite "Description" dans la liste et modifiez le champ "Produit". De cette façon, vous serez en mesure de distinguer vos différentes installations sur le menu Démarrer et dans les programmes Ajout/Suppression.

Enregistrez vos modifications, re-signer le manifeste, et vous devriez être prêt à partir.

+1

Les noms d'affichage sont déjà différents pour les différents déploiements d'environnement. Ce problème est qu'ils ont la même identité d'application et que ClickOnce ne les laisse pas être installés côte à côte sur la même machine. – Karg

+0

Avez-vous réellement essayé ma solution? La définition de la propriété "Nom" via MageUI modifie votre identité d'application et permet d'installer côte à côte plusieurs versions de votre application. Si votre nom d'affichage est déjà différent, vous n'avez pas besoin de changer la propriété "Description". – codeConcussion

+0

@codeConcussion, j'ai suivi vos pas. Mais le nom toujours mis à jour n'apparaît pas dans le démarrage et ajouter/supprimer des programmes. Des pensées? Merci. –

16

Pour exécuter des versions simultanées d'une application ClickOnce, vous devez modifier AssemblyName et il est recommandé de modifier ProductName dans les propriétés Publish afin de pouvoir indiquer dans un menu de démarrage lequel est quoi.

Click here to see how to Install Multiple Versions Concurrently

+0

La vidéo sur le site ne fonctionne plus. –

1

Karg, si vous utilisez MageUI vous pouvez changer le ApplicationIdentity et exécuter plusieurs versions publiées de la même application à la fois.

3

J'ai fini par utiliser l'option -u -Update pour créer un nouveau déploiement pour QA basé sur la production.

Voici les étapes que j'ai fait tester VÉRIFIER

  1. créer une simple application WPF
  2. Mage.exe copié dans le projet depuis Visual Studio ne peut pas le résoudre à temps
  3. construire
  4. Ajouté le texte ci-dessous pour le poste du projet construire

cd "$ (TargetDir)"

"$ (ProjectDir) mage.exe" -Nouvelle application -Nom $ (ProjectName) -p msil -TrustLevel FullTrust -Version 1.0.0.0 -FromDirectory. -ToFile ". \ $ (TargetFileName) .manifest"

"$ (ProjetDir) mage.exe" -Nouveau déploiement -Installer false -Name $ (NomProjet) -p msil -Version 1.0.0.0 -AppManifest ". \ $ (TargetFileName) .manifest "-ToFile". \ $ (NomCible) .application "

" $ (ProjectDir) mage.exe "-Mise à jour". \ $ (NomCible) .application "-Installer false -Name $ (ProjectName) .QA -p msil -Version 1.0.0.0 -AppManifest ". \ $ (TargetFileName) .manifest" -ToFile ".\ $ (TargetName) .QA.application »

je devais changer les "$ (targetdir)" via cd "$ (targetdir)" parce que mage répertoires de processus de wouln't et correctement les chemins de fichiers quand je lui ai donné des chemins avec des espaces qui sont entre guillemets. pour contourner cette difficulté, je mets le répertoire courant à l'endroit où

les fichiers sont conçus pour. la 2ème ligne crée le fichier manifeste

La 3ème ligne crée le Productio n fichier de déploiement.

La 4e ligne crée le fichier de déploiement QA à partir du fichier de déploiement Production . (NOTE: J'ajoute QA au fichier de déploiement et le nom de l'application .)

La ligne 4 provoque un 2ème fichier d'application pour obtenir créé. Lorsque les deux applications sont exécutées, elles auront les mêmes fichiers binaires, mais les ApplicationDeployment.UpdateLocation seront différents pour chacun. L'un aura le nom de fichier $ (TargetName) .application et l'autre aura le nom de fichier $ (TargetName) .QA.application. Dans mon code, je peux l'utiliser pour déterminer quelle « version » de la requête a été couru (QA ou production)

+0

J'ai trouvé le problème avec les chemins de mage et de répertoire ... Il n'aime pas les barres obliques de fin. Cela peut être corrigé en ajoutant un point à la fin E.x .: Cela fonctionnera avec "C: \ Foo \ Bar \". mais pas "C: \ Foo \ Bar \" –

+0

Des idées pour obtenir ce travail avec une application ClickOnce signé? J'essaie de le faire, mais cela ne semble pas si facile ... –

-1

Pour chaque environnement, garder les noms de montage séparés et noms de produits avec un Postfix du nom de l'environnement. En outre, créer un GUID pour chaque environnement, et l'ajouter aux AssemblyInfo.cs, par exemple:

[assembly: GuidAttribute("FA380FBE-11B0-406E-88D3-AF40BE93F7D6")] 

Cela permet alors d'exécuter la même application à partir de sites ClickOnce distincts, chacun ayant un raccourci correspondant au nom du produit.

+0

Réponse utile, mais il ne répond pas à la question initiale: "L'identité de l'application est Program.exe pour chacun d'eux parce que nous avons un composant tiers qui nécessite que l'exécutable qui l'utilise possède le même nom que celui pour lequel il a été compilé. ". Downvoting donc. –

Questions connexes