(Windows/Mac )浏览器通过自定义协议(URL Protocol)打开 exe 或 app

一、Windows

以 Windows 系统自带的计算器程序为例。添加一个名为“calc”的协议,浏览器中访问此协议的超链接,可以打开计算器程序。

1. 添加注册表(创建自定义协议)

新建一个后缀为 .reg 的文本文件(如 test.reg),写入如下内容:

Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\calc]
"URL Protocol"="C:\\WINDOWS\\system32\\calc.exe"
@="CalcProtocol"
[HKEY_CLASSES_ROOT\calc\DefaultIcon]
@="C:\\WINDOWS\\system32\\calc.exe,1"
[HKEY_CLASSES_ROOT\calc\shell]
[HKEY_CLASSES_ROOT\calc\shell\open]
[HKEY_CLASSES_ROOT\calc\shell\open\command]
@="\"C:\\WINDOWS\\system32\\calc.exe\" \"%1\""

保存后,双击执行此 .reg 文件,将配置内容写入注册表。

2. 超链调用

新建一个 test.html,内容如下:

<!DOCTYPE html>
<html>
  <body>
    <a href="calc://123">click</a>
  </body>
</html>

浏览器打开 text.html,点击 click,成功打开计算器。

二、Mac

仍然以计算器为例。

1. 修改 Info.plist

首先打开计算器 app 文件夹:

用编辑器打开 Contents/Info.plist 文件,在最外层dict下的任意位置插入如下xml配置,并保存(要用管理员权限打开):

<key>CFBundleURLTypes</key>
<array>
  <dict>
    <key>CFBundleURLName</key>
    <string>CalcURLHandler</string>
    <key>CFBundleURLSchemes</key>
    <array>
      <string>calc</string>
    </array>
  </dict>
</array>

2. 使配置生效

手动启动一次 app,即可使配置生效。

但是,此时计算器会提示启动失败,我们需要重新签名。

在命令行执行:sudo codesign -fs - /Applications/Calculator.app

此时,计算器可以正常启动了。

注:如果通过 install4j 打包,在打包配置中修改了 Info.plist,安装软件后立即生效,不需要手动启一次。

3. 超链调用

与 windows 用法一模一样,不赘述。