Non conosco un modo per interrogare il negozio ClickOnce.
Ma come ha detto @ Vojtěch Dohnal. Tutte le applicazioni ClickOnce verranno memorizzate in C:\Users\xxxx\AppData\Local\Apps\2.0
Si potrebbe immaginare una soluzione che, per ogni utente, elenca tutti i file eseguibili nell'albero e salva solo le ultime versioni.
Ecco un frammento di codice di esempio (singolo utente):
var exes = Directory.EnumerateFiles(@"C:\Users\<user>\AppData\Local\Apps\2.0", "*.exe",
SearchOption.AllDirectories);
var apps = new Dictionary<String, Tuple<String, Version>>();
foreach (var file in exes)
{
var fileName = Path.GetFileName(file);
Version v = null;
Version.TryParse(FileVersionInfo.GetVersionInfo(file).FileVersion, out v);
if (fileName == null || v == null) continue;
if (!apps.ContainsKey(fileName))
{
apps.Add(fileName, new Tuple<string, Version>(file, v));
}
else if (v > apps[fileName].Item2)
{
apps[fileName] = new Tuple<string, Version>(file, v);
}
}
Troverete nelle applicazioni dizionario tutte le applicazioni nome dei tasti, e come valori di una tupla contenente il percorso completo del file eseguibile e è la versione.
Non hai trovato un altro modo per ottenere le informazioni, ma spero che farà il lavoro
provato sul mio computer e sembra funzionare bene
Se si conosce il nome dell'applicazione, è può in questo modo ottenere il percorso dell'ultima versione installata.
caso contrario ma si sa dove il .appref-ms
è, dovrete aprirla, ottenere il manifesto dell'applicazione (il file .application
pubblicato da ClickOnce) e ottenere il nome del file eseguibile dal nodo assemblyIdentity
.
Forse questo ti aiuta a trovare l'applicazione http://stackoverflow.com/questions/908850/get -installed-applications-in-a-system – MrWombat
Non penso che ci sia un modo semplice per farlo, i nomi sono offuscati dalla progettazione. Puoi cercare la cartella 'C: \ Users \ xxxx \ AppData \ Local \ Apps \ 2.0' per vedere cosa c'è nelle sottocartelle. –