Compartir a través de


Inicio de aplicaciones de Windows con parámetros

Investigación

Algunos iniciadores de aplicaciones de Windows en el menú Inicio requieren el uso de parámetros que se pasarán al ejecutable al iniciar la aplicación de Windows. Para ello, primero es necesario identificar el iniciador que requiere el parámetro antes de integrar la aplicación de Windows con el marco de soporte técnico del paquete.

Identificación del requisito de parámetro del iniciador de aplicaciones de Windows

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

  2. Abra el menú Inicio de Windows.

  3. Busque y seleccione el iniciador de aplicaciones de Windows en el menú Inicio.

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

  5. Desinstale la aplicación de Windows de la máquina de prueba.

  6. Usando el medio de instalación de Win32, instale la aplicación en su máquina de prueba.

  7. Abra el menú Inicio de Windows.

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

  9. Seleccione Más>>Abrir ubicación del 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 accesos directos de aplicación asociados).

  11. Seleccione Propiedades en el menú desplegable.

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

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

Resolución

Las aplicaciones de Windows redirigirán directorios específicos relacionados con la aplicación a la C:\Program Files\WindowsApps carpeta. Si una aplicación intenta escribir en el contenedor de aplicaciones de Windows, se desencadenará un error y se producirá un error en la escritura.

Para resolver el problema relacionado con la aplicación de Windows que no puede escribir en el contenedor de aplicaciones de Windows, debemos seguir los cuatro pasos siguientes:

  1. Almacenar provisionalmente la aplicación de Windows en un directorio local
  2. Crear el Config.json e insertar archivos PSF necesarios
  3. Actualización del archivo AppxManifest de la aplicación de Windows
  4. Volver a empaquetar y firmar la aplicación de Windows

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

Descarga e instalación de las herramientas necesarias

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

  • Herramienta de cliente de NuGet
  • Marco de soporte técnico de paquetes
  • SDK de Windows 10 (versión más reciente)
  • Monitor de procesos de 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 de NuGet y guarde la nuget.exe en la C:\PSF\nuget carpeta .

  2. Descargue el marco de soporte técnico de paquetes mediante Nuget mediante la ejecución de lo siguiente desde una ventana de PowerShell administrativa:

    Set-Location "C:\PSF"
    .\nuget\nuget.exe install Microsoft.PackageSupportFramework
    
  3. Descargue e instale el Kit de herramientas de desarrollo de software de Windows 10 (SDK de Win 10).

    1. Descargue el SDK de Win 10.
    2. Ejecute el winsdksetup.exe que se descargó en el paso anterior.
    3. Haz 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.

Almacenar provisionalmente la aplicación de Windows

Al almacenar provisionalmente la aplicación de Windows, se extraerá o desempaquetará el contenido de la aplicación de Windows en un directorio local. Una vez que la aplicación de Windows se ha desempaquetado en la ubicación de almacenamiento provisional, los archivos de corrección de PSF se pueden insertar para corregir cualquier experiencia no deseada.

  1. Abra una ventana de PowerShell administrativa.

  2. Establezca las siguientes variables que tienen como destino el archivo de aplicación específico y la versión del SDK de 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. Desempaquete la aplicación de Windows 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"
    

Crear e insertar archivos PSF necesarios

Para aplicar acciones correctivas a la aplicación de Windows, se debe crear un archivo config.json y proporcionar información sobre el iniciador de aplicaciones de Windows que produce un error. Si hay varios iniciadores de aplicaciones de Windows que experimentan 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 auxiliares de corrección PSF deben moverse a la raíz del paquete de aplicación de Windows.

  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 VS Code y seleccione Nuevo archivo en el menú desplegable.

  3. Guarde el archivo como config.json, seleccione el menú Archivo en la parte superior de la ventana de VS Code y seleccione Guardar en el menú desplegable. En la ventana Guardar como, vaya al directorio de almacenamiento provisional de la aplicación de Windows (C:\PSF\Staging\PSFSampleApp) y establezca el nombre de archivo como config.json. 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 AppxManifest de la aplicación de Windows almacenado provisionalmente en la carpeta de almacenamiento provisional de la aplicación de Windows (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 en el config.json para que sea el mismo valor que se encuentra en el campo Applications.Application.ID del archivo AppxManifest.xml . Imagen que rodea la ubicación del identificador dentro del archivo AppxManifest.

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

  8. Establezca el applications.arguments valor en el config.json para que coincida con el argumento usado para iniciar la aplicación. Consulte el valor registrado en el paso final de la guía Investigación: Identificación del requisito del parámetro del Iniciador de aplicaciones de Windows.

  9. Establezca el valor applications.workingdirectory en el archivo config.json para establecer como destino la ruta de acceso de la carpeta relativa que se encuentra en el campo Applications.Application.Executable del archivo AppxManifest.xml. 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 siguientes cuatro archivos del Package Support Framework en función de la arquitectura de ejecución de la aplicación a la raíz de la aplicación de Windows en preparación. Los siguientes archivos se encuentran en .\Microsoft.PackageSupportFramework.<Version>\bin.

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

Actualizar AppxManifest

Después de crear y actualizar el archivo config.json , el AppxManifest.xml de la aplicación de Windows debe actualizarse para cada iniciador de aplicaciones de Windows que se incluyó en el config.json. Las aplicaciones de AppxManifest ahora deben tener como destino la PSFLauncher.exe asociada a la arquitectura de aplicaciones.

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

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

  3. Actualice el archivo 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 msix y firmarse mediante un certificado de firma de código.

  1. Abra una ventana de PowerShell administrativa.

  2. Configure 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$((gcim Win32_Processor).AddressWidth)"    ## Operating System Architecture
    $Win10SDKVersion  = "10.0.19041.0"                               ## Latest version of the Win10 SDK
    
  3. Vuelva a empaquetar la aplicación de Windows desde la carpeta 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. Para firmar la aplicación de Windows, ejecute el 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