Nie wiem, jak wykonać zapytanie do sklepu ClickOnce.
Ale jak powiedział @ Vojtěch Dohnal. Wszystkie aplikacje ClickOnce będą przechowywane w C:\Users\xxxx\AppData\Local\Apps\2.0
Możemy sobie wyobrazić rozwiązanie, które dla każdego użytkownika będzie zawierało listę wszystkich plików wykonywalnych w drzewie i zapisywać tylko ostatnie wersje.
Oto urywek przykład kodu (jeden użytkownik):
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);
}
}
Musisz znaleźć w aplikacjach słownika wszystkie aplikacje nazwiska jak klucze, i jako wartości krotki zawierający pełną ścieżkę dostępu do pliku wykonywalnego i to jest wersja.
Nie znaleźć inny sposób, aby uzyskać informacje, ale mam nadzieję, że to będzie wykonać zadanie
wypróbowane na moim komputerze i wydaje się działać prawidłowo
Jeśli znasz nazwę aplikacji, w ten sposób można uzyskać ścieżkę do ostatniej zainstalowanej wersji.
Jeśli nie, ale wiesz, gdzie .appref-ms
jest, trzeba je otworzyć, pobrać aplikację oczywistego (plik .application
opublikowane przez ClickOnce) i uzyskać nazwę pliku wykonywalnego z węzła assemblyIdentity
.
Może to pomoże Ci znaleźć aplikację http://stackoverflow.com/questions/908850/get -instalowane-aplikacje-in-a-system – MrWombat
Nie sądzę, że istnieje łatwy sposób na to, nazwy są zaciemnione przez projekt. Możesz wyszukać folder "C: \ Users \ xxxx \ AppData \ Local \ Apps \ 2.0", aby zobaczyć, co znajduje się w podfolderach. –