매개 변수를 사용하여 Windows 앱 시작

조사

시작 메뉴의 일부 Windows 앱 시작 관리자에서는 Windows 앱을 시작할 때 매개 변수를 실행 파일에 전달해야 합니다. 이렇게 하려면 먼저 Windows 앱을 패키지 지원 프레임워크와 통합하기 전에 매개 변수가 필요한 시작 관리자를 식별해야 합니다.

Windows 앱 시작 관리자 매개 변수 요구 사항 식별

  1. 테스트 컴퓨터에 Windows 앱을 설치합니다.

  2. Windows 시작 메뉴 열기

  3. 시작 메뉴 내에서 Windows 앱 시작 관리자를 찾아 선택합니다.

  4. 앱이 시작되면 문제가 발생하지 않습니다(시작 메뉴에서 연결된 모든 Windows 앱 시작 관리자 테스트).

  5. 테스트 컴퓨터에서 Windows 앱을 제거합니다.

  6. Win32 설치 미디어를 사용하여 테스트 컴퓨터에 애플리케이션을 설치합니다.

  7. Windows 시작 메뉴 열기

  8. 시작 메뉴 내에서 Windows 앱을 찾아 마우스 오른쪽 단추로 클릭합니다.

  9. 드롭다운 메뉴 내에서 더 많은>>파일 열기 위치를 선택합니다.

  10. 첫 번째 연결된 애플리케이션 바로 가기를 마우스 오른쪽 단추로 클릭합니다(연결된 모든 애플리케이션 바로 가기에 대해 다음 세 단계를 반복합니다).

  11. 드롭다운 메뉴에서 속성을 선택합니다.

  12. 대상의 오른쪽 텍스트 상자에서 값을 검토합니다. 애플리케이션 파일 경로 후 나열된 매개 변수가 있는 경우 이 앱 Example of the File Property Window with Parameter in Target

  13. 나중에 사용할 매개 변수 값을 기록합니다.

해결

Windows 앱은 애플리케이션과 관련된 특정 디렉터리를 폴더로 C:\Program Files\WindowsApps 리디렉션합니다. 애플리케이션이 Windows 앱 컨테이너에 쓰려고 하면 오류가 트리거되고 쓰기가 실패합니다.

Windows 앱 컨테이너에 쓰지 못하는 Windows 앱과 관련된 문제를 해결하려면 다음 네 단계를 수행해야 합니다.

  1. 로컬 디렉터리에 Windows 앱 스테이징
  2. Config.json을 만들고 필요한 PSF 파일 삽입
  3. Windows 앱 AppxManifest 파일 업데이트
  4. Windows 앱 재패키지 및 서명

위의 단계에서는 Windows 앱의 콘텐츠를 로컬 스테이징 디렉터리에 추출하고, PSF 수정 파일을 준비된 Windows 앱 디렉터리에 삽입하고, PSF 시작 관리자를 가리키도록 애플리케이션 시작 관리자 구성한 다음, PSF 시작 관리자를 작업 디렉터리를 지정하는 앱으로 리디렉션하도록 PSF config.json 파일을 구성하는 지침을 제공합니다.

필수 도구 다운로드 및 설치

이 프로세스는 다음 도구의 검색 및 사용을 안내합니다.

  • NuGet 클라이언트 도구
  • 패키지 지원 프레임워크
  • Windows 10 SDK(최신 버전)
  • SysInternals 프로세스 모니터

다음은 필요한 도구를 다운로드하고 설치하는 방법에 대한 단계별 지침을 제공합니다.

  1. NuGet 클라이언트 도구의 최신(미리 보기가 아닌) 버전을 다운로드하고 nuget.exe를 폴더에 C:\PSF\nuget 저장합니다.

  2. 관리Istrative PowerShell 창에서 다음을 실행하여 Nuget을 사용하여 패키지 지원 프레임워크를 다운로드합니다.

    Set-Location "C:\PSF"
    .\nuget\nuget.exe install Microsoft.PackageSupportFramework
    
  3. Windows 10 소프트웨어 개발 도구 키트(Win 10 SDK)를 다운로드하여 설치합니다.

    1. Win 10 SDK를 다운로드합니다.
    2. 이전 단계에서 다운로드한 winsdksetup.exe를 실행합니다.
    3. 다음 버튼을 선택합니다.
    4. 설치를 위해 다음 세 가지 기능만 선택합니다.
      • 데스크톱 앱용 Windows SDK 서명 도구
      • UWP C++ 앱용 Windows SDK
      • UWP 앱 지역화용 Windwos SDK
    5. 설치 단추를 선택합니다.
    6. 확인 단추를 선택합니다.

