Lancement d’une application Windows avec des paramètres

Examen

Certains lanceurs d’applications Windows dans le menu démarrer nécessitent l’utilisation de paramètres à transmettre au fichier exécutable lors du lancement de l’application Windows. Pour ce faire, nous devons d’abord identifier le lanceur nécessitant le paramètre avant d’intégrer l’application Windows à l’infrastructure de support de package.

Identification des exigences de paramètre de Lanceur d’application Windows Windows

  1. Installez votre application Windows sur une machine de test.

  2. Ouvrez le menu Démarrer Windows.

  3. Recherchez et sélectionnez votre application Windows Lanceur dans le menu Démarrer.

  4. Si l’application démarre, vous n’avez aucun problème (testez tous les lanceurs d’applications associés Windows dans le menu Démarrer).

  5. Désinstallez l’application Windows à partir de l’ordinateur de test.

  6. À l’aide du support d’installation Win32, installez l’application sur votre ordinateur de test.

  7. Ouvrez le menu Démarrer Windows.

  8. Recherchez et cliquez avec le bouton droit sur votre application Windows dans le menu Démarrer.

  9. Sélectionnez MoreOpen>>File Location dans le menu déroulant.

  10. Cliquez avec le bouton droit sur le premier raccourci d’application associé (répétez les trois étapes suivantes pour tous les raccourcis d’application associés).

  11. Sélectionnez Propriétés dans le menu déroulant.

  12. Passez en revue la valeur dans la zone de texte à droite de Target. Après le chemin d’accès du fichier d’application, s’il existe un paramètre répertorié, cette application Example of the File Property Window with Parameter in Target

  13. Enregistrez la valeur du paramètre pour une utilisation ultérieure.

Résolution

Windows Apps redirige les répertoires spécifiques liés à l’application vers le dossier conteneur d’applications Windows. Si une application tente d’écrire dans le conteneur d’applications Windows, une erreur se déclenche et l’écriture échoue.

Pour résoudre le problème lié à l’application Windows qui n’a pas réussi à écrire dans le conteneur d’applications Windows, nous devons suivre les quatre étapes suivantes :

  1. Étape de l’application Windows vers un répertoire local
  2. Créez config.json et injectez les fichiers PSF requis
  3. Mettre à jour le fichier AppxManifest Windows
  4. Repackager et signer l’application Windows

Les étapes ci-dessus fournissent des conseils en extrayant le contenu de l’application Windows dans un répertoire intermédiaire local, en injectant les fichiers de correctif PSF dans le répertoire intermédiaire de l’application Windows, en configurant l’application Lanceur pour pointer vers le lanceur PSF, puis configurer le fichier PSF config.json pour rediriger le lanceur PSF vers l’application spécifiant le répertoire de travail.

Télécharger et installer les outils requis

Ce processus vous guide tout au long de la récupération et de l’utilisation des outils suivants :

  • outil client NuGet
  • Framework de prise en charge de package
  • sdk Windows 10 (dernière version)
  • Moniteur de processus SysInternals

Les instructions suivantes fournissent des conseils pas à pas sur le téléchargement et l’installation des outils requis.

  1. Téléchargez la dernière version (non préliminaire) de l’outil client NuGet, puis enregistrez la nuget.exe dans le C:\PSF\nuget dossier.

  2. Téléchargez l’infrastructure de support de package à l’aide de Nuget en exécutant ce qui suit à partir d’une fenêtre PowerShell d’administration :

    Set-Location "C:\PSF"
    .\nuget\nuget.exe install Microsoft.PackageSupportFramework
    
  3. Téléchargez et installez le Shared Computer Toolkit de développement logiciel Windows 10 (Kit de développement logiciel Win 10).

    1. Téléchargez le Kit de développement logiciel (SDK) Win 10.
    2. Exécutez le winsdksetup.exe téléchargé à l’étape précédente.
    3. Sélectionnez le bouton Suivant.
    4. Sélectionnez uniquement les trois fonctionnalités suivantes pour l’installation :
      • outils de signature du KIT de développement logiciel (SDK) Windows pour les applications de bureau
      • sdk Windows pour les applications C++ UWP
      • Sdk Windwos pour la localisation des applications UWP
    5. Sélectionnez le bouton Installer.
    6. Sélectionnez le bouton Ok .

Étape de l’application Windows

