패키지 지원 프레임워크를 사용하여 스크립트 실행
스크립트를 사용하면 IT 전문가가 MSIX를 사용하여 패키지된 후 애플리케이션을 사용자 환경에 동적으로 사용자 지정할 수 있습니다. 예를 들어 스크립트를 사용하여 데이터베이스를 구성하거나, VPN을 설정하거나, 공유 드라이브를 탑재하거나, 라이선스 검사 동적으로 수행할 수 있습니다. 스크립트는 많은 유연성을 제공합니다. 레지스트리 키를 변경하거나 컴퓨터 또는 서버 구성에 따라 파일 수정을 수행할 수 있습니다.
PSF(패키지 지원 프레임워크)를 사용하여 패키지된 애플리케이션 실행 파일이 실행되기 전에 하나의 PowerShell 스크립트를 실행하고, 애플리케이션 실행 파일이 실행된 후 하나의 PowerShell 스크립트를 실행하여 클린 수 있습니다. 애플리케이션 매니페스트에 정의된 각 애플리케이션 실행 파일에는 자체 스크립트가 있을 수 있습니다. 사용자가 실수로 스크립트를 조기에 종료하지 않도록 첫 번째 앱 시작 시와 PowerShell 창을 표시하지 않고 한 번만 실행되도록 스크립트를 구성할 수 있습니다. 아래와 같이 스크립트를 실행할 수 있는 방법을 구성하는 다른 옵션이 있습니다.
필수 조건
스크립트를 실행할 수 있도록 하려면 PowerShell 실행 정책을 .로 설정해야 합니다 RemoteSigned
. 다음 명령을 실행하여 이 작업을 수행할 수 있습니다.
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned
64비트 PowerShell 실행 파일과 32비트 PowerShell 실행 파일에 대해 실행 정책을 설정해야 합니다. PowerShell의 각 버전을 열고 위에 표시된 명령 중 하나를 실행해야 합니다.
각 실행 파일의 위치는 다음과 같습니다.
- 64비트 컴퓨터:
- 64비트 실행 파일: %SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe
- 32비트 실행 파일: %SystemRoot%\SysWOW64\WindowsPowerShell\v1.0\powershell.exe
- 32비트 컴퓨터:
- 32비트 실행 파일: %SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe
PowerShell 실행 정책에 대한 자세한 내용은 이 문서를 참조 하세요.
🚩 또한 패키지에 StartingScriptWrapper.ps1 파일을 포함하고 실행 파일과 동일한 폴더에 배치해야 합니다. PSF NuGet 패키지 또는 PSF Github 리포지토리에서 이 파일을 복사할 수 있습니다.
스크립트 사용
패키지된 각 애플리케이션 실행 파일에 대해 실행할 스크립트를 지정하려면 config.json 파일을 수정해야 합니다. 패키지된 애플리케이션을 실행하기 전에 스크립트를 실행하도록 PSF에 지시하려면 라는 startScript
구성 항목을 추가합니다. 패키지된 애플리케이션이 완료된 후 스크립트를 실행하도록 PSF에 지시하려면 라는 endScript
구성 항목을 추가합니다.
구성 항목 스크립트
다음은 스크립트에 사용할 수 있는 구성 항목입니다. 끝 스크립트는 구성 항목과 stopOnScriptError
구성 항목을 무시합니다waitForScriptToFinish
.
키 이름 | 값 유형 | 필수 여부 | 기본값 | 설명 |
---|---|---|---|---|
scriptPath |
string | 예 | 해당 없음 | 이름 및 확장을 포함하는 스크립트의 경로입니다. 경로는 지정된 경우 애플리케이션의 작업 디렉터리에 상대적이며, 그렇지 않으면 패키지의 루트 디렉터리에서 시작됩니다. |
scriptArguments |
string | 아니요 | empty | 공백으로 구분된 인수 목록입니다. PowerShell 스크립트 호출의 형식은 동일합니다. 이 문자열은 유효한 PowerShell.exe 호출을 위해 scriptPath 추가됩니다. |
runInVirtualEnvironment |
부울 값 | 예 | true | 패키지된 애플리케이션이 실행되는 것과 동일한 가상 환경에서 스크립트를 실행할지 여부를 지정합니다. |
runOnce |
부울 값 | 예 | true | 스크립트가 버전별로 사용자당 한 번 실행되어야 하는지 여부를 지정합니다. |
showWindow |
부울 값 | 예 | false | PowerShell 창이 표시되는지 여부를 지정합니다. |
stopOnScriptError |
부울 값 | 예 | false | 시작 스크립트가 실패할 경우 애플리케이션을 종료할지 여부를 지정합니다. |
waitForScriptToFinish |
부울 값 | 예 | true | 패키지된 애플리케이션이 시작하기 전에 시작 스크립트가 완료될 때까지 기다려야 하는지 여부를 지정합니다. |
timeout |
DWORD | 아니요 | INFINITE | 스크립트를 실행할 수 있는 기간입니다. 시간이 경과하면 스크립트가 중지됩니다. |
참고 항목
waitForScriptToFinish: false
샘플 애플리케이션에 대한 설정 stopOnScriptError: true
은 지원되지 않습니다. 이러한 구성 항목을 모두 설정하면 PSF는 오류 ERROR_BAD_CONFIGURATION 반환합니다.
샘플 구성
다음은 두 개의 다른 애플리케이션 실행 파일을 사용하는 샘플 구성입니다.
{
"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)
]
}