如果已安装,则启动应用程序或重定向到下载-windows

如果已安装,则启动应用程序或重定向到下载-windows,windows,macos,github,url-scheme,github-for-windows,Windows,Macos,Github,Url Scheme,Github For Windows,被问及: 在每次回购中,GitHub都有一个标记为“桌面克隆”的按钮 (例如:)。如果你有 GitHub for Mac已安装,href类似 “github-mac://openRepo/". 这将打开GitHub for Mac并提供克隆回购协议的功能。如果你没有, href是“”。这是GitHub的下载页面 给麦克。我想在我的网站上做一些类似的事情:打开我的 应用程序(如果已安装)和重定向到下载(如果未安装)。这怎么可能是最好的 完成 答案是关于,但据我所知,Github管道仅适用于。 我有

被问及:

在每次回购中,GitHub都有一个标记为“桌面克隆”的按钮 (例如:)。如果你有 GitHub for Mac已安装,href类似 “github-mac://openRepo/". 这将打开GitHub for Mac并提供克隆回购协议的功能。如果你没有, href是“”。这是GitHub的下载页面 给麦克。我想在我的网站上做一些类似的事情:打开我的 应用程序(如果已安装)和重定向到下载(如果未安装)。这怎么可能是最好的 完成

答案是关于,但据我所知,Github管道仅适用于。

我有同样的问题,只针对Windows操作系统。GitHub如何知道GitHub是否安装在计算机上


如中所述,我们需要使用以下代码检查协议是否已注册:

$("a[href*='github-windows://']").click(function(e) {
    var el = $(this);
    setTimeout(function() {
        window.location = el.data("data-href-alt");
    }, 200);

    // once you do the custom-uri, it should properly execute the handler, otherwise, the settimeout that you set before will kick in
    window.location = el.data("href");

    e.preventDefault();
});
我有以下HTML链接:

<a href="github-windows://openRepo/https://github.com/jquery/api.jqueryui.com" data-href-alt="https://www.example.com/app-not-installed">Clone in Desktop</a>

如果安装了该应用程序,Google Chrome会给我一个外部协议请求(见下文),因此我认为它应该可以工作(尽管它在我的计算机上不起任何作用)。但是,如果未安装该应用程序,则不会转到
data href-alt
页面

例如,如果我在代码中的所有实例中将
github窗口://
更改为
某些已卸载的应用://
,则链接不会起任何作用



没错,GitHub导管仅适用于Mac的GitHub。那么GitHub网站如何确定是否安装了GitHub for Windows

在这方面,GitHub for Windows显然没有那么复杂。只有在您安装了GitHub for Windows并使用“选项”下的“添加帐户”按钮验证了您的帐户后,“桌面中的克隆”才会起作用

完成此操作后,只要您登录到添加到GitHub for Windows的GitHub帐户,“桌面克隆”链接将使用
GitHub Windows://
协议,而不是
https://windows.github.com/
链接

但是,如果您在未安装GitHub for Windows的计算机上登录GitHub并单击该按钮,会发生什么情况?它也有相同的链接,但由于明显的原因,它不会起作用


是的,GitHub显然盲目地认为,当您在Windows计算机上使用帐户时,必须安装GitHub for Windows。

您可以尝试使用JavaScript编写的跨浏览器自定义协议检测库:


…或者在应用程序安装过程中修改浏览器的用户代理之类的黑客行为。

我只是猜测,但知道自定义协议处理程序是如何工作的,也许它只是知道是否处理了自定义协议。如果是,其应用程序将启动。如果没有,它将重定向。因此,您的问题归结为如何找到给定的自定义协议是否安装了处理程序。看,我想这可能属于我们。你在那里可能会更走运<代码>:)@sircapsalot WebApps适用于应用程序的用户,而不是编写WebApps的开发人员。他的问题属于这里。就我而言,这个问题与“GitHub”如何知道计算机上是否安装了客户端有关。与特定的编程问题无关。虽然这可能是毫无意义的,因为他们有一个公开的悬赏问题谢谢你,这是非常有用的。但是,有没有可能像在Mac OS中那样,在Windows中实现这样一个方案呢?@01000010110111001100100011100我想你可以。我不知道为什么GitHub选择在Windows和Mac之间做不同的事情。