Вопрос или проблема
Магазинные приложения в Windows, кажется, имеют специальное дополнение к своему каталогу установки, например, новый Windows Terminal находится по адресу C:\Program Files\WindowsApps\Microsoft.WindowsTerminalPreview_1.3.2382.0_x64__8wekyb3d8bbwe\
. Я заметил, что у других магазинных приложений также есть это дополнение _8wekyb3d8bbwe
в их пути.
Я наткнулся на это, когда писал скрипт AutoHotkey, который должен запустить Windows Terminal, что делается с помощью
Run shell:AppsFolder\Microsoft.WindowsTerminalPreview_8wekyb3d8bbwe!App
Это выглядит похоже на путь каталога установки, но в команде нет версии или архитектуры (часть _1.3.2382.0_x64_
отсутствует). Однако я должен указать _8wekyb3d8bbwe
, чтобы это работало, и мне интересно, что это такое.
Что представляет собой _8wekyb3d8bbwe
? Какое значение у этого и почему это здесь?
Строка 8wekyb3d8bbwe
, похоже, не имеет другой цели, кроме как гарантировать, что имена пакетов от Microsoft не будут конфликтовать с именами пользователей.
Вы увидите в списке Microsoft на
Имена пакетов для приложений, предоставленных в Windows 10, версии 1709,
что все имена пакетов от Microsoft заканчиваются этой строкой.
Что касается того, почему была выбрана именно эта строка, а не другая, у меня нет объяснения.
Может быть, какой-то разработчик Microsoft просто случайно нажал на клавиши.
Судя по распределению букв, возможно, он использовал свою левую руку,
чтобы это сделать.
8wekyb3d8bbwe
является PublisherId
Microsoft, и именно поэтому все имена пакетов для приложений, выпущенных ими, заканчиваются на это.
Приложения, выпущенные другими издателями, будут иметь другие идентификаторы (например, у HP есть v10z8vjag6ke6
).
Вы можете увидеть список всех ваших установленных пакетов, выполнив Get-AppxPackage *
в PowerShell. В списке вы можете увидеть, что большинство приложений от Microsoft и будут иметь идентификаторы пакетов, заканчивающиеся на 8wekyb3d8bbwe
. Вы также сможете найти некоторые, выпущенные другими компаниями, с другими идентификаторами издателя.
Из документации по разработке приложений для Windows от Microsoft:
Например, имя семейства пакетов приложения Windows Photos — “Microsoft.Windows.Photos_8wekyb3d8bbwe”, где “Microsoft.Windows.Photos” — это имя, а “8wekyb3d8bbwe” — идентификатор издателя для Microsoft.
Вы запускаете современные приложения по их URL, а не по их исполняемому файлу.
@Echo Это занимает несколько секунд для запуска ...
@For /f "tokens=1* delims=" %%A in ('reg query HKCR /f "URL:*" /s /d ^| findstr /c:"URL:" ^| findstr /v /c:"URL: " ^| Sort') Do @Echo %%A %%B
pause
Вышеуказанный пакетный файл перечисляет URL, зарегистрированные на вашем компьютере.
Например
(Default) REG_SZ URL:calculator
Чтобы запустить текущую версию калькулятора
calculator://
Ответ или решение
Строка "_8wekyb3d8bbwe" в пути установки метро-приложений в Windows непосредственно связана с уникальной идентификацией пакетов, опубликованных Microsoft. Эта строка является частью ID издателя, который позволяет предотвращать конфликты имен между приложениями, разработанными различными издателями.
Что такое _8wekyb3d8bbwe?
-
Идентификатор издателя: "_8wekyb3d8bbwe" — это уникальный идентификатор, ассоциируемый с Microsoft и используется для всех приложений, разработанных этой компанией. В результате, когда вы видите этот идентификатор в пути, вы можете быть уверены, что программа была выпущена Microsoft.
-
Структура имен пакетов: Идентификатор издателя всегда идет в конце имени пакета, что обеспечивает уникальность и помогает системе различать приложения, принадлежащие разным компаниям. Приложения от других разработчиков будут иметь свои собственные идентификаторы. Например, HP может использовать идентификатор "v10z8vjag6ke6".
-
Доступ к установленным пакетам: Вы можете увидеть все установленные пакеты, выполнив команду
Get-AppxPackage *
в PowerShell. Это даст вам полный список приложений с их именами и соответствующими идентификаторами, что упрощает управление и идентификацию приложений. -
Пример использования: Если рассмотреть приложение "Фотографии" от Microsoft, его полное имя пакета будет выглядеть как "Microsoft.Windows.Photos_8wekyb3d8bbwe", где "Microsoft.Windows.Photos" — это собственно название пакета, а "_8wekyb3d8bbwe" — идентификатор издателя.
Почему используется именно _8wekyb3d8bbwe?
На текущий момент нет официальной информации о том, почему именно эта строка была выбрана в качестве идентификатора. Возможно, она была сформирована случайным образом, но конечная цель идентификатора — это обеспечение уникальности пакетов, что критично в масштабах экосистемы приложений Windows.
Запуск приложений:
При запуске различных метро-приложений вам, как правило, необходимо использовать конструкцию "shell:AppsFolder" и указывать далее Название пакета вместе с идентификатором издателя, как это делает ваша команда:
Run shell:AppsFolder\Microsoft.WindowsTerminalPreview_8wekyb3d8bbwe!App
Эта команда запускает приложение, не ссылаясь на конкретную версию или архитектуру, так как идентификатор позволяет системе автоматически определить нужное приложение.
Заключение
Итак, строка "_8wekyb3d8bbwe" является важной составляющей системы идентификации пакетов приложений Windows, позволяющей избежать конфликтов и повышая удобство управления приложениями. Понимание этой структуры не только помогает лучше разбираться в экосистеме Windows, но и упрощает работу разработчиков и пользователей при взаимодействии с метро-приложениями.