症状
- 用户打开他们的网络邮件帐户,单击某些附件,然后单击“使用 Word 打开”。
- 用户花费数小时编辑他们珍贵的文档。用户保存 Word 文档并退出。
- 用户找不到文件。
- 用户拿起火把和干草叉(最后一步可选)。
问题原因
Firefox 的下载对话框显示两个选项:“保存存档“ 和 ”打开用“。
通过选择“打开方式”,Firefox 会将文件下载到临时文件夹并打开相关的应用程序。我想阻止这种行为。
我尝试过
我做了作业,搜索了MozillaZine以及知识库(如这里,这里或者这里),如果我理解正确的话,下载对话框将不取决于文件的扩展名,而是取决于它的 mime 类型。
我知道我可以通过转到“首选项”>“应用程序”来设置行为,如下所示:
然而:
- Firefox 依赖于 mime 类型服务器通知。但它本身可能不正确、被省略或冗余(一种文件类型可以有多种 MIME 类型,反之亦然)。
- Firefox 会根据每个 MIME 类型记住“从现在起自动对此类文件执行此操作”复选框。如果我想强制执行某种行为,我必须手动为每种 MIME 类型设置它。
- 我无法在应用程序列表中创建新条目。只有从未注册的 MIME 类型进行新下载时,才会填充该条目。只有这样我才能更改列表中的行为。
- 我可以编辑mime类型.rdf文件,强制“保存文件”行为,但我找不到强制所有文件执行此行为的方法。
我需要一种方法(最好)使其无法用外部应用程序打开,或者至少强制保存文件。
我知道我可以设置browser.altClickSave
为about:config
在单击按 ALT 时保存文件,但我需要一些不需要用户交互的解决方案。
答案1
制作一个部署给用户的主 mimeTypes.rdf 文件是最好的解决方案
在能够很好地处理 XML 样式文档的编辑器中打开 mimeTypes.rdf(例如 Notepad++)
查找第一行并用第二行替换:
NC:saveToDisk="false"
NC:saveToDisk="true"
and
NC:alwaysAsk="true"
NC:alwaysAsk="false"
我还会将用户积累的一些奇特内容“播种”到您的主 mimeTypes.rdf 中:
- 从使用网络邮件附件最频繁的 2-3 个用户那里复制 mimeTypes.rdf
- 将用户类型与你的主类型进行比较:
命令执行程序
find "<RDF:li RDF:resource=" Master_mimeTypes.rdf > MasterMimes.txt #generate list of mimetypes
find "<RDF:li RDF:resource=" User1_mimeTypes.rdf > User1Mimes.txt #generate list of mimetypes
fc MasterMimes.txt User1Mimes.txt #compare lists of mimetypes
如果发现任何新类型,请从用户文件中获取整个节并添加到主文件中。
答案2
现在about:config
有一个选项browser.download.forbid_open_with
。只需将其设置为true
答案3
笔记:这些说明仅适用于 Windows,但也适用于其他操作系统。此解决方案不适用于没有禁用 PDF.js 和/或其他 PDF 查看器插件. 它也不适用于 Firefox 可以直接打开的文件(例如 MP3 文件、图像、视频text/plain
文件等)。
好吧,这个解决方案并不像您希望的那样免去用户交互,但如果您有能力提供定制版本的 Firefox,或者您可以在每个用户的计算机上运行批处理脚本,您可以尝试这个:
安装最新测试版自动保存文件夹(非洲猪瘟)
创建一个过滤器来匹配来自任何域的任何类型的文件。
另外,请务必阅读首次安装指南配置 ASF 以自动
Save File
从保存对话框中 选择安装联邦航空管理局备份浏览器配置文件(包括首选项)并在个人电脑上恢复它们
或者,如果您可以在用户的计算机上运行批处理脚本,请运行以下脚本(安装 ASF 后):
文件名:Configure ASF.bat @ECHO 关闭 :: 如果 Firefox 正在运行,请将其终止,否则 prefs.js 将不会更新 开始“”/等待/B“taskkill”/F/IM firefox.exe :: 找出 Firefox 的用户配置文件目录并导航至该目录 设置 ProfileDir=%APPDATA%\Mozilla\Firefox\Profiles CD/D %配置文件目录% FOR /F "tokens=* USEBACKQ" %%F IN (`dir /A:D /B ^| find "default"`) DO ( 设置“ProfileDir=%ProfileDir%\%%F” ) CD/D %配置文件目录% :: 从“extpref.txt”读取 ASF 首选项并将其附加到 Firefox 的首选项文件中 类型%〜dp0%\extpref.txt >> prefs.js ::由于每个用户的用户名必然会改变,找出“下载”的路径 :: 文件夹并将其附加到 prefs.js 设置 DownloadsDir=%USERPROFILE%\Downloads ECHO user_pref("extensions.asf.filters0.folder", "%DownloadsDir:\=\\%"); >> prefs.js ECHO user_pref("extensions.asf.lastpath", "%DownloadsDir:\=\\%"); >> prefs.js 暂停
文件名:extpref.txt 用户首选项(“extensions.asf.dialogForceRadio”,true); 用户首选项(“extensions.asf.dialogaccept”, true); 用户首选项(“extensions.asf.filters0.active”, true); 用户首选项(“extensions.asf.filters0.domain”, “*”); 用户首选项(“extensions.asf.filters0.domain_regexp”,false); user_pref("extensions.asf.filters0.filename", "*"); 用户首选项(“extensions.asf.filters0.filename_regexp”,false); 用户首选项(“extensions.asf.filtersNumber”, 1); 用户首选项(“extensions.asf.tempdomain”,“http://chrisblattman.com”); user_pref("extensions.asf.useDownloadDir", true); 用户首选项(“扩展.asf.版本”, “1.0.5bRev128”); 用户首选项(“extensions.asf.viewdloption”, true); 用户首选项(“extensions.asf.viewpathselect”, true); 用户偏好(”[电子邮件保护]“, 真的);
该脚本接受的输入extpref.txt
应位于与脚本本身相同的文件夹中,并且必须包含 ASF 的首选项,该首选项将在 Firefox 的首选项文件 (prefs.js) 中更新
您可以从about:config
或者直接从中extensions.asf.*
获取它们prefs.js
,通常位于文件夹中:
%APPDATA%\Mozilla\Firefox\Profiles\????????.default\
创建时extpref.txt
请确保不包含extensions.asf.filters0.folder
和,extensions.asf.lastpath
因为每个用户的它们都会有所不同。
答案4
对于较新版本的 Firefox,您需要编辑 handlers.json 文件并添加新的 mimetype。如果您查看已存在的默认 mimetype,您可以非常轻松地添加它们和操作。只需记住“0”表示操作中的下载。请务必进行备份,以防万一您搞砸了什么。