2009-03-04 23 views
3

J'ai une application ClickOnce fréquemment lancée à partir d'une autre application via une URL. L'URL inclut des arguments de ligne de commande qui chargent des données, etc.Lancez ClickOnce via l'URL, mais ne vérifiez pas les mises à jour.

Étant donné que la fréquence de lancement de l'application est très élevée, je souhaite supprimer la vérification des mises à jour de version. J'ai donc implémenté ma propre vérification à travers la classe ApplicationDeployment pour l'éviter. Cela fonctionne très bien si vous lancez à partir du menu Démarrer une fois l'application installée. Cependant, nous voulons également préserver le lancement via le comportement de l'URL, car il est avantageux à bien des égards. Mais lors du lancement via URL, la vérification des mises à jour est toujours effectuée - il semble que IE ne soit pas assez intelligent pour chercher l'application dans la zone de téléchargement local pour voir si elle est déjà installée ou non ...

connaître un moyen d'obtenir le comportement "ne pas vérifier les mises à jour automatiquement" tout en utilisant toujours le mécanisme de lancement de l'URL?


En fait, il semble que la question est un Catch-22 dans le modèle ClickOnce. Si vous lancez avec une URL, IE toujours touchez la base avec l'hôte et vérifiez la version, mise à jour si nécessaire, que l'application soit marquée ou non comme "Ne pas vérifier la version". Toutefois, si vous lancez à partir du menu Démarrer, ClickOnce désactive les arguments de ligne de commande.

Est-ce que quelqu'un a trouvé un moyen de contourner ce problème ou a connaissance d'un plan MS pour le réparer?

Répondre

0

Avez-vous considéré registering the application to a custom URL protocol? Cela fournirait probablement les propriétés que vous considérez comme souhaitables, à savoir la possibilité de lancer l'application avec des paramètres de démarrage arbitraires depuis l'intérieur d'un navigateur Web.

1

Microsoft n'a rien à "réparer". C'est le comportement prévu d'un déploiement ClickOnce en ligne. Il vérifie qu'il est en ligne et vérifie qu'il fonctionne avec la version la plus récente, puis il s'exécute. Si vous ne le souhaitez pas, vous devez le configurer pour qu'il fonctionne en ligne et hors ligne.

Je pense que si vous le définissez en mode hors connexion et que vous l'invoquez toujours via l'URL http, il va toujours vérifier les mises à jour, mais je ne le jurerais pas. S'il s'agit d'une application en ligne/hors ligne, vous pouvez l'appeler via le raccourci du menu Démarrer.

Si vous ciblez .NET 3.5 SP-1 ou .NET 4.0, vous pouvez transmettre des arguments à l'application si elle est en ligne/hors ligne. Pour savoir comment faire, consultez this article.

Questions connexes