Получить локализованные имена установленных приложений Windows Store в Windows 8
Я хочу заполнить ListBox
локализованными отображаемыми именами всех установленных приложений Windows Store в настольном приложении 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);
}
Но он добавляет строки ms-resource
и стандартные приложения, которые удаляются.
EDIT: я обнаружил, что все установленные приложения имеют ярлыки в %LocalAppData%\Microsoft\Windows\Application Shortcuts
, но эти ярлыки не имеют локализованного имени и не работают при открытии.
Ответы
Ответ 1
Вместо того, чтобы напрямую анализировать файлы AppxManifest, используйте класс PackageManager
.
В MSDN имеется довольно много образцов, которые демонстрируют, как собирать разнообразные материалы об установленных пакетах приложений, в том числе перечислять пакеты приложений по образцу SID пользователя.
Ответ 2
Вы попробовали это: http://marcominerva.wordpress.com/2012/12/17/localizing-app-name-in-windows-store-apps/
Если вы правильно установили имя AppPackage в AppDevCenter, ваше приложение на стороне клиента вернет вам локализованное имя.
Ответ 3
Я не думаю, что есть Windows Runtime API, которые могут отображать эту конкретную информацию в приложении. Владелец приложения несет ответственность за предоставление информации в Appx Manifest в первую очередь. что бы вы ни посмотрели - [http://msdn.microsoft.com/en-us/library/Hh446622] надеюсь, что что-то может быть полезно для вас.