【问题标题】:Launch app if installed or redirect to download - windows启动应用程序(如果已安装或重定向到下载) - Windows
【发布时间】:2015-02-18 19:39:25
【问题描述】:

Stack Overflownthis question 中提问:

在每个 repo 上,GitHub 都有一个标记为“在桌面中克隆”的按钮 (例如:https://github.com/github/developer.github.com)。如果你有 安装了 Mac 的 GitHub,href 类似于 “github-mac://openRepo/https://github.com/github/developer.github.com”。 这将打开 GitHub for Mac 并提供克隆 repo。如果你不这样做, href 是“http://mac.github.io”。这是 GitHub 的下载页面 对于 Mac。我想在我的网站上做类似的事情:打开我的 应用程序(如果已安装)并重定向到下载(如果没有)。这怎么可能是最好的 完成了吗?

答案是关于Github Conduit,但据我所知,Github Conduit 仅适用于Github for Mac

我有同样的问题,仅适用于 Windows 操作系统。 GitHub如何知道GitHub是否安装在计算机上?


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

$("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-windows:// 更改为some-uninstalled-app://,则链接将不执行任何操作。


【问题讨论】:

  • 我只是猜测,但知道自定义协议处理程序是如何工作的,也许它只是发现它的自定义协议是否被处理。如果是,它的应用程序将启动。如果没有,它会重定向。因此,您的问题归结为如何查找给定的自定义协议是否为其安装了处理程序。见stackoverflow.com/questions/24779312/…
  • 我认为这可能属于WebApps。你可能会在那里获得更好的运气! :)
  • @sircapsalot WebApps 适用于应用程序的用户,而不是编写 Web 应用程序的开发人员。他的问题属于这里。
  • 就我而言,这个问题与“GitHub”如何知道计算机上是否安装了客户端有关。与特定的编程问题无关。尽管无论如何这可能没有实际意义,因为他们对这个问题有公开的赏金

标签: windows macos github url-scheme github-for-windows


【解决方案1】:

确实,GitHub Conduit 仅适用于 GitHub for Mac。那么GitHub网站如何判断是否安装了GitHub for Windows呢?

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

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

但是,如果您在未安装 GitHub for Windows 的计算机上登录 GitHub 并单击按钮,会发生什么情况?它具有相同的链接,但由于明显的原因无法正常工作。

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

【讨论】:

  • 谢谢,这很有用。但是,是否有可能使这样的方案在 Windows 中像在 Mac OS 中一样工作?
  • @010000010110111001100100011100 我希望你可以。我不知道 GitHub 为什么选择在 Windows 和 Mac 之间做不同的事情。
【解决方案2】:

您可以尝试使用 JavaScript 编写的跨浏览器自定义协议检测库:https://github.com/ismailhabib/custom-protocol-detection

...或者在安装您的应用程序期间做一些骇人听闻的事情,例如修改浏览器的用户代理。

【讨论】:

    猜你喜欢
    • 2015-04-08
    • 2012-12-12
    • 1970-01-01
    • 1970-01-01
    • 2012-11-11
    • 2014-09-18
    • 2019-06-18
    • 2015-08-24
    • 2013-03-19
    相关资源
    最近更新 更多