2010-11-18 36 views
4

Je distribue mon application de bureau sur des lecteurs flash à des milliers d'utilisateurs sous Windows, Mac et Linux. J'ai une page de démarrage HTML qui contient des liens vers la documentation, le guide d'installation, les notes de mise à jour, etc. qui se trouvent tous sur le lecteur flash. J'aimerais que l'utilisateur installe directement à partir du navigateur, mais c'est exactement ce que les programmes anti-virus tentent d'empêcher (et à juste titre). Au lieu d'essayer de lancer le programme d'installation, il suffit de localiser le programme d'installation et de laisser l'utilisateur faire le dernier pas par lui-même.Ouverture d'un dossier/répertoire du système de fichiers à partir du navigateur Web

Est-il possible de faire en sorte que le gestionnaire de système de fichiers (Explorer, Finder, etc.) de l'ordinateur hôte ouvre le dossier contenant le fichier et le sélectionne? Je suppose que cela nécessiterait JavaScript et il devrait probablement être différent pour Windows, Mac et Linux. De plus, fonctionne dans la plupart des navigateurs (IE, FF, Chrome, Safari, Opera). Est-ce sur une échelle de difficulté similaire à la résolution du dernier théorème de Fermat?

Merci

Répondre

2

Ce code JS devrait fonctionner pour IE et Firefox sous Windows tant que la page a été chargée à partir de votre système de fichiers local. Vous auriez besoin de tester cela sur Linux/OSX. Je ne sais pas comment vous aborderiez chrome/safari/opéra.

function execute(command, commandParam) 
{ 

    if (isIE()) { 
    try { 
     activexShell = new ActiveXObject("Shell.Application"); 
     activexShell.ShellExecute(command, commandParam, "", "open", "1"); 
     exit(); 
    } catch (e) { 
     alert("exception " + e.name + ': ' + e.message); 
    } 
    } 
    else { 
    try { 
     netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); 
     var FileFactory = new Components.Constructor("@mozilla.org/file/local;1","nsILocalFile","initWithPath");  
     var program = new FileFactory(command); 
     var process = Components.classes["@mozilla.org/process/util;1"].createInstance(Components.interfaces. nsIProcess);   
     process.init(program); 
     process.run(false, commandArray, commandParam.split(" ").length - 1, {}); 
     exit(); 
    } catch (e) { 
     alert("exception " + e.name + ': ' + e.message); 
    } 
    } 
} 

Bien sûr, vous devrez peut-être signer le fichier .js pour le faire fonctionner. Pour plus d'informations, voir ici: http://www.mozilla.org/projects/security/components/signed-scripts.html

1

. Non Les navigateurs (ou la plupart d'entre eux *) empêchent ce genre de comportement. Ils ont un mur entre votre système de fichiers réel et le contenu que le Web vous sert. Seul le contrôle d'entrée HTML casse ceci, et ils ont aussi une bonne protection autour de cela.

* - Vous pouvez utiliser un contrôle IE ActiveX, mais uniquement IE.