Lancement d’applications Windows avec des paramètres

Investigation

Certains lanceurs d’applications Windows dans le menu Démarrer nécessitent l’utilisation des paramètres à passer à l’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 conditions requises pour le paramètre du lanceur d’applications Windows

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

  2. Ouvrez le menu Démarrer de Windows.

  3. Recherchez et sélectionnez votre lanceur d’applications Windows dans le menu Démarrer.

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

  5. Désinstallez l’application Windows de la machine de test.

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

  7. Ouvrez le menu Démarrer de Windows.

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

  9. Sélectionnez Plus>>d’emplacement de fichier ouvert 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 La cible. Après le chemin 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

Les applications Windows redirigent des répertoires spécifiques liés à l’application vers le C:\Program Files\WindowsApps dossier. 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éer le fichier Config.json et injecter les fichiers PSF requis
  3. Mettre à jour le fichier AppxManifest de l’application 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 de l’application Windows intermédiaire, en configurant l’application Lanceur pour pointer vers le lanceur PSF, puis en 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
  • Kit de développement logiciel (SDK) Windows 10 (dernière version)
  • Moniteur de processus SysInternals

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

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

  2. Téléchargez l’infrastructure de prise en charge du package à l’aide de Nuget en exécutant ce qui suit à partir d’une fenêtre PowerShell Administration istrative :

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

    1. Téléchargez le Kit de développement logiciel (SDK) Win 10.
    2. Exécutez winsdksetup.exe qui a été 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
      • Kit de développement logiciel (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 mettant en lots 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écompressée à l’emplacement intermédiaire, les fichiers de correctif PSF peuvent être injectés pour corriger les expériences indésirables.

  1. Ouvrez une fenêtre PowerShell Administration istrative.

  2. Définissez les variables suivantes ciblant votre fichier d’application spécifique et la version du Kit de développement logiciel (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. 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, un fichier config.json doit être créé et fourni avec des informations sur le lanceur d’applications Windows 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 la mise à jour du 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 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 intermédiaire de l’application Windows (C :\PSF\Staging\PSFSampleApp) et définissez le nomconfig.jsonde fichier comme . Cliquez sur le bouton Enregistrer.

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

    {
        "applications": [
            {
                "id": "",
                "executable": "",
                "arguments": ""
            }
        ]
    }
    
  5. Ouvrez le fichier AppxManifest d’application Windows intermédiaire situé dans le dossier intermédiaire de l’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.jsoncomme 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.jsonpour cibler le chemin d’accès relatif à 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.jsonpour qu’elle corresponde à l’argument utilisé pour lancer l’application. Consultez la valeur enregistrée à partir de l’étape finale de l’examen - Identification des instructions relatives aux paramètres du lanceur d’applications Windows.

  9. Définissez la applications.workingdirectory valeur dans config.jsonpour 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 . \Microsoft.PackageSupportFramework.<Version>\bin.

    Application (x64) Application (x86)
    PSF Lanceur 64.exe PSF Lanceur 32.exe
    PSFRuntime64.dll PSFRuntime32.dll
    PSFRunDll64.exe PSFRunDll32.exe

Mettre à jour AppxManifest

Après avoir créé et mis à jour le fichier config.json, le fichier AppxManifest.xml de l’application Windows doit être mis à jour pour chaque lanceur d’applications Windows inclus dans config.json. Les applications AppxManifest doivent désormais cibler le fichier PSF Lanceur.exe associé à l’architecture des applications.

  1. Ouvrez Explorateur de fichiers, puis 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 Administration istrative.

  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