检测或检查电脑中安装的现有应用程序

Detect or check existing applications installed in PC

本文关键字:应用程序 安装 检查 电脑 检测      更新时间:2023-09-26

我正在开发一个网站。在我的网站上,我创建了一些应用程序和链接到这些应用程序的按钮。一旦用户单击该按钮,系统将提示用户安装该应用程序。

我的问题是:

如果用户没有在他们的电脑中安装应用程序,那么一旦他们点击按钮,就会提示他们在电脑中安装这些应用程序;但是如果他们已经在他们的PC上安装了应用程序,则该应用程序应当拒绝或者警告用户已经安装了相同的应用程序。

那么,我应该如何编写代码来检测或检查应用程序是否已经安装到用户的PC中呢?

您有几个选项

  1. Mime类型

    在大多数浏览器(而不是IE)上,您可以看到定义的mime处理程序,例如application/foo。然后,您可以循环使用navigator.mimeTypes,并查看它是否存在。它不是一个数组(严格意义上),所以你需要转换它

    var mimes = Array.prototype.slice.call(navigator.mimeTypes)
    if (mimes.length && mimes.indexOf("application/foo") !== -1) {
        // we've got it!
    }
    else {
        // we're on IE and/or the app isn't installed
    }
    
  2. 扩展/插件

    除了你的应用程序的正常行为外,它还可以在用户的浏览器中安装一个非常简单的小扩展。该扩展将实现一个仅在您的网站上活动的内容脚本,并用"运行"按钮替换"下载"按钮。这可能有点过头了,会惹恼用户。

  3. 注册custom://uri

    自定义URI允许您使用这种巧妙的技巧。如果你的应用程序没有安装,它将无法重定向,下载URL将被加载。例如,如果您安装了iTunes,请尝试将appurl更改为itunes://foobar

    var appurl = 'myapp://launch';
    var downloadURL = '/installer.exe';
    var timeout;
    function preventPopup() {
        clearTimeout(timeout);
        timeout = null;
        window.removeEventListener('pagehide', preventPopup);
    }
    function startApp() {
        document.location = appurl;
        timeout = setTimeout(function () {
            location.href = downloadURL;
        }, 1000);
        window.addEventListener('pagehide', preventPopup);
    }
    startApp();
    

    这可能是最好的解决方案。

    • 将应用程序注册到URI方案(MSDN)
    • 在Ubuntu 11.04、11.10、GNOME 3.0中创建自定义URL处理程序
    • 如何将自定义协议映射到Mac上的应用程序
相关文章: