Criar um atalho de aplicativo executando um script usando a Estrutura de Suporte de Pacote

Este documento mostrará como criar atalhos de aplicativo usando o PSF (Package Support Framework) que executa scripts por meio da Ferramenta de Empacotamento MSIX e do aplicativo WPF de Despesas da Contoso .

despesas contoso

A ideia é copiar o atalho do aplicativo, que estará disponível dentro do pacote, para a Área de Trabalho do usuário por meio dos scripts PSF.

Há algumas coisas para ter em mente:

  1. Crie apenas um atalho se for absolutamente necessário. A meta é não bagunçar a área de trabalho do usuário.
  2. O aplicativo MSIX deve ser instalado antes de criar o atalho, para que possamos especificar o caminho do aplicativo MSIX durante a criação do atalho.
  3. Ao mesmo tempo, o caminho do aplicativo MSIX pode ser alterado, uma vez que ele tenha o número de versão especificado na pasta de instalação. Exemplo do caminho de instalação de Despesas da Contoso :

C:\Arquivos de Programas\WindowsApps\ContosoExpenses_1.0.0.0_x86__3z09h3y28h0qg

Para evitar a necessidade de alterar o atalho do aplicativo sempre que o aplicativo for atualizado, crie o atalho apontando para o AppExecutionAlias. O AppExecutionAlias permite que ele inicie o aplicativo com o valor definido na sessão de alias do manifesto do aplicativo, portanto, não é necessário especificar o caminho completo do aplicativo. Portanto, antes de criar o atalho, defina o alias no manifesto do aplicativo. Caso contrário, o Windows Explorer não reconhecerá o alias e não nos permitirá criar o atalho.

Criar o alias do aplicativo

Clique no item de menu Informações do pacote e clique em Abrir Arquivo, disponível na parte inferior da interface do usuário, para editar o manifesto do aplicativo:

abrir manifesto msix

Inclua os seguintes namespaces, que serão usados para criar o alias, da seguinte maneira:

xmlns:uap3="http://schemas.microsoft.com/appx/manifest/uap/windows10/3" xmlns:desktop="http://schemas.microsoft.com/appx/manifest/desktop/windows10" 

Inclua o valor uap3 e a área de trabalho no elemento IgnorableNamespaces :

IgnorableNamespaces="uap uap3 desktop rescap build"

Inclua o alias de execução do aplicativo após o <elemento /uap:VisualElements> :

  <Extensions>
    <uap3:Extension Category="windows.appExecutionAlias"   
                    Executable="ContosoExpenses\ContosoExpenses.exe"
                    EntryPoint="Windows.FullTrustApplication">
      <uap3:AppExecutionAlias>
        <desktop:ExecutionAlias Alias="contosoexpenses.exe" />
        </uap3:AppExecutionAlias>
      </uap3:Extension>
  </Extensions>

Segue o manifesto com as modificações:

criar alias

Salve e feche o arquivo de manifesto.

Volte para a Ferramenta de Empacotamento MSIX e gere um novo pacote. Depois que o pacote for criado, instale o pacote e inicie o aplicativo por meio do alias, por exemplo, pressionando Win+R e digitando contosoexpenses:

iniciar usando alias

Agora que o alias foi criado, é possível prosseguir para as próximas etapas.

Criar o atalho do aplicativo

Crie um novo atalho de aplicativo em uma pasta de sua preferência usando o aliascontosoexpenses.exe, da seguinte maneira:

novo atalho de aplicativo

Nomeie o atalho para Despesas da Contoso:

novo aplicativo termina de criar atalho

Por padrão, o atalho será um ícone genérico:

atalho de aplicativo genérico

Alterar o atalho é simples, mas o desafio aqui é evitar usar o caminho completo do aplicativo que tem o número da versão e que pode mudar em uma atualização futura. Uma maneira de resolver isso é copiar o ícone do pacote para o %appdata% usado pelo aplicativo MSIX, ou seja, a pasta %localappdata%\Packages\ContosoExpenses_3z09h3y28h0qg\LocalCache\Roaming_ que não tem número de versão.

Para alterar o atalho do aplicativo, por enquanto, é necessário copiar manualmente o ícone para essa pasta. Isso será automatizado posteriormente usando scripts PSF.

atalho appdata

Agora, é possível alterar o ícone de atalho para o caminho %localappdata%:

novo atalho de caminho

