Udostępnij przez


Uruchamianie aplikacji systemu Windows z parametrami

Badanie

Niektóre programy uruchamiające aplikacje systemu Windows w menu Start wymagają przekazania parametrów do pliku wykonywalnego podczas uruchamiania aplikacji. W tym celu najpierw należy zidentyfikować moduł uruchamiający wymagający parametru przed zintegrowaniem aplikacji systemu Windows z platformą obsługi pakietów.

Identyfikowanie wymagania parametru uruchamiania aplikacji systemu Windows

  1. Zainstaluj aplikację systemu Windows na maszynie testowej.

  2. Otwórz menu Start systemu Windows.

  3. Zlokalizuj i wybierz pozycję Uruchamianie aplikacji systemu Windows z menu Start.

  4. Jeśli aplikacja się uruchomi, nie masz żadnych problemów (przetestuj wszystkie skojarzone programy uruchamiające aplikacje systemu Windows w menu Start).

  5. Odinstaluj aplikację systemu Windows z maszyny testowej.

  6. Za pomocą nośnika instalacyjnego Win32 zainstaluj aplikację na maszynie testowej.

  7. Otwórz menu Start systemu Windows.

  8. Zlokalizuj i kliknij prawym przyciskiem myszy aplikację systemu Windows z menu Start.

  9. Wybierz pozycję Więcej>>otwórz lokalizację pliku z menu rozwijanego.

  10. Kliknij prawym przyciskiem myszy pierwszy skojarzony skrót aplikacji (powtórz następne trzy kroki dla wszystkich skojarzonych skrótów aplikacji).

  11. Wybierz pozycję Właściwości z menu rozwijanego.

  12. Przejrzyj wartość w polu tekstowym po prawej stronie Target. Po ścieżce pliku aplikacji, jeśli jest podany parametr, ta aplikacja Przykład okna właściwości pliku z parametrem w polu celu

  13. Zarejestruj wartość parametru do użycia w przyszłości.

Rezolucja

Aplikacje systemu Windows przekierowują określone katalogi powiązane z aplikacją C:\Program Files\WindowsApps do folderu. Jeśli aplikacja spróbuje zapisać w kontenerze aplikacji systemu Windows, zostanie wyzwolony błąd i zapis zakończy się niepowodzeniem.

Aby rozwiązać problem związany z niepowodzeniem zapisu aplikacji systemu Windows w kontenerze aplikacji systemu Windows, należy wykonać następujące cztery kroki:

  1. Umieść aplikację Windows w katalogu lokalnym
  2. Utwórz Config.json i załaduj wymagane pliki PSF
  3. Aktualizowanie pliku AppxManifest aplikacji systemu Windows
  4. Przebudowanie i podpisanie aplikacji systemu Windows

Powyższe kroki zawierają wskazówki dotyczące wyodrębniania zawartości aplikacji systemu Windows do lokalnego katalogu etapowego, wstrzykiwania plików poprawki PSF do przygotowanego katalogu aplikacji systemu Windows, konfigurowania modułu uruchamiania aplikacji w celu wskazania modułu uruchamiania psF, a następnie skonfigurowania pliku psF config.json w celu przekierowania modułu uruchamiania PSF do aplikacji określającej katalog roboczy.

Pobieranie i instalowanie wymaganych narzędzi

Ten proces przeprowadzi Cię przez proces pobierania i użycia następujących narzędzi:

  • Narzędzie klienta NuGet
  • Struktura obsługi pakietów
  • Windows 10 SDK (najnowsza wersja)
  • Monitor procesów SysInternals

Poniższe instrukcje zawierają szczegółowe wskazówki dotyczące pobierania i instalowania wymaganych narzędzi.

  1. Pobierz najnowszą (inną niż wersja zapoznawcza) wersję narzędzia klienckiego NuGet i zapisz nuget.exe w folderze C:\PSF\nuget .

  2. Pobierz program Package Support Framework przy użyciu narzędzia Nuget , uruchamiając następujące polecenie w oknie administracyjnego programu PowerShell:

    Set-Location "C:\PSF"
    .\nuget\nuget.exe install Microsoft.PackageSupportFramework
    
  3. Pobierz i zainstaluj zestaw narzędzi Windows 10 Software Development Toolkit (Win 10 SDK).

    1. Pobierz zestaw SDK systemu Win 10.
    2. Uruchom winsdksetup.exe , który został pobrany w poprzednim kroku.
    3. Kliknij przycisk Next (Dalej).
    4. Wybierz tylko następujące trzy funkcje do zainstalowania:
      • Narzędzia podpisywania Windows SDK dla aplikacji komputerowych
      • Zestaw Windows SDK dla aplikacji języka C++ platformy UWP
      • Środowisko Windows SDK do lokalizacji aplikacji UWP
    5. Wybierz przycisk Zainstaluj.
    6. Wybierz przycisk OK.

Przygotowywanie aplikacji systemu Windows

Etapowanie aplikacji systemu Windows spowoduje rozpakowanie jej zawartości do katalogu lokalnego. Po rozpakowaniu aplikacji systemu Windows do lokalizacji przejściowej można wstrzyknąć pliki poprawki PSF, aby korygować wszelkie niepożądane doświadczenia.

  1. Otwórz okno administracyjne programu PowerShell.

  2. Ustaw następujące zmienne przeznaczone dla określonego pliku aplikacji i wersję zestawu 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. Rozpakuj aplikację systemu Windows do folderu przejściowego, uruchamiając następujące polecenie cmdlet programu PowerShell:

    ## 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"
    

