8
votes

C # - Process.Start une application ClickOnce? Quelle url?

Je suis de 3 mois Nouveau sur WPF et essayez de construire une application de lancement pour le plaisir (type de lanceur d'applications par nom).

Je n'arrive pas à lancer des applications ClickOnce par nom de processus.

En d'autres termes:

  • processus.start ("firefox"); // travaillera
  • processus.start ("Metrotwit"); // une application ClickOnce - ne fonctionnera pas

    J'ai lu que vous devriez l'appeler par URL? Mais où trouvez-vous l'URL des applications ClickOnce installées?

    Idéalement, je souhaiterais actualiser une liste d'applications installées sur le système d'utilisateurs (fichiers de programme et clients ClickOnce & Air) toutes les minutes environ et faites la recherche floue sur Type, etc.

    aide grandement appréciée.


0 commentaires

7 Réponses :


3
votes

processus.Start est équivalent à faire du démarrage, exécuté .. Ensuite, entrez du texte là-bas. Vous devez entrer une exécutable pouvant être trouvée à l'aide de la variable d'environnement de chemin, ou vous pouvez spécifier l'URL qui pointe vers le fichier .Application que vous souhaitez exécuter. Par exemple. http://publish.url.com/publish/myapp.application .

espère que cela aide!


4 commentaires

Alors, où trouvez-vous les URL de l'application ClickOnce déjà installée dans C #? ta.


L'URL est l'URL de déploiement: Autant que je sache, il n'existe aucun moyen d'énumérer la liste des applications ClickOnce. Voyez ici pour une discussion WindowsDevelop.com/clickonce-SeUp-Deployment-Projects/.../a>


Merci pour ça. Cela signifie donc qu'il n'ya aucun moyen de créer un lanceur d'applications fiable qui inclut des applications ClickOnce ... mmm.


Néanmoins, la bonne façon était de suivre @nir et d'analyser le contenu de la startmenus. Merci!



1
votes

L'URL que vous recherchez est l'URL utilisée pour l'installation. Oui, ça sonne étrange. ClickOnce est un peu étrange. Malheureusement, ClickOnce n'installe pas dans le dossier des fichiers de programme, mais plutôt des burries elles-mêmes dans un dossier AppData utilisateurs. Selon que vous ayez installé via le Web ou via l'option CD / DVD et déterminera à quel point il est facile de résoudre ce problème. Bonne chance!


1 commentaires

Vous ne pouvez obtenir que l'URL d'installation si l'application est uniquement en ligne.



2
votes

Pour ajouter à la réponse de @ Kieren: la raison pour laquelle process.start ("firefox") fonctionne est que Firefox s'installe dans le HKEY_LOCAL_MACHINE \ logiciel \ Microsoft \ Windows \ CurvingVersion \ app Chemins \ firefox.exe dans le registre.


0 commentaires

5
votes

Il existe deux types d'applications ClickOnce (définies lors de la publication de l'application) Ceux qui sont installés dans le menu Démarrer et ceux qui ne peuvent être exécutés qu'à partir de l'URL Web.

Les applications installées dans le menu Démarrer peuvent être trouvées (surprenante) dans le dossier Menu Démarrer, ils ont un type de raccourci particulier avec l'extension AppRef-MS.

Vous pouvez utiliser Process.Start pour exécuter le fichier AppRef-MS.

application configurée uniquement à partir de l'URL Web, eh bien, vous devez les exécuter à partir de l'URL Web.


2 commentaires

C'est fantastique, j'étais sur les différentes applications enregistrées "désinstaller" dans le registre ... pas amusant ... mais votre chemin est beaucoup plus simple. Il suffit d'analyser le contenu des 2 mises de départ (local / global), recherchez les fichiers .LNK et .Appef-MS. Et je ne peux que traiter.start (@ "c: \ ... app.appref-ms") - merci !!


Et si l'utilisateur modifie le fichier AppRef-MS? Et si s'il installe plusieurs istanées de la même application? Un suffixe numérique est ensuite ajouté au nom de fichier pour indiquer le numéro d'issance ("Nom du produit - 1"). Cela ne peut pas être le moyen officiel de lancer une application.



12
votes

Vous n'avez même pas besoin d'analyser les dossiers de démarrage. L'emplacement de cette startup est ici:

shortcutName = 
  string.Concat(Environment.GetFolderPath(Environment.SpecialFolder.Programs),
                "\\", publisher_name, "\\", product_name, ".appref-ms");


1 commentaires

J'ai aussi ajouté dans des devis doubles avant et après; string.concat ("\" ", environnement.gefolderPath (....)," .appref-ms "," \ "");



-1
votes

Voici comment lancer une application ClickOnce et fonctionne à chaque fois.

System.Diagnostics.Process.Start("http://webinstalls.somecompany.com/LApproval/StartApproval.application");


1 commentaires

Ceci sera pas travail si le navigateur par défaut est Firefox ou Chrome.



3
votes

IMHO, le meilleur moyen est que: xxx


0 commentaires