2010-07-13 5 views
6

Sono 3 mesi nuovo a WPF e sto provando a creare un'app di lancio per divertimento (tipo di avvio app per nome).C# - Process.Avviare un'applicazione ClickOnce? Quale URL?

Non riesco a lanciare le applicazioni ClickOnce in base al nome del processo.

In altre parole:

  • Process.Start ("Firefox"); // funzionerà
  • Process.Start ("MetroTwit"); // Un'app ClickOnce - NON funzionerà

Ho letto che dovresti chiamarlo per URL? Ma dove trovi l'URL delle app click-on installate?

Idealmente avrei voluto aggiornare un elenco di applicazioni installate sul sistema degli utenti (file di programma & clickonce & clienti Air) ogni minuto o giù di lì e fare ricerca fuzzy del tipo ecc

aiuto molto apprezzato.

risposta

4

Esistono due tipi di applicazioni ClickOnce (impostate quando si pubblica l'app) quelle installate nel menu di avvio e quelle che possono essere eseguite solo dall'URL Web.

Le applicazioni che sono installate nel menu di avvio possono essere trovate (sorprendentemente) sotto la cartella del menu di avvio, hanno un tipo speciale di collegamento con l'estensione APPREF-MS.

È possibile utilizzare Process.Start per eseguire il file APPREF-MS.

Le applicazioni configurate per essere eseguite solo dall'URL Web, beh, è ​​necessario eseguirle dall'URL Web.

+0

Questo è fantastico, stavo analizzando le diverse app "disinstallate" registrate nel registro ... Non è divertente ... Ma la tua strada è molto più semplice. Basta analizzare il contenuto dei 2 menu di avvio (locale/globale), cercare i file .lnk e .appref-ms. E posso solo Process.Start (@ "C: \ ... App.APPREF-MS") - Grazie !! – keyle

3

Process.Start equivale a fare Start, Esegui .. quindi immettere del testo lì. Devi inserire un eseguibile che può essere trovato usando la variabile d'ambiente PATH, oppure puoi specificare l'URL che punta al file .Application che vuoi eseguire. Per esempio. http://publish.url.com/publish/myapp.application.

Spero che questo aiuti!

+0

Quindi dove trovi gli URL di app clickonce già installata in C#? ta. – keyle

+1

L'URL è l'URL di implementazione: per quanto ne so non c'è modo di enumerare l'elenco delle app ClickOnce. Vedi qui per qualche discussione http://www.windowsdevelop.com/clickonce-setup--deployment-projects/how-can-i-get-a-list-of-clickonce-installed-programs-on-a-given- client-2342.shtml –

+0

Grazie per quello. Ciò significherebbe che non è possibile costruire un launcher di app affidabile che includa applicazioni ClickOnce ... Mmm. – keyle

1

L'URL che stai cercando è l'URL utilizzato per l'installazione. Sì, sembra strano. ClickOnce è un po 'strano. Sfortunatamente ClickOnce non si installa nella cartella Programmi ma si affida invece in una cartella AppData degli utenti. A seconda se è stato installato via web o tramite l'opzione CD/DVD e determinerà quanto è facile risolverlo. In bocca al lupo!

+0

È possibile ottenere l'URL di installazione solo se l'applicazione è solo online. – RobinDotNet

1

Per aggiungere alla risposta di @Kieren: la ragione per cui lo Process.Start("Firefox") funziona è che Firefox si installa nella chiave HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\firefox.exe nel Registro di sistema.

11

Non è nemmeno necessario analizzare le cartelle di avvio. La posizione di una messa in servizio è qui:

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

Dove PUBLISHER_NAME e PRODUCT_NAME sono quelli impostati nella finestra di dialogo Opzioni nelle proprietà pubblicare.

+0

ben fatto e spiegato! – amok

+0

Ho anche aggiunto tra virgolette prima e dopo; string.Concat ("\" ", Environment.GetFolderPath (....)," .appref-ms "," \ ""); – Ads

-2

Ecco come avviare un'app clickonce e funziona sempre.

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