如何防止每个应用程序版本的 Firefox 更新(配置文件夹之外的首选项)?

如何防止每个应用程序版本的 Firefox 更新(配置文件夹之外的首选项)?

Ubuntu 14.04 上的 Firefox 刚刚更新到 v47,它破坏了我正在处理的某些内容。不过我认为这没什么大不了的,因为我可以下载以前的版本,然后使用它。所以我做了如下操作:

wget https://ftp.mozilla.org/pub/firefox/releases/46.0.1/linux-i686/en-US/firefox-46.0.1.tar.bz2
tar xjvf firefox-46.0.1.tar.bz2
mv firefox firefox-46.0.1
./firefox-46.0.1/firefox # to run

到目前为止一切顺利,但不幸的是,只要我单击 Alt / Help / About Firefox,该死的东西就会开始更新:

Firefox 更新

... 它甚至没有问我,我认为这是非常不尊重的。

这里的问题是,在启动时,即使是这个版本也会使用我的常规系统 Firefox 使用的“默认用户”配置文件。现在我可以为这个 Firefox 设置一个单独的配置文件文件夹,但这样我就必须管理更多的东西 - 我觉得这不值得,因为我无论如何都想做的只是停止更新。

因此,我查了一下:

您可以在 about:config 中设置这些首选项以禁用自动更新:
app.update.auto - false
app.update.enabled - false
app.update.silent - false
....
您可以在文本编辑器中创建一个名为 user.js 的新文件...将此文件放在您的配置文件文件夹中。
// turn off application updates:
user_pref("app.update.enabled", false);

如果我想使用单独的配置文件目录,那么这样做是可以的,但正如我所说,我不想这样做(我也不想弄乱我的“默认用户”配置文件)。然后我发现了这个:

<firefox 安装目录>/defaults/profile

好的,这是 Profile 文件夹之外的内容,在应用程序目录中,我可以使用,但它还能用吗?目前我有这个:

$ find firefox-46.0.1/ -name '*.js'
firefox-46.0.1/defaults/pref/channel-prefs.js
$ cat firefox-46.0.1/defaults/pref/channel-prefs.js
/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */

pref("app.update.channel", "release");

好吧,我想,如果读取了这个文件,那么我可以在这里添加停止更新的首选项吗?

$ cat >> firefox-46.0.1/defaults/pref/channel-prefs.js << 'EOF'
> pref("app.update.auto", false);
> pref("app.update.enabled", false);
> pref("app.update.silent", false);
> EOF

重新运行 Firefox,只要看到“帮助/关于”,它就会再次开始更新:(

user.js还尝试将这些添加到同一目录中的单独文件中:

$ cat >> firefox-46.0.1/defaults/pref/user.js << 'EOF'
> pref("app.update.auto", false);
> pref("app.update.enabled", false);
> pref("app.update.silent", false);
> EOF

...但仍然没有结果——当我看到“帮助/关于”时,Firefox 再次立即开始更新;甚至about:config表明这些首选项没有从默认设置更改。

那么,有没有办法在“应用程序”级别(即在其应用程序文件夹中)停止此“外部”版本的 Firefox 更新,以便仍然使用“默认用户”配置文件,否则由主 Firefox 版本使用?

答案1

好的,这是一个解决方法,直到得到正确的答案;概念是:

  • 在应用程序文件夹内为“特定”配置文件创建一个文件夹
  • 创建一个将从应用程序文件夹运行的 bash 脚本firefox,使用之前创建的“特定”配置文件(在 46 中,firefoxfirefox-bin文件都是二进制文件)
  • 一旦这个“特定”的配置文件夹初始化完毕,就创建一个user.js包含所需首选项的内部文件夹

脚本中的全部内容如下bash

wget https://ftp.mozilla.org/pub/firefox/releases/46.0.1/linux-i686/en-US/firefox-46.0.1.tar.bz2
tar xjvf firefox-46.0.1.tar.bz2
mv firefox firefox-46.0.1

# create a new, "specific" profile folder
mkdir firefox-46.0.1/profile-46

# create a new bash script to run firefox:
cat > firefox-46.0.1/firefox46.sh <<'EOF'
#!/usr/bin/env bash
# set -x
# SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" # nowork 4 symlink
SCRIPT_DIR="$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")"
cd ${SCRIPT_DIR} # just in case
# -no-remote implies --new-instance.
exec "${PWD}/firefox" -profile "${PWD}/profile-46" -new-instance
EOF

# make bash script executable:
chmod +x firefox-46.0.1/firefox46.sh

# run once, just to init the profile-46 directory, then exit manually:
./firefox-46.0.1/firefox46.sh

# create user.js to override; firefox-46.0.1/profile-46/prefs.js should not be edited manually
# (https://developer.mozilla.org/en-US/docs/Mozilla/Preferences/A_brief_guide_to_Mozilla_preferences)
# (http://practical-admin.com/blog/firefox-customization-file/)
cat > firefox-46.0.1/profile-46/user.js << 'EOF'
pref("app.update.auto", false);
pref("app.update.enabled", false);
pref("app.update.silent", false);
EOF

# finally, symlink to /usr/bin:
sudo ln -s $PWD/firefox-46.0.1/firefox46.sh /usr/bin/firefox46

现在,每当我firefox46从终端启动时,Firefox 46 都会以正确的配置文件启动,并且不再更新,这正是我想要的......

答案2

您只需删除 Firefox 文件夹中的 Updater 可执行文件即可。不再有更新。永远。

相关内容