Windows 앱 스테이징

Windows 앱을 준비하면 Windows 앱의 콘텐츠를 로컬 디렉터리로 추출/압축 해제합니다. Windows 앱이 준비 위치로 압축을 풀면 PSF 수정 파일을 삽입하여 원치 않는 환경을 수정할 수 있습니다.

  1. 관리이상 PowerShell 창을 엽니다.

  2. 특정 앱 파일 및 Windows 10 SDK 버전을 대상으로 하는 다음 변수를 설정합니다.

    $AppPath          = "C:\PSF\SourceApp\PSFSampleApp.msix"         ## Path to the MSIX App Installer
    $StagingFolder    = "C:\PSF\Staging\PSFSampleApp"                ## Path to where the MSIX App will be staged
    $OSArchitecture   = "x$((gcim Win32_Processor).AddressWidth)"    ## Operating System Architecture
    $Win10SDKVersion  = "10.0.19041.0"                               ## Latest version of the Win10 SDK
    
  3. 다음 PowerShell cmdlet을 실행하여 Windows 앱을 스테이징 폴더로 압축을 풀 수 있습니다.

    ## Sets the directory to the Windows 10 SDK
    Set-Location "${env:ProgramFiles(x86)}\Windows Kits\10\Bin\$Win10SDKVersion\$OSArchitecture"
    
    ## Unpackages the Windows app to the staging folder
    .\makeappx.exe unpack /p "$AppPath" /d "$StagingFolder"
    

필요한 PSF 파일 만들기 및 삽입

Windows 앱 에 수정 작업을 적용하려면 config.json 파일을 만들고 실패하는 Windows 앱 시작 관리자에 대한 정보를 제공해야 합니다. 문제가 발생하는 Windows 앱 시작 관리자가 여러 개 있는 경우 config.json 파일을 여러 항목으로 업데이트할 수 있습니다.

config.json 파일을 업데이트한 후 config.json 파일 및 지원 PSF 수정 파일을 Windows 앱 패키지의 루트로 이동해야 합니다.

  1. VS Code(Visual Studio Code) 또는 다른 텍스트 편집기를 엽니다.

  2. VS Code 맨 위에 있는 파일 메뉴를 선택하고 드롭다운 메뉴에서 새 파일을 선택하여 새 파일을 만듭니다.

  3. VS Code 창 맨 위에 있는 파일 메뉴를 선택하고 드롭다운 메뉴에서 저장을 선택하여 파일을 config.json으로 저장합니다. 다른 이름으로 저장 창에서 Windows 앱 준비 디렉터리(C:\PSF\Staging\PSFSampleApp)로 이동하고 파일 이름을 .로 config.json설정합니다. 저장 단추를 선택합니다.

  4. 다음 코드를 새로 만든 config.json 파일에 복사합니다.

    {
        "applications": [
            {
                "id": "",
                "executable": "",
                "arguments": ""
            }
        ]
    }
    
  5. VS Code 또는 다른 텍스트 편집기를 사용하여 Windows 앱 준비 폴더(C:\PSF\Staging\PSFSampleApp\AppxManifest.xml)에 있는 준비된 Windows 앱 AppxManifest 파일을 엽니다.

    <Applications>
        <Application Id="PSFSAMPLE" Executable="VFS\ProgramFilesX64\PS Sample App\PSFSample.exe" EntryPoint="Windows.FullTrustApplication">
        <uap:VisualElements BackgroundColor="transparent" DisplayName="PSFSample" Square150x150Logo="Assets\StoreLogo.png" Square44x44Logo="Assets\StoreLogo.png" Description="PSFSample">
            <uap:DefaultTile Wide310x150Logo="Assets\StoreLogo.png" Square310x310Logo="Assets\StoreLogo.png" Square71x71Logo="Assets\StoreLogo.png" />
        </uap:VisualElements>
        </Application>
    </Applications>
    
  6. applications.id config.json값을 AppxManifest.xml 파일의 Applications.Application.ID 필드에 있는 값과 동일하게 설정합니다. Image circling the location of the ID within the AppxManifest file.

  7. applications.executable AppxManifest.xml 파일의 Applications.Application.Executable 필드에 있는 애플리케이션의 상대 경로를 대상으로 하려면 config.json값을 설정합니다. Image circling the location of the executable within the AppxManifest file.

  8. applications.arguments config.json의 값을 애플리케이션을 시작하는 데 사용되는 인수와 일치하도록 설정합니다. 조사 - Windows 앱 시작 관리자 매개 변수 요구 사항 식별 지침의 마지막 단계에서 기록된 값을 참조하세요.

  9. applications.workingdirectory AppxManifest.xml 파일의 Applications.Application.Executable 필드에 있는 상대 폴더 경로를 대상으로 하려면 config.json값을 설정합니다. Image circling the location of the working directory within the AppxManifest file.

  10. 업데이트 된 config.json 파일을 저장합니다.

    {
        "applications": [
            {
            "id": "PSFSample",
            "executable": "VFS/ProgramFilesX64/PS Sample App/PSFSample.exe",
            "arguments": "/bootfromsettingshortcut"
            }
        ]
    }
    
  11. 애플리케이션 실행 아키텍처에 따라 패키지 지원 프레임워크에서 스테이징된 Windows 앱의 루트로 다음 4개의 파일을 복사합니다. 다음 파일은 .\Microsoft.PackageSupportFramework 내에 있습니다.<Version>\bin.

    애플리케이션(x64) 애플리케이션(x86)
    PSF시작 관리자64.exe PSF시작 관리자32.exe
    PSFRuntime64.dll PSFRuntime32.dll
    PSFRunDll64.exe PSFRunDll32.exe

