2012-11-14 14 views
14

Chcę wypełnić ListBox lokalnymi wyświetlanymi nazwami wszystkich zainstalowanych aplikacji Sklep Windows w aplikacji komputerowej Windows 8. Próbowałem to:Pobierz zlokalizowane nazwy zainstalowanych aplikacji Sklepu systemu Windows w systemie Windows 8

string Apps = Interaction.Environ("ProgramFiles") + "\\WindowsApps"; 
foreach (App in IO.Directory.GetDirectories(Apps)) { 
      XmlDocument xml = new XmlDocument(); 
      xml.LoadXml(My.Computer.FileSystem.ReadAllText(App + "\\AppxManifest.xml")); 
      lbApps.Items.Add(xml.GetElementsByTagName("DisplayName")(0).InnerText); 
} 

ale dodaje się ms-resource struny i domyślne aplikacje, które zostały odinstalowane.

EDYCJA: Znalazłem, że wszystkie zainstalowane aplikacje mają swoje skróty w %LocalAppData%\Microsoft\Windows\Application Shortcuts, ale skróty te nie mają zlokalizowanej nazwy i nie są funkcjonalne po otwarciu.

Odpowiedz

1

Zamiast bezpośrednio parsować pliki AppxManifest, należy użyć klasy PackageManager.

W witrynie MSDN dostępnych jest kilka przykładów pokazujących, jak zebrać różne treści dotyczące zainstalowanych pakietów aplikacji, w tym Enumerate app packages by user SID sample.

+0

Chcę zlokalizowane nazwy, a nie nazwy pakietów. – Elmo

+0

Czy znalazłeś rozwiązanie tego problemu? – Harindaka

1

Nie sądzę, że istnieją interfejsy API środowiska wykonawczego systemu Windows, które mogą odsłonić tę konkretną informację z powrotem do aplikacji. Właściciel aplikacji jest odpowiedzialny za dostarczenie informacji do Manifestu Appx w pierwszej kolejności. cokolwiek możesz tam spojrzeć- [http://msdn.microsoft.com/en-us/library/Hh446622] nadzieję, że coś może ci się przydać.

+0

Moja aplikacja to aplikacja komputerowa, więc nie potrzebuję interfejsów API WinRT. – Elmo

Powiązane problemy