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

조사

시작 메뉴의 일부 Windows 앱 시작 프로그램은 Windows 앱을 실행할 때 매개 변수를 사용 하 여 실행 파일에 전달 해야 합니다. 이를 위해 먼저 Windows 앱을 패키지 지원 프레임 워크와 통합 하기 전에 매개 변수를 요구 하는 시작 관리자를 확인 해야 합니다.

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

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

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

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

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

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

  6. Win32 설치 미디어를 사용 하 여 테스트 컴퓨터에 응용 프로그램을 설치 합니다.

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

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

  9. 드롭다운 메뉴에서 다른파일 위치 열기 를 선택 합니다.

  10. 연결 된 첫 번째 응용 프로그램 바로 가기를 마우스 오른쪽 단추로 클릭 하 고 연결 된 모든 응용 프로그램 바로 가기에 대해 다음 세 단계를 반복 합니다.

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

  12. 대상오른쪽의 텍스트 상자에서 값을 확인 합니다. 응용 프로그램 파일 경로 다음에 나열 된 매개 변수를 포함 하는 경우이 앱은 대상의 매개 변수가 있는 파일 속성 창의 예입니다 .

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

해결 방법

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

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

  1. 로컬 디렉터리에 대 한 Windows 앱 준비
  2. App.config를 만들고 필요한 PSF 파일을 삽입 합니다.
  3. Windows App appxmanifest.xml 파일 업데이트
  4. Windows 앱 다시 패키징 및 서명

위의 단계에서는 Windows 앱의 콘텐츠를 로컬 준비 된 디렉터리로 추출 하 고, 준비 된 Windows app 디렉터리에 PSF 픽스업 파일을 삽입 하 고, PSF 시작 관리자를 가리키도록 응용 시작 관리자 프로그램을 구성 하 고, PSF 시작 관리자를 구성 하 여 작업 디렉터리를 지정 하는 앱으로를 리디렉션하는 방법에 대 한 지침을 제공 합니다.

필수 도구 다운로드 및 설치

이 프로세스는 다음 도구를 검색 하 고 사용 하는 과정을 안내 합니다.

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

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

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

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

    Set-Location "C:\PSF"
    .\nuget\nuget.exe install Microsoft.PackageSupportFramework
    
  3. Windows 10 Software Development 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 앱의 내용을 로컬 디렉터리에 추출/unpackaging 하 게 됩니다. 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$((gwmi 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 앱에 정정 작업을 적용 하려면 web.config 파일을 만들고 실패 한 Windows 앱 시작 관리자 대 한 정보를 제공 해야 합니다. 문제가 발생 하는 Windows 앱 시작 프로그램이 여러 개 있는 경우 config.xml 파일을 여러 항목으로 업데이트할 수 있습니다.

PSF 파일을 업데이트 한 후에는 app.config 파일 및 지원 되는 픽스업 파일을 Windows 앱 패키지의 루트로 이동 해야 합니다.

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

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

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

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

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

    <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.Application.ID의 applications.id 값을 AppxManifest.xml 파일의 필드에 있는 값과 동일 하 게 설정 합니다 applications.id 이미지가 Appxmanifest.xml 파일 내에서 ID의 위치를 벗어났습니다.

  7. AppxManifest.xml파일의 응용 프로그램 파일에 있는 응용 프로그램의 applications.executable 상대 경로를 대상으로 하는 응용 프로그램에 대 한 상대 경로를 대상으로 하는 값 applications.executable 합니다. 이미지가 Appxmanifest.xml 파일 내에서 실행 파일의 위치를 벗어났습니다.

  8. applications.arguments응용 프로그램을 시작 하는 데 사용 된 인수와 일치 하도록 applications.arguments 의 값을 설정 합니다. 조사 Windows 앱을 식별 하는 마지막 단계에서 기록 된 값 시작 관리자 매개 변수 요구 사항 지침을 참조 하세요.

  9. applications.workingdirectoryAppxManifest.xml 파일의 응용 프로그램. 응용 프로그램 파일에 있는 상대 폴더 경로를 대상으로 하는 applications.workingdirectory 의 값을 설정 합니다. 이미지가 Appxmanifest.xml 파일 내에서 작업 디렉터리의 위치를 벗어났습니다.

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

    {
        "applications": [
            {
            "id": "PSFSample",
            "executable": "VFS/ProgramFilesX64/PS Sample App/PSFSample.exe",
            "arguments": "/bootfromsettingshortcut"
            }
        ]
    }
    
  11. 응용 프로그램 실행 파일 아키텍처에 따라 패키지 지원 프레임 워크에서 준비 된 Windows 앱의 루트에 다음 네 개의 파일을 복사 합니다. 다음 파일은 .\Microsoft.PackageSupportFramework.\bin내에 있습니다.

    응용 프로그램 (x64) 응용 프로그램 (x86)
    PSFLauncher64.exe PSFLauncher32.exe
    PSFRuntime64.dll PSFRuntime32.dll
    PSFRunDll64.exe PSFRunDll32.exe

Appxmanifest.xml 업데이트

app.config 파일을 만들고 업데이트 한 후에는 app.config에 포함 된 각 Windows 앱 시작 관리자에 대해 Windows 앱의 AppxManifest.xml 업데이트 해야 합니다. Appxmanifest.xml의 응용 프로그램은 이제 응용 프로그램 아키텍처와 관련 된 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$((gwmi 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