Tworzenie i wstrzykiwanie wymaganych plików PSF

Aby zastosować akcje naprawcze do aplikacji systemu Windows, należy utworzyć plik config.json i dostarczyć informacje o uruchamianiu aplikacji systemu Windows, które kończą się niepowodzeniem. Jeśli występują problemy z wieloma modułami uruchamiania aplikacji systemu Windows, plik config.json można zaktualizować za pomocą wielu wpisów.

Po zaktualizowaniu pliku config.json, plik config.json oraz pliki poprawki PSF należy następnie przenieść do katalogu głównego pakietu aplikacji systemu Windows.

  1. Otwórz program Visual Studio Code (VS Code) lub dowolny inny edytor tekstów.

  2. Utwórz nowy plik, wybierając menu Plik w górnej części programu VS Code, wybierając pozycję Nowy plik z menu rozwijanego.

  3. Zapisz plik jakoconfig.json, wybierając menu Plik w górnej części okna programu VS Code, wybierając pozycję Zapisz z menu rozwijanego. W oknie Zapisz jako przejdź do katalogu przejściowego aplikacji systemu Windows (C:\PSF\Staging\PSFSampleApp) i ustaw nazwę pliku jako config.json. Wybierz przycisk zapisywania.

  4. Skopiuj następujący kod do nowo utworzonego pliku config.json .

    {
        "applications": [
            {
                "id": "",
                "executable": "",
                "arguments": ""
            }
        ]
    }
    
  5. Otwórz przygotowany plik AppxManifest aplikacji systemu Windows znajdujący się w folderze przejściowym aplikacji systemu Windows (C:\PSF\Staging\PSFSampleApp\AppxManifest.xml) przy użyciu programu VS Code lub innego edytora tekstów.

    <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 Ustaw wartość w config.json na taką samą wartość, jak w polu Applications.Application.ID pliku AppxManifest.xml. Obraz krążący wokół lokalizacji identyfikatora w pliku AppxManifest.

  7. applications.executable Ustaw wartość w config.json, aby skierować ścieżkę względną do aplikacji znajdującej się w polu Applications.Application.Executable pliku AppxManifest.xml. Obraz krążący wokół lokalizacji pliku wykonywalnego w pliku AppxManifest.

  8. applications.arguments Ustaw wartość w config.json, aby była zgodna z argumentem użytym do uruchomienia aplikacji. Zobacz zarejestrowaną wartość z ostatniego kroku przewodnika Badanie - identyfikowanie wymagań parametru uruchamiania aplikacji w systemie Windows.

  9. applications.workingdirectory Ustaw wartość w config.json, aby określić docelową ścieżkę folderu względnego znajdującą się w polu Applications.Application.Wykonywalny pliku AppxManifest.xml. Obraz krążący wokół lokalizacji katalogu roboczego w pliku AppxManifest.

  10. Zapisz zaktualizowany plik config.json .

    {
        "applications": [
            {
            "id": "PSFSample",
            "executable": "VFS/ProgramFilesX64/PS Sample App/PSFSample.exe",
            "arguments": "/bootfromsettingshortcut"
            }
        ]
    }
    
  11. Skopiuj następujące cztery pliki ze struktury obsługi pakietów na podstawie architektury wykonywalnej aplikacji do katalogu głównego przygotowanej aplikacji systemu Windows. Następujące pliki znajdują się w folderze .\Microsoft.PackageSupportFramework.<Wersja>\bin.

    Aplikacja (x64) Aplikacja (x86)
    PSFLauncher64.exe PSFLauncher32.exe
    PSFRuntime64.dll PSFRuntime32.dll
    PSFRunDll64.exe PSFRunDll32.exe

Aktualizowanie pliku AppxManifest

Po utworzeniu i zaktualizowaniu pliku config.json należy zaktualizować AppxManifest.xml aplikacji Windows dla każdego uruchamiacza aplikacji Windows, który został uwzględniony w config.json. Aplikacje w AppxManifest muszą teraz celować w PSFLauncher.exe, powiązaną z architekturą aplikacji.

  1. Otwórz Eksplorator plików i przejdź do folderu etapowanej aplikacji MSIX (C:\PSF\Staging\PSFSampleApp).

  2. Kliknij prawym przyciskiem myszy AppxManifest.xmli wybierz polecenie Otwórz za pomocą kodu z menu rozwijanego (opcjonalnie możesz otworzyć go za pomocą innego edytora tekstów).

  3. Zaktualizuj plik AppxManifest.xml przy użyciu następujących informacji:

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

Ponowne spakuj aplikację

Wszystkie poprawki zostały zastosowane, teraz aplikacja systemu Windows może zostać ponownie spakowana do pliku MSIX i podpisana przy użyciu certyfikatu podpisywania kodu.

  1. Otwórz okno administracyjne programu PowerShell.

  2. Ustaw następujące zmienne:

    $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. Ponownie spakuj aplikację systemu Windows z folderu przejściowego, uruchamiając następujące polecenie cmdlet programu PowerShell:

    Set-Location "${env:ProgramFiles(x86)}\Windows Kits\10\Bin\$Win10SDKVersion\$OSArchitecture"
    .\makeappx.exe pack /p "$AppPath" /d "$StagingFolder"
    
  4. Zaloguj aplikację systemu Windows, uruchamiając następujące polecenie cmdlet programu PowerShell:

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