Inicio Windows aplicación con parámetros

Investigación

Algunos Windows iniciadores de aplicaciones en el menú inicio requieren que se pase el uso de parámetros al ejecutable al iniciar Windows App. Para ello, primero será necesario identificar el iniciador que requiere el parámetro antes de integrar Windows App con el marco de compatibilidad de paquetes.

Identificación del Windows de parámetros Selector aplicación

  1. Instale la aplicación Windows en un equipo de prueba.

  2. Abra el Windows menú Inicio.

  3. Busque y seleccione el Windows app Selector desde el menú Inicio.

  4. Si se inicia la aplicación, no tendrá ningún problema (pruebe todos los selectores de aplicaciones asociados Windows en el menú Inicio).

  5. Desinstale Windows app del equipo de prueba.

  6. Con el medio de instalación de Win32, instale la aplicación en el equipo de prueba.

  7. Abra el Windows menú Inicio.

  8. Busque y haga clic con el botón derecho en Windows app desde el menú Inicio.

  9. Seleccione Másabrir ubicación de archivo en el menú desplegable.

  10. Haga clic con el botón derecho en el primer acceso directo de aplicación asociado (repita los tres pasos siguientes para todos los métodos abreviados de aplicación asociados).

  11. Seleccione Propiedades en el menú desplegable.

  12. Revise el valor del cuadro de texto situado a la derecha de Destino. Después de la ruta de acceso del archivo de aplicación, si aparece un parámetro, este ejemplo de aplicación de la ventana de propiedades de archivo con parámetro en destino

  13. Registre el valor del parámetro para su uso futuro.

Resolución

Windows Apps redirigirá directorios específicos relacionados con la aplicación a la carpeta Windows Contenedor de aplicaciones. Si una aplicación intenta escribir en el contenedor Windows app, se desencadenará un error y se producirá un error en la escritura.

Para resolver el problema relacionado con el error de Windows App al escribir en el contenedor Windows App, debemos seguir los cuatro pasos siguientes:

  1. Almacenamiento temporal de Windows aplicación en un directorio local
  2. Creación del archivo Config.json e inyección de los archivos PSF necesarios
  3. Actualización del Windows App AppxManifest
  4. Volver a empaquetar y firmar la Windows aplicación

Los pasos anteriores proporcionan instrucciones a través de la extracción del contenido de la aplicación de Windows en un directorio local con almacenamiento temporal, la inserción de los archivos de corrección de PSF en el directorio de aplicación Windows de almacenamiento temporal, la configuración de Application Selector para que apunte al iniciador de PSF y, a continuación, la configuración del archivo PSF config.json para redirigir el iniciador de PSF a la aplicación que especifica el directorio de trabajo.

Descargar e instalar las herramientas necesarias

Este proceso le guiará a través de la recuperación y el uso de las siguientes herramientas:

  • NuGet Client Tool
  • Marco de compatibilidad de paquete
  • Windows 10 SDK (versión más reciente)
  • Monitor de procesos sysinternals

A continuación se proporcionan instrucciones paso a paso sobre cómo descargar e instalar las herramientas necesarias.

  1. Descargue la versión más reciente (no preliminar) de la herramienta cliente NuGety guarde elnuget.exeen la carpeta .

  2. Descargue el marco de compatibilidad de paquetes con Nuget ejecutando lo siguiente desde una ventana de PowerShell administrativa:

    Set-Location "C:\PSF"
    .\nuget\nuget.exe install Microsoft.PackageSupportFramework
    
  3. Descargue e instale Windows 10 Software Development Toolkit (SDK de Win 10).

    1. Descargue el SDK de Win 10.
    2. Ejecute el winsdksetup.exe que se descargó en el paso anterior.
    3. Haga clic en el botón Siguiente.
    4. Seleccione solo las tres características siguientes para la instalación:
      • Herramientas de firma de Windows SDK para aplicaciones de escritorio
      • Windows SDK para aplicaciones de C++ para UWP
      • Localización del SDK de Windwos para aplicaciones para UWP
    5. Seleccione el botón Instalar.
    6. Seleccione el botón Aceptar.

Fase de la Windows aplicación

Al almacenamiento provisional Windows app, extraeremos o desempaquetaremos el contenido de la aplicación Windows en un directorio local. Una vez Windows app se haya desempaquetar en la ubicación de almacenamiento provisional, se pueden insertar archivos de corrección de PSF correctándose las experiencias no deseadas.

  1. Abra una ventana administrativa de PowerShell.

  2. Establezca las siguientes variables destinadas a su archivo de aplicación específico y Windows 10 versión del 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. Desempaquete Windows app en la carpeta de almacenamiento provisional mediante la ejecución del siguiente cmdlet de 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"
    

Creación e inyección de archivos PSF necesarios