En préproduction de l’application Windows, nous allons extraire /décompresser le contenu de l’application Windows dans un répertoire local. Une fois que l’application Windows a été déballée à l’emplacement intermédiaire, les fichiers de correctif PSF peuvent être injectés pour corriger toutes les expériences indésirables.

  1. Ouvrez une fenêtre PowerShell d’administration.

  2. Définissez les variables suivantes ciblant votre fichier d’application spécifique et Windows 10 version du Kit de développement logiciel (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. Décompressez l’application Windows dans le dossier intermédiaire en exécutant l’applet de commande PowerShell suivante :

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

Créer et injecter des fichiers PSF requis

Pour appliquer des actions correctives à l’application Windows l’application, un fichier config.json doit être créé et fourni avec des informations sur l’application Windows Lanceur qui échoue. S’il existe plusieurs lanceurs d’applications Windows qui rencontrent des problèmes, le fichier config.json peut être mis à jour avec plusieurs entrées.

Après avoir mis à jour le fichier config.json, le fichier config.json et la prise en charge des fichiers de correctif PSF doivent ensuite être déplacés à la racine du package d’application Windows.

  1. Ouvrez Visual Studio Code (VS Code) ou tout autre éditeur de texte.

  2. Créez un fichier en sélectionnant le menu Fichier en haut de la VS Code, en sélectionnant Nouveau fichier dans le menu déroulant.

  3. Enregistrez le fichier en tant que config.json, en sélectionnant le menu Fichier en haut de la fenêtre VS Code, en sélectionnant Enregistrer dans le menu déroulant. Dans la fenêtre Enregistrer sous, accédez au répertoire de préproduction d’application Windows (C:\PSF\Staging\PSFSampleApp) et définissez le nom du fichier comme config.json. Sélectionnez le bouton Enregistrer.

  4. Copiez le code suivant dans le fichier config.json nouvellement créé.

    {
        "applications": [
            {
                "id": "",
                "executable": "",
                "arguments": ""
            }
        ]
    }
    
  5. Ouvrez le fichier app AppxManifest Windows intermédiaire situé dans le dossier intermédiaire d’application Windows (C:\PSF\Staging\PSFSampleApp\AppxManifest.xml) à l’aide de VS Code ou d’un autre éditeur de texte.

    <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. Définissez la applications.id valeur dans config.json comme indiqué dans le champ Applications.Application.ID du fichier AppxManifest.xml . Image circling the location of the ID within the AppxManifest file.

  7. Définissez la applications.executable valeur dans config.json pour cibler le chemin relatif de l’application située dans le champ Applications.Application.Exécutable du fichier AppxManifest.xml . Image circling the location of the executable within the AppxManifest file.

  8. Définissez la applications.arguments valeur dans config.json pour qu’elle corresponde à l’argument utilisé pour lancer l’application. Consultez la valeur enregistrée à partir de l’étape finale de l’investigation - Identification des instructions relatives à l’Windows’application Lanceur paramètre.

  9. Définissez la applications.workingdirectory valeur dans config.json pour cibler le chemin du dossier relatif trouvé dans le champ Applications.Application.Exécutable du fichier AppxManifest.xml . Image circling the location of the working directory within the AppxManifest file.

  10. Enregistrez le fichier config.json mis à jour.

    {
        "applications": [
            {
            "id": "PSFSample",
            "executable": "VFS/ProgramFilesX64/PS Sample App/PSFSample.exe",
            "arguments": "/bootfromsettingshortcut"
            }
        ]
    }
    
  11. Copiez les quatre fichiers suivants à partir du Package Support Framework en fonction de l’architecture exécutable de l’application à la racine de l’application Windows intermédiaire. Les fichiers suivants se trouvent dans le fichier .\Microsoft.PackageSupportFramework.< Version>\bin.

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

Mettre à jour AppxManifest

Après avoir créé et mis à jour le fichier config.json, leAppxManifest.xmlde l’application Windows doit être mis à jour pour chaque Windows’application Lanceur incluse dans config.json. Les applications d’AppxManifest doivent désormais cibler les PSFLauncher.exe associées à l’architecture des applications.

  1. Ouvrez Explorateur de fichiers et accédez au dossier d’application MSIX intermédiaire (C:\PSF\Staging\PSFSampleApp).

  2. Cliquez avec le bouton droit sur AppxManifest.xml, puis sélectionnez Ouvrir avec code dans le menu déroulant (Si vous le souhaitez, vous pouvez ouvrir avec un autre éditeur de texte).

  3. Mettez à jour le fichier AppxManifest.xml avec les informations suivantes :

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

Empaqueter à nouveau l’application

Toutes les corrections ont été appliquées, maintenant l’application Windows peut être re empaquetée dans un MSIX et signée à l’aide d’un certificat de signature de code.

  1. Ouvrez une fenêtre PowerShell d’administration.

  2. Définissez les variables suivantes :

    $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. Repackez l’application Windows à partir du dossier intermédiaire en exécutant l’applet de commande PowerShell suivante :

    Set-Location "${env:ProgramFiles(x86)}\Windows Kits\10\Bin\$Win10SDKVersion\$OSArchitecture"
    .\makeappx.exe pack /p "$AppPath" /d "$StagingFolder"
    
  4. Signez l’application Windows en exécutant l’applet de commande PowerShell suivante :

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