ubunut下浏览器调用本地应用程序需要desktop文件和scheme协议的支持,和windows 的url protocol类似,只是注册协议的方式不一样。
首先是desktop文件,里面需要加入一个字段来注册协议:
MimeType=x-scheme-handler/test
接着在Exec字段中加入 %u来接受参数:
Exec=/usr/local/Test/test %u
如果需要root权限则需要使用gksu,它可以让应用程序启动的时候弹出对话框输入root密码,从而以root权限启动程序,如下:
[Desktop Entry]
Type=Application
Exec=gksu /usr/local/Test/Test %u
Name=Test
GenericName=My Test App.
Icon=/usr/local/Test/app.png
Terminal=false
Categories=Network;
MimeType=x-scheme-handler/test
Name[zh_CN]=我的测试web
接着需要运行一个命令更新协议:
sudo update-desktop-database
然后是html里面,代码如下:
<html>
<body>
<a href="Test:xxx xxx">open Test</a>
</body>
</html>
这样点击调用后,是类似 /usr/local/Test/Test 'Test:xxx xxx' 这种调用方式。如果是windows的话,是类似 /usr/local/Test/Test xxx xxx 这种方式,所以两者解析命令行参数的时候要注意区别。