Ainda nas propriedades de atalho, aproveite e altere os valores do destino e inicie em propriedades para %localappdata%\Microsoft\WindowsApps\contosoexpenses.exe e %localappdata%\Microsoft\WindowsApps , respectivamente:

atalho de novos valores

Agora que o atalho está funcionando, a próxima etapa é adicioná-lo ao pacote e automatizar o processo de criação.

novo atalho

Obter os arquivos PSF

Baixe o PSFBinaries.zip do repositório Github do PSF.

psf de versões do github

Extraia os arquivos necessários de 32 bits ou 64 bits para a raiz do diretório do pacote, dependendo se o aplicativo tiver 32 ou 64 bits. Use a tabela a seguir como guia.

Executável de aplicativo é x64 O executável do aplicativo é x86
PSFLauncher64.exe PSFLauncher32.exe
PSFRuntime64.dll PSFRuntime32.dll

Incluir os arquivos PSF no pacote

Editar a Despesa da Contoso por meio da Ferramenta de Empacotamento MSIX :

psf do github edit mpt

Clique no item de menu Arquivos de Pacote , clique com o botão direito na pasta Pacote e selecione Adicionar Arquivo...:

psf do github adicionar arquivos psf

Como o build contosoExpense aqui é de 32 bits, ele foi adicionado aos arquivos necessários de 32 bits PSF. O conteúdo do pacote agora deve ser semelhante a este:

psf de arquivos adicionados do github psf

Atualizar o manifesto do pacote para PSF

Clique no item de menu Informações do pacote e clique em Abrir Arquivo, disponível na parte inferior da interface do usuário, para editar o manifesto do aplicativo:

psf do manifesto de edição do github

Nesta etapa, é necessário alterar o ponto de entrada do aplicativo (ContosoExpenses\ContosoExpenses.exe) pelo PSFLauncher32.exe.

 <Application Id="App" Executable="PSFLauncher32.exe" EntryPoint="Windows.FullTrustApplication">

Salve e feche o arquivo de manifesto.

Criar o arquivo config.json

Volte para a Ferramenta de Empacotamento MSIX, clique em Arquivos de Pacote, selecione a pasta Pacote e adicione um novo arquivo config.json com o conteúdo a seguir.

{
  "applications": [
    {
      "id": "App",
      "executable": "ContosoExpenses\\ContosoExpenses.exe",
      "workingDirectory": "ContosoExpenses\\",
      "startScript":
      {
        "scriptPath": "createshortcut.ps1",
        "runInVirtualEnvironment": false,
        "waitForScriptToFinish": true,
        "showWindow": false,
        "runOnce": true
      }
    }
  ]
}

👀 Observe que a ID do aplicativo é a mesma do manifesto:

O arquivo config.json deve ser criado na raiz do pacote, da seguinte maneira:

psf do github

O arquivo config.json está sendo usado para especificar que o script createshortcut.ps1 deve ser executado apenas uma vez na primeira inicialização do aplicativo. Como o diretório de trabalho é definido como ContosoExpenses, o scriptcreateshortcut.ps1 (que será criado posteriormente) e o script StartingScriptWrapper.ps1 (de arquivos PSF) devem ser adicionados à pasta ContosoExpenses .

Criar o script do PowerShell

Crie o script createshortcut.ps1 com o seguinte conteúdo:

Copy-Item "Contoso Expenses.lnk" "$env:USERPROFILE\desktop\Contoso Expenses.lnk"

Copy-Item "contoso.ico" $env:APPDATA\contoso.ico

O script createshortcut.ps1 copiará o atalho "Contoso Expenses.lnk", criado anteriormente e que estará disponível dentro do pacote, para a área de trabalho do usuário. A segunda instrução copia o contoso.icon para a pasta MSIX APPDATA (%localappdata%\Packages\ContosoExpenses_3z09h3y28h0qg\LocalCache\Roaming).

A próxima etapa é copiar os seguintes arquivos para a pasta ContosoExpenses do pacote:

  • Contoso Expenses.lnk
  • Contoso.ico
  • StartingScriptWrapper.ps1
  • createshortcut.ps1

Por fim, a última etapa é criar e instalar a nova versão do pacote de aplicativos. Durante a primeira inicialização do aplicativo, o scriptcreateshortcut.ps1 será executado e criará o atalho Despesas da Contoso na Área de Trabalho do usuário.