对于单个文件类型,这很容易做到,如如何在Wine中将文件类型与本机应用程序关联?,方法是.reg
为所需的文件类型创建一个。但这仅适用于AVI。我使用了一些酒类应用程序(uTorrent,Soulseek,Eudora等),它们可以启动各种文件。例如,电子邮件附件可以是JPG,DOC,PDF,PPS ...这不可能(也不是理想的)来跟踪电子邮件中可能会收到的所有文件类型或洪流下载的文件类型。
因此,我提出了一个更通用,更广泛的解决方案。我需要文件关联以兑现当前配置的任何本机应用程序。我希望对系统中配置的所有文件类型都执行此操作。
我已经想出了使解决方案通用的方法。只需将.reg
for中启动的应用替换为winebrowser
,如下所示:
[HKEY_CLASSES_ROOT\.pdf]
@="PDFfile"
"Content Type"="application/pdf"
[HKEY_CLASSES_ROOT\PDFfile\Shell\Open\command]
@="C:\\windows\\system32\\winebrowser.exe \"%1\""
香港专业教育学院测试过,它可以正常工作。由于winebrowserxdg-open
用作后端,并将我的Windows路径转换为Unix路径,因此启动了正确的(Linux)应用程序。
因此,我需要一个用于Wine注册表的“批处理”更新程序,这种wine-update-associations
脚本可以在安装新应用程序时立即运行。也许可以执行以下操作的工具:
棘手的部分是:我搜索了很多,以查找有关在Ubuntu 10.10及更高版本中如何完成关联的信息,至少可以说文档稀缺且令人困惑。Freedesktop.org没有完整的规范,甚至Gnome文档也已过时。到目前为止,我已经收集了4个包含关联信息的文件,但是对于使用哪个(或为什么)或如何使用它们来生成.reg
文件一无所知:
~/.local/share/applications/mimeapps.list
~/.local/share/applications/miminfo.cache
/usr/share/applications/miminfo.cache
/etc/gnome/defaults.list
任何帮助,脚本或解释将不胜感激!
谢谢!
多年后,我制作了一个小的实用程序,可以扫描MIME数据库(系统和用户),并在Windows注册表中注册所有已知的本机mime类型。
xdg-open
如果存在用于该mime类型的默认(本机)应用程序,则它用于打开文件,否则用于packagekit
搜索可以处理该文件的包(就像Nautilus所做的一样)。因此,我不再需要仅注册具有已安装的本机应用程序的扩展程序的最初要求。但是,该脚本的早期版本仅过滤此类类型。使之成为可能的代码片段是:
perl -e '
use strict; use warnings;
use File::MimeInfo::Magic; use File::MimeInfo::Applications;
while (my $line = <STDIN>) {
chomp($line);
my ($ext, $mime) = (split/\t/, $line);
my ($def, @apps) = mime_applications_all($mime);
print "$line\n" if ($def || @apps)
}'
默认情况下,我的脚本仅在Windows注册表中注册没有处理程序的本机类型,但它也可以覆盖此类关联(例如,在本机查看器中而不是默认的Gecko wine浏览器中打开jpeg文件)。即使Windows中没有处理程序,它也可以忽略某些扩展。
它尽力做到对winemenubuilder友好,这意味着它创建的所有关联都不会被winemenubuilder发布为本机关联(或x-wine-extension mimetypes),这将是丑陋的并可能导致循环。这非常棘手,而且还不完善,特别是在使用大小写混合的情况下(例如.C和.c)
就是说,我希望这个脚本对每个人都有帮助:
https://github.com/MestreLion/wine-tools/blob/master/wine-import-extensions
欢迎改进!
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句