Crear un acceso directo de aplicación ejecutando un script con el Package Support Framework

En este documento se muestra cómo crear accesos directos de aplicación mediante el Framework de Soporte de Paquetes (PSF) que ejecutan scripts a través de la herramienta de empaquetado MSIX y la aplicación WPF Contoso Expense.

gastos de contoso

La idea es copiar el acceso directo de la aplicación, que estará disponible dentro del paquete, en el escritorio del usuario a través de los scripts de PSF.

Hay un par de cosas que debe tener en cuenta:

  1. Solo cree un acceso directo si es absolutamente necesario. El objetivo es no desordenar el escritorio del usuario.
  2. La aplicación MSIX debe instalarse antes de crear el acceso directo, de modo que podamos especificar la ruta de acceso de la aplicación MSIX durante la creación del acceso directo.
  3. Al mismo tiempo, la ruta de acceso de la aplicación MSIX puede cambiar, una vez que tenga el número de versión especificado en la carpeta de instalación. Ejemplo de la ruta de instalación de Gastos de Contoso:

C:\Archivos de programa\WindowsApps\ContosoExpenses_1.0.0.0_x86__3z09h3y28h0qg

Para evitar tener que cambiar el acceso directo de la aplicación cada vez que se actualiza la aplicación, cree el acceso directo apuntando a AppExecutionAlias. AppExecutionAlias permite iniciar la aplicación con el valor definido en la sesión de alias del manifiesto de aplicación, por lo que no es necesario especificar la ruta de acceso completa de la aplicación. Por lo tanto, antes de crear el acceso directo, defina el alias en el manifiesto de la aplicación. De lo contrario, el Explorador de Windows no reconocerá el alias y no nos permitirá crear el acceso directo.

Creación del alias de aplicación

Haga clic en el elemento de menú Información del paquete y haga clic en Abrir archivo, disponible en la parte inferior de la interfaz de usuario, para editar el manifiesto de aplicación:

abrir manifiesto msix

Incluya los siguientes espacios de nombres, que se usarán para crear el alias, como se indica a continuación:

xmlns:uap3="http://schemas.microsoft.com/appx/manifest/uap/windows10/3" xmlns:desktop="http://schemas.microsoft.com/appx/manifest/desktop/windows10" 

Incluya el valor uap3 y desktop en el elemento IgnorableNamespaces :

IgnorableNamespaces="uap uap3 desktop rescap build"

Incluya el alias de ejecución de la aplicación después del <elemento /uap:VisualElements> :

  <Extensions>
    <uap3:Extension Category="windows.appExecutionAlias"   
                    Executable="ContosoExpenses\ContosoExpenses.exe"
                    EntryPoint="Windows.FullTrustApplication">
      <uap3:AppExecutionAlias>
        <desktop:ExecutionAlias Alias="contosoexpenses.exe" />
        </uap3:AppExecutionAlias>
      </uap3:Extension>
  </Extensions>

Sigue el manifiesto con las modificaciones:

crear alias

Guarde y cierre el archivo de manifiesto.

Vuelva a la herramienta de empaquetado MSIX y genere un nuevo paquete. Una vez creado el paquete, instale el paquete e inicie la aplicación a través del alias, por ejemplo, presionando Win+R y escribiendo contosoexpenses:

launch using alias (iniciar mediante alias)

Ahora que se crea el alias, es posible continuar con los pasos siguientes.

Crea el acceso directo de la aplicación

Cree un nuevo acceso directo de aplicación en una carpeta de su preferencia mediante el alias contosoexpenses.exe, como se indica a continuación:

nuevo acceso directo de la aplicación

Nombra el acceso directo para Gastos de Contoso.

Nueva aplicación: finalizar la creación del acceso directo

De forma predeterminada, el acceso directo será un icono genérico:

método abreviado de aplicación genérico

Cambiar el acceso directo es sencillo, pero el desafío aquí es evitar el uso de la ruta de acceso completa de la aplicación que tiene el número de versión y que puede cambiar en una actualización futura. Una manera de resolver esto es copiar el icono del paquete en la %appdata% usada por la aplicación MSIX, es decir, la carpeta %localappdata%\Packages\ContosoExpenses_3z09h3y28h0qg\LocalCache\Roaming_ que no tiene número de versión.

Para cambiar el acceso directo de la aplicación, por ahora, es necesario copiar manualmente el icono en esa carpeta. Esto se automatizará más adelante mediante scripts PSF.

Acceso directo a appdata

Ahora, es posible cambiar el icono de acceso directo a la ruta %localappdata%:

nuevo acceso directo de ruta

Aún en las propiedades de acceso directo, aproveche y cambie los valores del destino e inicie en las propiedades para %localappdata%\Microsoft\WindowsApps\contosoexpenses.exe e %localappdata%\Microsoft\WindowsApps respectivamente:

acceso directo de nuevos valores

Ahora que el acceso directo funciona, el siguiente paso es agregarlo al paquete y automatizar el proceso de creación.

nuevo acceso directo

Obtener los archivos PSF

Descargue el PSFBinaries.zip desde el repositorio de Github de PSF.

psf desde lanzamientos de GitHub

Extraiga los archivos de 32 o 64 bits necesarios en la raíz del directorio del paquete, en función de si la aplicación es de 32 o 64 bits. Utilice la siguiente tabla a modo de guía.

El ejecutable de la aplicación es x64 El ejecutable de la aplicación es x86
PSFLauncher64.exe PSFLauncher32.exe
PSFRuntime64.dll PSFRuntime32.dll

Incluir los archivos PSF en el paquete

Edite el Contoso Expense a través de MSIX Packaging Tool :

psf desde github editar mpt

Haga clic en el elemento de menú Archivos de paquete, haga clic con el botón derecho en la carpeta Paquete y seleccione Agregar archivo...:

agregar archivos psf desde github

Como la compilación ContosoExpense aquí es de 32 bits, se agregaron los archivos necesarios de PSF de 32 bits. El contenido del paquete debería tener ahora un aspecto similar al siguiente:

psf de github psf archivos añadidos

Actualización del manifiesto del paquete para PSF

Haga clic en el elemento de menú Información del paquete y haga clic en Abrir archivo, disponible en la parte inferior de la interfaz de usuario, para editar el manifiesto de aplicación:

psf desde el manifiesto de edición de GitHub

En este paso, es necesario cambiar el punto de entrada de la aplicación (ContosoExpenses\ContosoExpenses.exe) by the PSFLauncher32.exe.

 <Application Id="App" Executable="PSFLauncher32.exe" EntryPoint="Windows.FullTrustApplication">

Guarde y cierre el archivo de manifiesto.

Creación del archivo config.json

Vuelva a la herramienta de empaquetado MSIX, haga clic en Archivos de paquete, seleccione la carpeta Paquete y agregue un nuevo archivo config.json con el siguiente contenido.

{
  "applications": [
    {
      "id": "App",
      "executable": "ContosoExpenses\\ContosoExpenses.exe",
      "workingDirectory": "ContosoExpenses\\",
      "startScript":
      {
        "scriptPath": "createshortcut.ps1",
        "runInVirtualEnvironment": false,
        "waitForScriptToFinish": true,
        "showWindow": false,
        "runOnce": true
      }
    }
  ]
}

👀 Observe que el identificador de aplicación es el mismo del manifiesto:

El archivo config.json debe crearse en la raíz del paquete, como se indica a continuación:

psf desde github

El archivo config.json se usa para especificar que el script decreateshortcut.ps1 debe ejecutarse solo una vez en la primera inicialización de la aplicación. Dado que el directorio de trabajo se establece en ContosoExpenses, el script decreateshortcut.ps1 (que se creará más adelante) y el script deStartingScriptWrapper.ps1 (de archivos PSF) se debe agregar a la carpeta ContosoExpenses .

Creación del script de PowerShell

Cree el script de createshortcut.ps1 con el siguiente contenido:

Copy-Item "Contoso Expenses.lnk" "$env:USERPROFILE\desktop\Contoso Expenses.lnk"

Copy-Item "contoso.ico" $env:APPDATA\contoso.ico

El script de createshortcut.ps1 copiará el acceso directo "Contoso Expenses.lnk", que se creó anteriormente y estará disponible dentro del paquete, al escritorio del usuario. La segunda instrucción copia el archivo contoso.icon en la carpeta APPDATA de MSIX (%localappdata%\Packages\ContosoExpenses_3z09h3y28h0qg\LocalCache\Roaming).

El siguiente paso consiste en copiar los siguientes archivos en la carpeta ContosoExpenses del paquete:

  • Contoso Expenses.lnk
  • Contoso.ico
  • StartingScriptWrapper.ps1
  • createshortcut.ps1

Por último, el último paso es crear e instalar la nueva versión del paquete de aplicación. Durante la primera inicialización de la aplicación, se ejecutará el script createshortcut.ps1 y creará el acceso directo Contoso Expense en el escritorio del usuario.