Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
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 oferecem muita flexibilidade. Eles podem alterar chaves do Registro ou executar modificações de arquivo com base na configuração da máquina 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 depois que o executável do aplicativo for executado para limpeza. Cada executável do aplicativo definido no manifesto do aplicativo pode ter seus próprios scripts. Você pode configurar o script para ser executado apenas uma vez 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. Existem outras opções para configurar a forma como os scripts podem ser executados, mostradas abaixo.
Pré-requisitos
Para permitir 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. Certifique-se de abrir cada versão do PowerShell e executar 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.
🚩 Certifique-se também de incluir o arquivo StartingScriptWrapper.ps1 em seu pacote e colocá-lo na mesma pasta que seu executável. Você pode copiar esse arquivo do pacote NuGet PSF ou do repositório Github PSF.
Ativar 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 da aplicação empacotada, adicione um item de configuração chamado endScript.
Itens de configuração de script
A seguir estão os itens de configuração disponíveis para os scripts. O script de encerramento ignora os itens de configuração waitForScriptToFinish e stopOnScriptError.
| Nome da chave | Tipo de valor | Necessário? | Predefinido | Descrição |
|---|---|---|---|---|
scriptPath |
corda | Sim | N/A | 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 |
corda | Não | vazio | Lista de argumentos delimitados por espaço. O formato é o mesmo para uma chamada de script do PowerShell. Essa cadeia de caracteres é anexada a scriptPath para realizar uma chamada PowerShell.exe válida. |
runInVirtualEnvironment |
Booleano | Não | verdadeiro | Especifica se o script deve ser executado no mesmo ambiente virtual em que o aplicativo empacotado é executado. |
runOnce |
Booleano | Não | verdadeiro | Especifica se o script deve ser executado uma vez por usuário, por versão. |
showWindow |
Booleano | Não | falso | Especifica se a janela do PowerShell é mostrada. |
stopOnScriptError |
Booleano | Não | falso | Especifica se o aplicativo deve ser encerrado se o script inicial falhar. |
waitForScriptToFinish |
Booleano | Não | verdadeiro | Especifica se o aplicativo empacotado deve aguardar a conclusão do script inicial antes de iniciar. |
timeout |
Tipo de dados DWORD | Não | INFINITO | Por quanto tempo o script poderá 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 esses dois itens de configuração, o PSF retornará o erro ERROR_BAD_CONFIGURATION.
Exemplo de configuração
Aqui está um exemplo de configuração 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)
]
}