Appeler des applications directement dans Internet Explorer

La fonctionnalité DirectInvoke dans Internet Explorer sur Windows 8 permet aux applications d’inscrire leurs types MIME pour un appel direct à partir d’une URL. Quand IE détecte un type de fichier qu’il ne gère pas en mode natif, il peut utiliser une application de gestionnaire, au lieu de télécharger le fichier.

Introduction

DirectInvoke permet aux applications de gestionnaire de contrôler le mode de téléchargement des fichiers et active des techniques intelligentes spécifiques aux besoins de l’application. Par exemple, Microsoft Office gère un cache local de documents sur l’ordinateur d’un utilisateur. Lorsqu’un utilisateur tente de télécharger un document Office dans Windows Internet Explorer, DirectInvoke appelle Office en utilisant l’URL cible plutôt que de télécharger le fichier. Office vérifie son cache et ne télécharge le fichier s’il n’est pas déjà dans le cache. Ce comportement peut entraîner d’importantes économies de la bande passante, en particulier lors de la gestion de documents multimédias volumineux.

Conditions requises pour DirectInvoke

DirectInvoke nécessite les éléments suivants :

  • L’application de gestionnaire doit s’inscrire auprès des URL du protocole S-HTTP (Secure Hypertext Transfer Protocol) et HTTP du gestionnaire.
  • Dans certains cas, les serveurs exigent un contexte supplémentaire (cookies, informations de connexion, entre autres), que l’application de gestionnaire peut ne pas être en mesure de fournir.
  • Les serveurs doivent envoyer l’en-tête de réponse HTTP X-MS-InvokeApp pour déclarer que le fichier peut être téléchargé en faisant référence à l’URL seule.
  • L’application de gestionnaire doit être le gestionnaire par défaut pour ce type MIME.
  • Windows invite l’utilisateur à lancer l’application.

DirectInvoke en action

Lorsque l’utilisateur clique sur un fichier auquel est associée une application DirectInvoke, l’invite suivante s’affiche.

Message d’invite demandant si vous voulez ouvrir un document

ou

Message d’invite demandant si vous voulez ouvrir un document

L’utilisateur peut choisir d’Ouvrir ou d’Annuler, mais pas d’enregistrer le fichier en utilisant le navigateur lui-même. Un clic sur Ouvrir ouvre le fichier dans l’application par défaut et sur Annuler annule le téléchargement. L’utilisateur peut enregistrer le fichier une fois qu’il est ouvert dans l’application correspondante.

Configurer votre serveur pour DirectInvoke

Les serveurs doivent envoyer l’un de ces en-têtes de réponse HTTP pour un abonnement à DirectInvoke.

En-têteDescription
X-MS-InvokeApp: 1Le serveur demande qu’une application configurée DirectInvoke soit utilisée.
X-MS-InvokeApp: 1; RequireReadOnlyLe serveur demande qu’une application configurée DirectInvoke soit utilisée et exige que le fichier s’ouvre en mode lecture seule.

 

En guise de recommandation, les serveurs doivent inclure le type MIME correct du fichier dans l’en-tête de réponse HTTP Content-Type . Tout nom de fichier spécifié dans l’en-tête de réponse HTTP Content-Disposition  est affiché dans l’invite de consentement pour approbation de l’utilisateur, mais n’est pas transmis à l’application.

Configurer votre application pour DirectInvoke

L’application de gestionnaire doit être définie comme valeur par défaut pour le type MIME dans Windows. L’application de gestionnaire déclare via le Registre qu’elle prend en charge la réception des URL HTTP/HTTPS.

Remarque  Les applications dans une application du Windows Store en JavaScript ou les applications du Windows Store n’ont pas besoin d’être inscrites, car elles sont inscrites et activées par défaut.
 

L’application peut déclarer une prise en charge en utilisant un mécanisme SupportedProtocols existant pour ses verbes. HKCR\Applications\<app.exe>\SupportedProtocols ou HKCR\CLSID\<verb handler clsid>\SupportedProtocols peut être rempli en utilisant des valeurs qui identifient les combinaisons de protocoles URI (Uniform Resource Identifier) (par exemple mailto:\\ ) que l’application prend en charge ou * pour indiquer tous les protocoles.

Par exemple, voici l’inscription des verbes du Lecteur Windows Media :

HKCR\CLSID\{45597c98-80f6-4549-84ff-752cf55e2d29}\SupportedProtocols
    rtspt    REG_SZ
    rtspu    REG_SZ
    rtsp    REG_SZ
    mms    REG_SZ
    http    REG_SZ

Cette entrée de Registre est l’approche conseillée pour un abonnement au comportement DirectInvoke. L’application peut également définir la clé de Registre UseURL héritée pour indiquer que l’application peut accepter une URL sur la ligne de commande, comme illustré ici :

HKEY_LOCAL_MACHINE or HKEY_CURRENT_USER
  SOFTWARE
    Microsoft
      Windows
        CurrentVersion
          App Paths
            file.exe
              (Default)
              UseUrl

Fonctionnement

Le processus démarre lorsqu’un utilisateur clique sur un lien vers un fichier et que le navigateur accède à cette URL.

Le serveur répond avec plusieurs éléments dans un en-tête :

  • Le type MIME du fichier est spécifié avec un en-tête de réponse Content-Type.
  • Le serveur demande que le client appelle directement l’application par défaut en utilisant les en-têtes de réponse X-MS-InvokeApp: 1 ou X-MS-InvokeApp: 1; RequireReadOnly.

Côté client, IE détecte que DirectInvoke est demandé par l’en-tête de réponse. IE détermine quelle application de gestionnaire par défaut est utilisée pour le type MIME sur le système de l’utilisateur en examinant l’inscription de l’environnement. Si l’application est inscrite pour prendre en charge le comportement DirectInvoke, IE demande à l’utilisateur l’autorisation d’ouvrir le fichier à l’aide de l’application par défaut.

Diagramme illustrant le processus DirectInvoke

Si l’utilisateur clique sur Ouvrir, IE utilise ShellExecute pour démarrer l’application inscrite et transmettre l’URL. L’application démarre à l’aide de son verbe par défaut sauf si RequireReadOnly est spécifié pour ouvrir le fichier en lecture seule.

Si les conditions DirectInvoke ne sont pas réunies, IE revient en arrière selon l’environnement. Dans Internet Explorer pour le Bureau, si un gestionnaire MIME hérité existe, il est utilisé pour ouvrir le fichier. Si vous cliquez sur un lien dans Internet Explorer dans la nouvelle interface utilisateur Windows, le fichier est téléchargé.

Gestion des conflits d’en-têtes

L’en-tête de réponse HTTP content-disposition: attachment peut être en conflit avec un en-tête InvokeApp. Nous conseillons aux serveurs de n’envoyer que l’un de ces en-têtes. En cas de conflit, l’en-tête content-disposition est prioritaire sur l’en-tête InvokeApp. Cela est dû au fait que l’intention historique de l’en-tête content-disposition est de contourner toute gestion MIME spéciale et d’offrir le fichier pour téléchargement.

Rubriques associées

Création d’un lien vers votre application
Intégration de Windows 8

 

 

Afficher: