2009-04-15 6 views
2

Je souhaite publier une version bêta de mon application chaque fois qu'elle est créée, afin que les utilisateurs puissent accéder à la version "bêta" et tester les fonctionnalités avant une version générale.Comment publier une version bêta d'une application ClickOnce?

J'ai essayé de le faire en remplaçant le NomProduit lors de l'exécution de [product] -beta. Le problème est que le processus de publication crée toujours une application [product]. Il semble que la magie ClickOnce ne connaisse pas la différence entre une application [product] sur une URL et une application [product] sur une autre.

Une idée de comment je pourrais contourner cela?

Répondre

4

J'ai rencontré un problème très similaire et voici la solution que j'ai trouvée.

J'ai mis tous mes formulaires GUI dans une DLL incluant le formulaire de démarrage principal. J'ai ensuite créé 2 projets EXE qui référencent ma DLL interface graphique. L'un porte le nom Product et l'autre ProductBeta.
Le code dans l'EXE est pratiquement le même entre les deux. À savoir Application.Run (nouveau MainForm()). Je leur ai ensuite demandé de publier dans des sous-répertoires sur le même partage.

C'est ennuyeux et a un peu de frais généraux mais les résultats fonctionnent très bien.

1

Comme vous l'avez découvert, la modification du nom du produit n'est pas suffisante. Vous devez modifier le nom de l'assembly.

Détails de http://weblogs.asp.net/sweinstein/archive/2008/08/24/top-5-secrets-of-net-desktop-deployment-wizards.aspx

La chose la plus importante est d'avoir support pour de multiples environnements - ce n'est pas construit, et si vous tentative de déployer deux différents ClickOnce construit avec le même déploiement nommer à différents sites, la dernière version aura la priorité et écraser effectivement le déploiement existant sur le bureau.

Le correctif pour cela est relativement simple - vous devez fournir nom de déploiement différent pour chaque build . Comme si -

<MSBuild 
    Projects="ClickOnce.csproj" 
    Targets="Publish" 
    Properties=" 
      MinimumRequiredVersion=$(MinimumRequiredVersion); 
      ApplicationVersion=$(ApplicationVersion); 
      ApplicationRevision=$(ApplicationRevision); 
      CodeBranch=$(CodeBranch); 
      DeployEnv=$(DeployEnv) 
      AssemblyName=ClickOnce.$(DeployEnv); 
      PublishUrl=$(PublishUrl); 
      ProductName=ClickOnce $(CodeBranch) $(DeployEnv)" /> 

L'une des limites de cette approche est que projet fait référence ne fonctionnera plus . Utilisez des références d'assemblage basées sur des fichiers, et tout ira bien.

Questions connexes