Estou lutando para iniciar o aplicativo da loja WSL "Ubuntu 20.04" (ou qualquer aplicativo da loja, na verdade) a partir da linha de comando (por exemplo, PowerShell ou CMD).
Quando executo o Ubuntu 20.04 no menu Iniciar, ele é iniciado em uma janela com o ícone do Ubuntu e o título correto da janela ("Ubuntu 20.04 LTS"). Eu gostaria de obter a mesma janela do aplicativo quando iniciada a partir da linha de comando.
Pesquisei bastante e encontrei esta página que faz referência start shell:AppsFolder\{folder}!App
(por exemplo start shell:AppsFolder\Microsoft.WindowsStore_8wekyb3d8bbwe!App
, ), mas não consegui fazer isso funcionar para o aplicativo Ubuntu Store. Parece um pouco complicado para mim - Existe uma maneira mais fácil? E se não, como isso funciona para o Ubuntu?
Estou familiarizado com o wsl
comando, mas se eu executar wsl -d Ubuntu-20.04
a partir do menu Iniciar, a janela resultante terá o ícone genérico do WSL/Linux/Penguin em vez do ícone do Ubuntu. O título da janela também é C:\Windows\system32\wsl.exe
em vez de "Ubuntu 20.04 LTS".
Se eu executar o mesmo wsl
comando do CMD, ele ainda terá o ícone CMD.
Talvez eu possa usar o comando DOS/CMD TITLE
, mas gostaria de ter apenas um comando que eu possa usar para iniciar o aplicativo Store. Isso é possível?
Por outro lado, os aplicativos "normais" .exe
do Windows podem ser iniciados a partir do CMD ou do PowerShell com bastante facilidade.
Eu ficaria muito feliz com uma solução para o Ubuntu WSL, mas também se houver uma maneira simples (e principalmente programável ) de executar todos os aplicativos da Windows Store, isso seria ótimo.
Resposta curta:
Do CMD ou PowerShell:
Se
start
não for alias no PowerShell, tente:Mais detalhes:
ubuntu.exe
é o "App Execution Alias" para o aplicativo "Ubuntu" instalado na Microsoft Store, embora seja possível que também seja:ubuntu2004.exe
: Se você instalou o "Ubuntu 20.04" "versionado" da Lojaubuntu1804.exe
: Se você instalou o "versionado" "Ubuntu 18.04"Você pode ver isso acessando Gerenciar aliases de execução de aplicativos nas Configurações do Windows. Muitos aplicativos da Loja incluem um "falso
.exe
" projetado para iniciar o aplicativo da Loja. Você pode desabilitar isso, mas estou assumindo que está habilitado. Se não, habilite-o, é claro.Quando você executa o Ubuntu a partir do Menu Iniciar, é claro que está executando o aplicativo Store. Este aplicativo executa o WSL no console herdado do Windows e faz algumas coisas adicionais, como definir o ícone e a fonte do aplicativo. Essa é praticamente a única diferença do que posso encontrar ao executá-lo na linha de comando.
Quando você executa
ubuntu.exe
(ou um dos outros aliases de execução do aplicativo WSL) na linha de comando, ele é iniciado no terminal atual. É o mesmo que digitaripconfig.exe
, por exemplo. Ele mantém as características atuais do terminal "proprietário" (iniciado pelo CMD ou PowerShell) - mesmo ícone do aplicativo, mesmas fontes, etc.Quando executado com o comando
start
(CMD) ouStart-Process
(PowerShell), ele inicia um processo separado no Windows (em vez de um subprocesso do shell atual). O Windows o inicia em um novo terminal (Windows Console por padrão) e, presumivelmente, o WSL faz alguma mágica para dizer "se eu sou o proprietário do terminal, defina o ícone e a fonte".Fornecendo isso como uma resposta separada, pois, como você notou, os aliases de execução de aplicativos (da minha outra resposta) não são criados por todas as distribuições do WSL.
A página que você encontrou sobre como usar
start shell:/AppsFolder...
está no caminho certo, mas perde um ponto-chave -!App
no final funciona para a maioria , mas não para todos os aplicativos UWP/Store. Na verdade, me deparei com isso no ano passado quando estava tentando fazer backup do meu progresso no Minecraft Dungeons, curiosamente ...A sintaxe real é:
PackageFamilyName
normalmente corresponde ao nome do diretório emC:\Program Files\WindowsApps
, mas esse diretório normalmente não é legível, a menos que você tenha elevado suas permissões por meio do UAC.E
AppId
é o verdadeiro desafio de encontrar. Ele é definido no manifesto XML do pacote. E pode ser o que o desenvolvedor quiser. A maioria usaApp
, mas existem (especialmente para WSL, parece) exceções.Aqui está um trecho do PowerShell para ser executado em todos os pacotes Appx do seu usuário (instalados na loja, bem como aqueles que vêm com o Windows) junto com alguns pacotes de "sistema":
Get-AppxPackage
: Enumerar os pacotes instalados$_.PackageFamilyName
: Deve corresponder ao nome do diretórioC:\Program Files\WindowsApps
para a maioria dos pacotes que não são do sistemaGet-AppxPackageManifest
retorna o manifesto do pacote XML para o aplicativoDisplayName
eAppId
percorrendo o XMLDocument como propriedades do PowerShell/.Net.Você deve poder usar a saída resultante com o
start
(CMD) ouStart-Process
(PowerShell) a la:Mas, é claro, verifique sua saída real do
Get-AppxPackage
teste acima, pois o nome da família pode mudar com base na versão da loja, acredito.Para mim, isso lançou um Windows Console separado com Alpine, com o logotipo e o título da Alpine.