패키지 지원 프레임워크를 사용하여 스크립트 실행

스크립트를 사용하면 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)
  ]
}