Cómo iniciar la aplicación predeterminada de un archivo (HTML)

[ Este artículo está destinado a desarrolladores de Windows 8.x y Windows Phone 8.x que escriben aplicaciones de Windows en tiempo de ejecución. Si estás desarrollando para Windows 10, consulta la documentación más reciente

Aprende cómo iniciar la aplicación predeterminada de un archivo. Muchas aplicaciones necesitan funcionar con archivos que no pueden controlar. Por ejemplo, las aplicaciones de correo electrónico reciben una gran variedad de tipos de archivo y necesitan una forma de iniciar estos archivos en sus controladores predeterminados.

Los siguientes pasos te mostrarán cómo usar la API Windows.System.Launcher para iniciar el controlador predeterminado para un archivo que no puede controlar la aplicación.

Instrucciones

Paso 1: Obtén el archivo

Primero, obtén un objeto Windows.Storage.StorageFile para el archivo.

Si el archivo está incluido en el paquete de la aplicación, puedes usar la propiedad Package.installedLocation para obtener un objeto Windows.Storage.StorageFolder y el método Windows.Storage.StorageFolder.getFileAsync para obtener el método StorageFile.

Si el archivo está en una carpeta conocida, puedes usar las propiedades de la clase Windows.Storage.KnownFolders para obtener una StorageFolder y el método getFileAsync para obtener el objeto StorageFile.

Paso 2: Inicia el archivo

Windows proporciona varias opciones distintas para iniciar el controlador predeterminado de un archivo. Estas se describen en el siguiente gráfico y en las secciones a continuación.

Opción Método Descripción
Inicio predeterminado LaunchFileAsync(IStorageFile) Inicia el archivo especificado con el controlador predeterminado.
Abrir con inicio LaunchFileAsync(IStorageFile, LauncherOptions) Inicia el archivo especificado dejando que el usuario elija el controlador mediante el cuadro de diálogo Abrir con.
Iniciar con una reserva de aplicación recomendada LaunchFileAsync(IStorageFile, LauncherOptions) Inicia el archivo especificado con el controlador predeterminado. Si el sistema no tiene ningún controlador instalado, recomienda al usuario una aplicación de la tienda.
Inicio con una vista deseada permanente LaunchFileAsync(IStorageFile, LauncherOptions) (solo Windows) Inicia el archivo especificado con el controlador predeterminado. Especifica una preferencia para que permanezca en la pantalla después de iniciar y solicitar un tamaño de ventana específico.

Windows 8.1:  LauncherOptions.DesiredRemainingView no se admite hasta Windows 8.1 y Windows Server 2012 R2.

Windows Phone:  LauncherOptions.DesiredRemainingView no se admite para Windows Phone.

 

Default launch

Llama al método Windows.System.Launcher.launchFileAsync(IStorageFile) para iniciar la aplicación predeterminada. En este ejemplo, se usa el método Windows.Storage.StorageFolder.getFileAsync para iniciar un archivo de imagen, test.png, incluido en el paquete de la aplicación.


// Path to the file in the app package to launch
var imageFile = "images\\test.png";

// Get the image file from the package's image directory
Windows.ApplicationModel.Package.current.installedLocation.getFileAsync(imageFile).then(
  function (file) {
    // Launch the retrieved file using the default app
    Windows.System.Launcher.launchFileAsync(file).then(
      function (success) {
        if (success) {
            // File launched
        } else {
            // File launch failed
        }
      });
  });

Open with launch

Llama al método Windows.System.Launcher.launchFileAsync(IStorageFile, LauncherOptions) con LauncherOptions.displayApplicationPicker establecido en true para iniciar la aplicación que el usuario seleccione en el cuadro de diálogo Abrir con.

Recomendamos que uses el cuadro de diálogo Abrir con, cuando el usuario quiera seleccionar una aplicación que no sea la aplicación predeterminada para un archivo en particular. Por ejemplo, si la aplicación permite al usuario iniciar un archivo de imagen, el controlador predeterminado probablemente sea una aplicación de visualización. A veces, es posible que el usuario quiera editar la imagen en lugar de verla. Usa la opción Abrir con junto con un comando alternativo de la barra de la aplicación o de un menú contextual, para permitir que el usuario abra el cuadro de diálogo Abrir con y selecciona la aplicación de edición en estos tipos de escenarios.

El diálogo Abrir con para el inicio de un archivo .png. El diálogo contiene una casilla que especifica si la elección del usuario debe usarse para todos los archivos .png o solo para este archivo .png. El diálogo contiene cuatro opciones de aplicaciones para iniciar el archivo y un vínculo ‘Más opciones’.


// Path to the file in the app package to launch
var imageFile = "images\\test.png";

// Get the image file from the package's image directory
Windows.ApplicationModel.Package.current.installedLocation.getFileAsync(imageFile).then(
  function (file) {
    // Set the show picker option
    var options = new Windows.System.LauncherOptions();
    options.displayApplicationPicker = true;

    // Launch the retrieved file using the selected app
    Windows.System.Launcher.launchFileAsync(file, options).then(
      function (success) {
        if (success) {
            // File launched
        } else {
            // File launch failed
        }
      });
  });

Launch with a recommended app fallback

En algunos casos, el usuario podría no tener instalada una aplicación para administrar el archivo que estás iniciando. Si esto sucede, de manera predeterminada, el sistema operativo ofrece un vínculo al usuario para que busque una aplicación apropiada en la Tienda. Si quieres recomendar al usuario qué aplicación comprar en este escenario, debes pasar la recomendación junto con el archivo que estás iniciando. Para ello, llama al método Windows.System.Launcher.launchFileAsync(IStorageFile, LauncherOptions) con LauncherOptions.preferredApplicationPackageFamilyName establecido con el nombre de familia de paquete correspondiente a la aplicación de la Tienda que quieras recomendar. Después establece LauncherOptions.preferredApplicationDisplayName en el nombre de esa aplicación. El sistema operativo usará esta información para reemplazar la opción general de buscar una aplicación por una opción específica para comprar la aplicación recomendada en la Tienda.

Nota  Debes establecer estas dos opciones para recomendar una aplicación. Si se establece una, pero la otra no, se producirá un error.

 

El diálogo Abrir con para un inicio de archivo .contoso. Como .contoso no tiene un controlador instalado en la máquina, el diálogo contiene una opción con el icono y el texto de la Tienda que apunta al usuario al controlador correcto en la Tienda. El diálogo también contiene un vínculo ‘Más opciones’.


// Path to the file in the app package to launch
var imageFile = "images\\test.contoso";

// Get the image file from the package's image directory
Windows.ApplicationModel.Package.current.installedLocation.getFileAsync(imageFile).then(
  function (file) {
    // Set the recommended app
    var options = new Windows.System.LauncherOptions();
    options.preferredApplicationPackageFamilyName = "Contoso.FileApp_8wknc82po1e";
    options.preferredApplicationDisplayName = "Contoso File App";


    // Launch the retrieved file pass in the recommended app 
    // in case the user has no apps installed to handle the file
    Windows.System.Launcher.launchFileAsync(file, options).then(
      function (success) {
        if (success) {
            // File launched
        } else {
            // File launch failed
        }
      });
  });

Inicio con una vista deseada permanente (solo Windows)

Las aplicaciones de origen que llaman a LaunchFileAsync pueden solicitar que permanezcan en pantalla después de iniciarse un archivo. Windows intenta compartir de manera predeterminada todo el espacio disponible entre la aplicación de origen y la aplicación de destino que controla el archivo. Las aplicaciones de origen pueden usar la propiedad DesiredRemainingView para indicar al sistema operativo que prefieren que la ventana de la aplicación ocupe más o menos espacio del que hay disponible. DesiredRemainingView también se puede usar para indicar que la aplicación de origen no necesita permanecer en pantalla después del inicio de un archivo y puede sustituirse por completo por la aplicación de destino. Esta propiedad especifica únicamente el tamaño de ventana preferido de la aplicación que llama; no especifica el comportamiento de ninguna otra aplicación que también esté en pantalla al mismo tiempo.

Nota  Windows tiene en cuenta diferentes factores a la hora de determinar el tamaño final de la ventana de la aplicación de origen, como por ejemplo, la preferencia de la aplicación de origen, el número de aplicaciones en pantalla, la orientación de la pantalla, etc. Establecer DesiredRemainingView no garantiza un comportamiento de ventanas específico para la aplicación de origen.

 

Windows 8.1: LauncherOptions.DesiredRemainingView no se admite hasta Windows 8.1 y Windows Server 2012 R2.

Windows Phone: LauncherOptions.DesiredRemainingView no se admite para Windows Phone.

// Path to the file in the app package to launch
var imageFile = "images\\test.png";

// Get the image file from the package's image directory
Windows.ApplicationModel.Package.current.installedLocation.getFileAsync(imageFile).done(
  function (file) {
    // Set the desired remaining view
    var options = new Windows.System.LauncherOptions();
    options.desiredRemainingView = Windows.UI.ViewManagement.ViewSizePreference.useLess;

    // Launch the retrieved file using the selected app
    Windows.System.Launcher.launchFileAsync(file, options).done(
      function (success) {
        if (success) {
            // File launched
        } else {
            // File launch failed
        }
      });
  });

Observaciones

La aplicación no puede seleccionar qué aplicación se inicia, sino que es el usuario el que determina la aplicación que se inicia. El usuario puede optar entre una aplicación de la Tienda Windows o una aplicación de escritorio.

Cuando inicies un archivo, tu aplicación debe ser la aplicación en primer plano, es decir, visible para el usuario. Este requisito permite asegurar que el usuario permanezca en control. Para cumplir este requisito, asegúrate de enlazar todos los inicios de archivo directamente a la interfaz de usuario de la aplicación. Lo más probable es que el usuario tenga que realizar siempre alguna acción para iniciar el archivo. Si intentas iniciar un archivo y tu aplicación no está en primer plano, se producirá un error en el inicio y se invocará a la devolución de llamada de error.

No puedes iniciar tipos de archivo que contengan código o script, como archivos .exe, .msi o .js, si el sistema operativo los ejecuta automáticamente. Esta restricción protege a los usuarios contra archivos potencialmente malintencionados que podrían modificar el sistema. Puedes usar este método para iniciar tipos de archivo, como archivos .docx, que pueden contener script, si los ejecuta una aplicación que aísla el script. Las aplicaciones como Microsoft Word impiden que el script de los archivos .docx modifique el sistema.

Si intentas iniciar un tipo de archivo restringido, se producirá un error en el inicio y se invocará a la devolución de llamada de error. Si tu aplicación controla una gran cantidad de tipos de archivo y esperas que este error pueda detectarse, conviene que proveas al usuario de una experiencia de reserva. Por ejemplo, puedes ofrecerle la posibilidad de guardar el archivo en el escritorio para poder abrirlo desde allí.

Ejemplo completo

Consulta el ejemplo de inicio por asociación (Windows).

Temas relacionados

Tareas

Cómo administrar la activación de archivos

Cómo iniciar la aplicación predeterminada de un URI

Directrices

Directrices y lista de comprobación de tipos de archivo y URI

Referencia

Windows.Storage.StorageFile

Windows.System.Launcher.launchFileAsync