AppxManifest 업데이트

config.json 파일을 만들고 업데이트한 후에는 config.json에 포함된 각 Windows 앱 시작 관리자에 대해 Windows 앱의 AppxManifest.xml을 업데이트해야 합니다. AppxManifest의 애플리케이션은 이제 애플리케이션 아키텍처와 연결된 PSF시작 관리자.exe를 대상으로 해야 합니다.

  1. 파일 탐색기 열고 스테이징된 MSIX 앱 폴더(C:\PSF\Staging\PSFSampleApp)로 이동합니다.

  2. AppxManifest.xml마우스 오른쪽 단추로 클릭하고 드롭다운 메뉴에서 코드로 열기를 선택합니다(필요에 따라 다른 텍스트 편집기를 사용하여 열 수 있습니다).

  3. AppxManifest.xml 파일을 다음 정보로 업데이트합니다.

    <Package ...>
    ...
    <Applications>
        <Application Id="PSFSample"
                    Executable="PSFLauncher32.exe"
                    EntryPoint="Windows.FullTrustApplication">
        ...
        </Application>
    </Applications>
    </Package>
    

애플리케이션 다시 패키지

모든 수정 사항이 적용되었으므로 이제 Windows 앱을 MSIX로 다시 패키지하고 코드 서명 인증서를 사용하여 서명할 수 있습니다.

  1. 관리이상 PowerShell 창을 엽니다.

  2. 다음 변수를 설정합니다.

    $AppPath          = "C:\PSF\SourceApp\PSFSampleApp_Updated.msix" ## Path to the MSIX App Installer
    $CodeSigningCert  = "C:\PSF\Cert\CodeSigningCertificate.pfx"     ## Path to your code signing certificate
    $CodeSigningPass  = "<Password>"                                 ## Password used by the code signing certificate
    $StagingFolder    = "C:\PSF\Staging\PSFSampleApp"                ## Path to where the MSIX App will be staged
    $OSArchitecture   = "x$((gcim Win32_Processor).AddressWidth)"    ## Operating System Architecture
    $Win10SDKVersion  = "10.0.19041.0"                               ## Latest version of the Win10 SDK
    
  3. 다음 PowerShell cmdlet을 실행하여 스테이징 폴더에서 Windows 앱을 다시 패키지합니다.

    Set-Location "${env:ProgramFiles(x86)}\Windows Kits\10\Bin\$Win10SDKVersion\$OSArchitecture"
    .\makeappx.exe pack /p "$AppPath" /d "$StagingFolder"
    
  4. 다음 PowerShell cmdlet을 실행하여 Windows 앱에 서명합니다.

    Set-Location "${env:ProgramFiles(x86)}\Windows Kits\10\Bin\$Win10SDKVersion\$OSArchitecture"
    .\signtool.exe sign /v /fd sha256 /f $CodeSigningCert /p $CodeSigningPass $AppPath