Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Os scripts permitem que os profissionais de TI personalizem um aplicativo dinamicamente para o ambiente do usuário depois que ele é empacotado usando o MSIX. Por exemplo, você pode usar scripts para configurar seu banco de dados, configurar uma VPN, montar uma unidade compartilhada ou executar uma verificação de licença dinamicamente. Os scripts fornecem muita flexibilidade. Eles podem alterar as chaves do Registro ou executar modificações de arquivo com base na configuração do computador ou do servidor.
Você pode usar o PSF (Package Support Framework) para executar um script do PowerShell antes que um executável de aplicativo empacotado seja executado e um script do PowerShell após a execução do executável do aplicativo para limpar. Cada executável de aplicativo definido no manifesto do aplicativo pode ter seus próprios scripts. Você pode configurar o script para ser executado uma vez apenas na primeira inicialização do aplicativo e sem mostrar a janela do PowerShell para que os usuários não terminem o script prematuramente por engano. Há outras opções para configurar a maneira como os scripts podem ser executados, mostrado abaixo.
Pré-requisitos
Para habilitar a execução de scripts, você precisa definir a política de execução do PowerShell como RemoteSigned. Você pode fazer isso executando este comando:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
A política de execução precisa ser definida para o executável do PowerShell de 64 bits e o executável do PowerShell de 32 bits. Abra cada versão do PowerShell e execute um dos comandos mostrados acima.
Aqui estão os locais de cada executável.
- Computador de 64 bits:
- Executável de 64 bits: %SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe
- Executável de 32 bits: %SystemRoot%\SysWOW64\WindowsPowerShell\v1.0\powershell.exe
- Computador de 32 bits:
- Executável de 32 bits: %SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe
Para obter mais informações sobre políticas de execução do PowerShell, consulte este artigo.
🚩 Inclua também o arquivo StartingScriptWrapper.ps1 em seu pacote e coloque-o na mesma pasta que o executável. Você pode copiar esse arquivo do pacote PSF NuGet ou do repositório Github do PSF.
Habilitar scripts
Para especificar quais scripts serão executados para cada executável de aplicativo empacotado, você precisa modificar o arquivoconfig.json. Para dizer ao PSF para executar um script antes da execução do aplicativo empacotado, adicione um item de configuração chamado startScript. Para instruir o PSF a executar um script após a conclusão do aplicativo empacotado, adicione um item de configuração chamado endScript.
Itens de configuração de script
Veja a seguir os itens de configuração disponíveis para os scripts. O script final ignora os itens de configuração waitForScriptToFinish e stopOnScriptError.
| Nome da chave | Tipo de valor | Obrigatório? | Padrão | Descrição |
|---|---|---|---|---|
scriptPath |
cadeia de caracteres | Sim | Não aplicável | O caminho para o script, incluindo o nome e a extensão. O caminho é relativo ao diretório de trabalho do aplicativo, se especificado, caso contrário, ele começa no diretório raiz do pacote. |
scriptArguments |
cadeia de caracteres | Não | vazio | Lista de argumentos delimitados por espaço. O formato é o mesmo para uma chamada de script do PowerShell. Essa string é acrescentada a scriptPath para fazer uma chamada PowerShell.exe válida. |
runInVirtualEnvironment |
booliano | Não | verdadeiro | Especifica se o script deve ser executado no mesmo ambiente virtual em que o aplicativo empacotado é executado. |
runOnce |
booliano | Não | verdadeiro | Especifica se o script deve ser executado uma vez por usuário, por versão. |
showWindow |
booliano | Não | falso | Especifica se a janela do PowerShell é mostrada. |
stopOnScriptError |
booliano | Não | falso | Especifica se o aplicativo será encerrado se o script inicial falhar. |
waitForScriptToFinish |
booliano | Não | verdadeiro | Especifica se o aplicativo empacotado deve aguardar a conclusão do script inicial antes de começar. |
timeout |
DWORD | Não | INFINITO | Por quanto tempo o script terá permissão para ser executado. Quando o tempo passar, o script será interrompido. |
Observação
Não há suporte para a configuração stopOnScriptError: true e waitForScriptToFinish: false para o aplicativo de exemplo. Se você definir ambos os itens de configuração, o PSF retornará o erro ERROR_BAD_CONFIGURATION.
Exemplo de configuração
Aqui está uma configuração de exemplo usando dois executáveis de aplicativo diferentes.
{
"applications": [
{
"id": "Sample",
"executable": "Sample.exe",
"workingDirectory": "",
"stopOnScriptError": false,
"startScript":
{
"scriptPath": "RunMePlease.ps1",
"scriptArguments": "\\\"First argument\\\" secondArgument",
"runInVirtualEnvironment": true,
"showWindow": true,
"waitForScriptToFinish": false
},
"endScript":
{
"scriptPath": "RunMeAfter.ps1",
"scriptArguments": "ThisIsMe.txt"
}
},
{
"id": "CPPSample",
"executable": "CPPSample.exe",
"workingDirectory": "",
"startScript":
{
"scriptPath": "CPPStart.ps1",
"scriptArguments": "ThisIsMe.txt",
"runInVirtualEnvironment": true
},
"endScript":
{
"scriptPath": "CPPEnd.ps1",
"scriptArguments": "ThisIsMe.txt",
"runOnce": false
}
}
],
"processes": [
...(taken out for brevity)
]
}