我将桌面应用程序在闪存驱动器上分发给Windows,Mac和Linux上的数千名用户。我有一个HTML启动页面,其中包含指向闪存驱动器上的文档,安装指南,发行说明等的链接。我希望用户只需直接从浏览器安装,但这正是防病毒程序试图阻止的(这是正确的)。它不是试图启动安装程序,而是找到安装程序并让用户自己完成最后一步。
是否可以使主机上的文件系统管理器(Explorer,Finder等)打开包含该文件的文件夹并突出显示它?我认为这需要JavaScript,它可能必须与Windows,Mac和Linux不同。此外,适用于大多数浏览器(IE,FF,Chrome,Safari,Opera)。
这与解决费马的最后定理有着相似的难度吗?
由于
答案 0 :(得分:3)
不。浏览器(或大多数*)会阻止这种行为。它们在您的实际文件系统和Web为您提供的内容之间有一道隔离墙。只有HTML输入控件才会破坏它,并且它们也有相当多的保护。
* - 您可以使用IE ActiveX控件,但这只是IE浏览器。
答案 1 :(得分:2)
只要从本地文件系统加载页面,此JS代码就适用于Windows上的IE和Firefox。您需要在Linux / OSX上进行测试。我不知道你会如何接近chrome / safari / opera。
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);
}
}
}
当然,您可能需要签署.js文件才能使其正常工作。有关详细信息,请参阅此处:http://www.mozilla.org/projects/security/components/signed-scripts.html