如何在客户端系统中使用javascript检查特定软件是否已安装?

时间:2018-08-09 09:39:55

标签: javascript angular windows typescript operating-system

是否可以使用Javascript检测客户端系统是否安装了特定的Windows应用程序?

我开发了一个网站,该网站只能检测由我们开发的应用程序。但我想让您知道,网站名称和Windows应用程序名称不同。我的意思是认为我的Web应用程序名称为X,Windows应用程序名称为YSkype webapplicationSkype windows application

不同

考虑Skype,它具有Web应用程序和Windows应用程序。与Skype进行Windows应用程序安装检测一样,我是否也可以使用Javascript检测是否安装了软件。

我遇到了一些 StackOverflow 问题

Get installed applications in a system

Check if the application is already installed

和一些在线文章

https://developers.google.com/web/updates/2017/04/getinstalledrelatedapps

https://www.codeproject.com/Questions/392194/How-can-I-check-if-a-program-is-installed-on-clien

https://social.msdn.microsoft.com/Forums/ie/en-US/1ae2d1f8-ac4a-4905-8bfd-705218b864e2/check-installed-application-using-javascript?forum=ieextensiondevelopment

和下面的代码一样

navigator.getInstalledRelatedApps().then(relatedApps => {
  for (let app of relatedApps) {
    console.log(app.platform);
    console.log(app.url);
    console.log(app.id);
  }
});

任何帮助将不胜感激:-)

但是,如果您想拒绝投票这个问题,请理解我的好奇心。就像我正在为此做研发工作。

并且想让您知道,我正在使用 Angular 5

1 个答案:

答案 0 :(得分:0)

使用 getInstalledRelatedApps(),您可以在用户计算机上check if your Windows UWP app is installed

  1. 更新您的 Windows UWP 应用以告诉它您的网站,这涉及更新 Package.appxmanifest 文件。
<Applications>
  <Application Id="App" ... >
      ...
      <Extensions>
         <uap3:Extension Category="windows.appUriHandler">
          <uap3:AppUriHandler>
            <uap3:Host Name="example.com" />
          </uap3:AppUriHandler>
        </uap3:Extension>
      </Extensions>
  </Application>
</Applications>
  1. 通过将 windows-app-web-link 文件添加到您的网络服务器上的 /.well-known/ 目录来更新您的网站,以告诉它您的 Windows UWP 应用程序。
[{
  "packageFamilyName": "MyApp_9jmtgj1pbbz6e",
  "paths": [ "*" ]
}]
  1. 使用 Windows UWP 应用的详细信息更新您网站上的网络应用清单。
{
  "related_applications": [{
    "platform": "windows",
    "id": "MyApp_9jmtgj1pbbz6e!App",
  }]
}
  1. 调用 getInstalledRelatedApps() 以检查您的 UWP 应用是否已安装:
const relatedApps = await navigator.getInstalledRelatedApps();
relatedApps.forEach((app) => {
  console.log(app.id, app.platform, app.url);
});