Plusieurs installations ClickOnce avec une identité de déploiement différente, mais une même identité D'Application
nous avons plusieurs déploiements des mêmes assemblages avec des fichiers de configuration différents pour des environnements différents. Nous les empaquetons pour séparer les déploiements ClickOnce avec différentes identités de déploiement (Program_ENV1, Program_ENV2, etc.).
L'identité de L'Application est le programme.exe pour tous, parce que nous avons un tiers composant qui nécessite l'exécutable de l'utiliser pour avoir le même nom qu'il a été compilé.
quand nous voulons avoir plusieurs installez le même numéro de version sur la même machine (pour les tests), nous obtenons une erreur d'installation que quelque chose avec la même identité d'application existe déjà.
nous ne voulons pas faire de compilations séparées avec de nouveaux numéros de version pour chaque déploiement (QA a autorisé les assemblages de version X. X. 45, pas la version X. X. x. 46).
Est-il une autre façon de contourner ce problème?
5 réponses
pour exécuter des versions concurrentes D'une application ClickOnce, vous devez changer le nom D'assemblage, et il est recommandé que vous changiez aussi le nom de produit dans les propriétés D'édition, de sorte que vous pouvez dire dans un menu de départ qui est lequel.
Cliquez ici pour voir comment installer plusieurs Versions simultanément
j'ai fini par utiliser -u -mise à Jour option pour créer un nouveau déploiement pour QA basé sur la Production.
Voici les étapes que j'ai fait pour tester un vérifier
- créer une simple application WPF
- copié mage.exe pour le projet depuis Visual Studio ne peut pas le résoudre au moment de la construction
- a ajouté le texte ci-dessous à la compilation post du projet
cd " $(TargetDir)"
"$(ProjectDir)mage.exe " - Nouveau Application-Name $(ProjectName) -psil-TrustLevel FullTrust-Version 1.0.0.0-FromDirectory . - ToFile ".\$(TargetFileName).manifeste"
"$(ProjectDir)mage.exe",- Déploiement -Installation de faux -Nom $(ProjectName) -p msil -Version 1.0.0.0 -AppManifest ".\$(TargetFileName).manifeste "- ToFile".\$(TargetName).l'application"
"$(ProjectDir)mage.exe" mise à Jour ".\$(TargetName).application " - Installer false-Name $(ProjectName).AQ-P msil-Version 1.0.0.0 - AppManifest".\$(TargetFileName).manifeste" -ToFile ".\$(TargetName).Assurance de la qualité.l'application"
j'avais besoin de changement à l' " $(TargetDir)" par cd " $(TargetDir)" parce que mage ne traiterait pas les répertoires et les chemins de fichiers correctement quand je lui donnais des chemins avec des espaces qui sont enfermés dans des guillemets doubles. Pour contourner cela, je mets le répertoire courant à l'endroit où les fichiers sont construits.
la 2ème ligne crée le fichier manifest
la troisième ligne crée le Production fichier de déploiement.
la quatrième ligne crée le QA fichier de déploiement à partir du Production fichier de déploiement. ( NOTE: je suis en ajoutant QA pour le fichier de déploiement et l' Nom De La Demande.)
la quatrième ligne provoque la création d'un deuxième fichier de demande. Lorsque les deux applications sont lancées, elles auront les mêmes binaires mais Applicationdéploiement.UpdateLocation seront différents pour chacun. On aura le nom de fichier $(TargetName).application et l'autre aura le nom de fichier $(TargetName).QA.application. Dans mon code, je peux utiliser ceci pour déterminer quelle 'Version' de L'Application a été exécutée ( QA ou Production)
Essayez d'utiliser MageUI. Ouvrez votre manifeste de déploiement (celui avec le .extension de l'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 add/remove programs.
Enregistrez vos modifications, signez de nouveau le manifeste, et vous devriez être prêt à partir.
Karg, si vous utilisez MageUI vous pouvez modifier L'identité D'application et exécuter plusieurs versions publiées de la même application à la fois.
pour chaque environnement, conservez des noms d'assemblage et des noms de produits séparés avec un postfix du nom de l'environnement. En outre, créer un GUID pour chaque environnement, et ajoutez-le à 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 séparés, chacun ayant un raccourci correspondant au nom du produit.