Para aplicar acciones correctivas a Windows App, se debe crear un archivo config.json y proporcionar información sobre el Windows App Selector que está fallando. Si hay varios Windows de aplicaciones que están experimentando problemas, el archivo config.json se puede actualizar con varias entradas.

Después de actualizar el archivo config.json, el archivo config.json y los archivos de corrección PSF compatibles se deben mover a la raíz del paquete Windows App.

  1. Abra Visual Studio Code (VS Code) o cualquier otro editor de texto.

  2. Cree un nuevo archivo; para ello, seleccione el menú Archivo en la parte superior de la VS Code y seleccione Nuevo archivo en el menú desplegable.

  3. Guarde el archivo como config.json;para ello, seleccione el menú Archivo en la parte superior de la ventana VS Code y seleccione Guardar en el menú desplegable. En la ventana Guardar como, vaya al directorio Windows App Staging(C:\PSF\Staging\PSFSampleApp)y establezca el nombre de archivo como . Seleccione el botón Guardar.

  4. Copie el código siguiente en el archivo config.json recién creado.

    {
        "applications": [
            {
                "id": "",
                "executable": "",
                "arguments": ""
            }
        ]
    }
    
  5. Abra el archivo Windows App App AppxManifest que se encuentra en la carpeta de almacenamiento provisional Windows App (C:\PSF\Staging\PSFSampleApp\AppxManifest.xml) mediante VS Code u otro editor de texto.

    <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. Establezca el applications.id valor de applications.id en el mismo valor que se encuentra en el campo Applications.Application.ID del archivo AppxManifest.xml configuración. Imagen que rodea la ubicación del identificador en el archivo AppxManifest.

  7. Establezca el valor de config.json como destino de la ruta de acceso relativa a la aplicación ubicada en el campo applications.executableApplications.Application.Executable del archivo AppxManifest.xml aplicación. applications.executable Imagen que rodea la ubicación del ejecutable dentro del archivo AppxManifest.

  8. Establezca el applications.arguments valor de applications.arguments que coincida con el argumento utilizado para iniciar la aplicación. Vea el valor registrado en el paso final de la guía Investigación: identificación Windows aplicación Selector requisito de parámetros.

  9. Establezca el valor de config.json como destino de la ruta de acceso de carpeta relativa que se encuentra en el applications.workingdirectorycampo Applications.Application.Executable delAppxManifest.xmlarchivo. applications.workingdirectory Imagen que rodea la ubicación del directorio de trabajo dentro del archivo AppxManifest.

  10. Guarde el archivo config.json actualizado.

    {
        "applications": [
            {
            "id": "PSFSample",
            "executable": "VFS/ProgramFilesX64/PS Sample App/PSFSample.exe",
            "arguments": "/bootfromsettingshortcut"
            }
        ]
    }
    
  11. Copie los cuatro archivos siguientes del marco de compatibilidad de paquetes basado en la arquitectura ejecutable de la aplicación en la raíz de la aplicación Windows aplicación. Los archivos siguientes se encuentran en .\Microsoft.PackageSupportFramework.\bin.

    Aplicación (x64) Aplicación (x86)
    PSFLauncher64.exe PSFLauncher32.exe
    PSFRuntime64.dll PSFRuntime32.dll
    PSFRunDll64.exe PSFRunDll32.exe

Actualización de AppxManifest

Después de crear y actualizar el archivo config.json, elAppxManifest.xmlde la aplicación de Windows debe actualizarse para cada Windows App Selector que se incluyó en config.json. Las aplicaciones de AppxManifestahora deben tener como destino laPSFLauncher.exe asociada a la arquitectura de aplicaciones.

  1. Abra Explorador de archivos y vaya a la carpeta Aplicación MSIX provisional (C:\PSF\Staging\PSFSampleApp).

  2. Haga clic con el botón derecho en AppxManifest.xmly seleccione Abrir con Code (Código) en el menú desplegable (opcionalmente, puede abrir con otro editor de texto).

  3. Actualice el AppxManifest.xml con la siguiente información:

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

Volver a empaquetar la aplicación

Se han aplicado todas las correcciones, ahora la aplicación de Windows se puede volver a empaquetar en un MSIX y firmarse mediante un certificado de firma de código.

  1. Abra una ventana administrativa de PowerShell.

  2. Establezca las siguientes variables:

    $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. Vuelva a empaquetar Windows aplicación de almacenamiento provisional mediante la ejecución del siguiente cmdlet de PowerShell:

    Set-Location "${env:ProgramFiles(x86)}\Windows Kits\10\Bin\$Win10SDKVersion\$OSArchitecture"
    .\makeappx.exe pack /p "$AppPath" /d "$StagingFolder"
    
  4. Firme la Windows aplicación mediante la ejecución del siguiente cmdlet de PowerShell:

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