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

조사

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

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

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

  2. Windows 시작 메뉴를 엽니다.

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

  4. 앱이 시작되면 아무 문제도 없습니다(시작 메뉴에서 연결된 모든 Windows 앱 시작 관리자 테스트).

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

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

  7. Windows 시작 메뉴를 엽니다.

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

  9. 드롭다운 메뉴 내에서 MoreOpen>>파일 위치를 선택합니다.

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

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

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

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

해상도

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

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

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

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

필수 도구 다운로드 및 설치

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

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

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

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

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

    Set-Location "C:\PSF"
    .\nuget\nuget.exe install Microsoft.PackageSupportFramework
    
  3. Windows 10 소프트웨어 개발 Toolkit 다운로드하여 설치합니다(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. 특정 앱 파일을 대상으로 하는 다음 변수를 설정하고 SDK 버전을 Windows 10.

    $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. Visual Studio Code(VS 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 App 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.idconfig.json의 값을 AppxManifest.xml 파일의 Applications.Application.ID 필드에 있는 값과 동일하게 설정합니다. Image circling the location of the ID within the AppxManifest file.

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

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

  9. applications.workingdirectoryconfig.json의 값을 설정하여 AppxManifest.xml 파일의 Applications.Application.Executable 필드에 있는 상대 폴더 경로를 대상으로 지정합니다. 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)
    PSFLauncher64.exe PSFLauncher32.exe
    PSFRuntime64.dll PSFRuntime32.dll
    PSFRunDll64.exe PSFRunDll32.exe

AppxManifest 업데이트

config.json 파일을 만들고 업데이트한 후 config.json에 포함된 각 Windows 앱 시작 관리자 대해 Windows 앱의AppxManifest.xml업데이트해야 합니다. AppxManifest의 애플리케이션은 이제 애플리케이션 아키텍처와 연결된 PSFLauncher.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