使用 Firefox 設定檔管理器而不更改預設設定文件

使用 Firefox 設定檔管理器而不更改預設設定文件

我使用不同的 Firefox 設定檔來處理不同的事情。 (這是 Firefox 16.0.2)我有一個用於正常 Web 瀏覽的通用設定文件,還有一些用於其他用途(例如,javascript 駭客攻擊)的設定檔。我想要的是兩個快捷方式:一個打開通用配置文件,另一個打開配置文件管理器,以便我可以在其他配置文件中進行選擇。但是,我希望將通用設定檔設為預設值,這樣,如果其他程式嘗試開啟連結而我沒有開啟任何 Firefox 窗口,它總是會開啟通用設定檔。

我不知道該怎麼做。似乎如果您打開設定檔管理器,您就無法避免更改“預設設定檔”的當前設定。

例如,假設我有兩個設定檔:「一般」和「其他」。查看profiles.ini,我發現“general”被設定為預設設定檔。一切都很好。我使用設定檔管理器快捷方式並開啟設定檔管理器。我想選擇“其他”設定檔。但是有一個“啟動時不詢問”的複選框,它限制了我的風格。如果我選中它,它會打開“其他”並將其設置為預設配置文件。如果我不檢查它,它會刪除“常規”配置文件上的默認設置,並且沒有默認設置,因此如果程式嘗試打開鏈接,它將帶我到配置文件管理器。這些都不是我想要的。我想要的是打開“其他”個人資料同時保留“一般”作為預設值

基本上,「啟動時不詢問」複選框似乎強制在兩個選擇之間進行:打開配置文件並將其設置為預設配置文件,或者打開配置文件並使其不存在預設配置文件。但我想要第三個選項:打開配置文件,同時將預設設定檔設定為已設定的值。有什麼辦法可以做到這一點嗎?

編輯:根據一些答案,我想澄清一下我不希望每個設定檔都有一個快捷方式。無論我有多少個人資料,我都想要正好兩個快捷方式:一種始終打開預設設定檔的快捷方式,一種允許我互動式選擇的快捷方式全部配置文件,但不會更改標記為預設的設定檔。

答案1

實現你的目標的唯一方法是寫保護profiles.ini初始設定後的文件。這樣 Firefox 將無法更新文件,而保留您設定的所有內容。

  1. 設定您的個人資料。
  2. 透過在設定檔管理器中選擇設定檔並選取「啟動時不詢問」來選擇預設設定檔。
  3. 將您的標記profiles.ini為唯讀。

從現在開始,在不使用-p-p "profile name"或 的情況下啟動 Firefox-p "profile path"將始終啟動您的預設設定檔。透過設定檔管理員或交換器開啟設定檔-p無法變更您的profiles.ini。

顯然,您必須使文件再次可寫入才能更改內容或建立新的設定檔。除此之外你應該沒問題。

答案2

您可以透過安裝 Firefox 便攜版來做到這一點(http://portableapps.com),並將其安裝到硬碟上的新位置而不是 USB 驅動器上。這是我的做法(儘管您可以調整它以實現您想要的效果),將標準安裝保留在原處。將便攜式資料夾複製到第二個位置。將您的第一個設定檔資料複製到其網站上所述的便攜式資料夾「DATA」子資料夾,並將您的第二個設定檔複製到第二個新的便攜式「DATA」子資料夾(包含FirefoxPortable.EXE 的資料夾下面的資料夾)。啟動每個 FirefoxPortable.EXE 並檢查其是否已正確自訂(例如,正常方式的插件、插件等)。如果您喜歡短名稱,可以選擇將 FirefoxPortable.EXE 重新命名為 FFP.EXE :-) 並為每個便攜式安裝資料夾的 FFP.EXE 設定兩個捷徑。我已經用過V6.0和V25.0.1這種方式並且工作得很好。

優點

  • 您可以運行完全獨立的配置(如果您願意,它們甚至可以是不同版本的 Firefox)。是的,當您克隆 Firefox 應用程式時,它會佔用更多的磁碟空間,但我發現這更容易管理。
  • 我運行了大約 30 個插件,便攜式版本沒有任何問題
  • 如果您有一組活動和非活動插件,則解決插件衝突會更容易。只需克隆該資料夾,然後用它來測試打開的單個插件,而不會弄亂您的主配置檔案。

問題(如果 Firefox 是預設瀏覽器則適用)

  • 保持標準安裝不變並設定為預設瀏覽器
  • 將舊的標準安裝保留為預設設定檔管理器提示字元。 (在您的情況下,您可以將其作為您的“常規”配置文件運行,而無需提示”。有時,某些應用程式會在您不期望的情況下嘗試啟動此預設瀏覽器(例如​​,打開URL 的聊天用戶端)並且每當您看到設定檔提示只需退出並透過捷徑啟動正確的便攜式版本
  • 現在 Firefox 有 3 個版本 - 應該使用哪個版本來儲存檔案?解決方案是在開啟 *.url、*.htm[l] 或 *.mht 之前始終從捷徑啟動 Firefox,它們將在活動的 Firefox 中正確開啟。
  • 如果您使用 Firefox 同步,我希望您將每個設定檔命名為不同的“裝置名稱”,以便它能夠正常運作。例如,在所有設定檔中同步您的書籤。
  • 我建議手動進行軟體更新。

答案3

我不知道你的作業系統是什麼,但如果你使用的是 Unix 作業系統,我可能有一個腳本可以完全滿足你的要求(如果我理解正確的話,這也正是我需要的行為)。

這個想法是使用腳本來啟動你的「其他」firefox。該腳本透過查看profiles.ini檔案來確定預設設定文件,然後使用設定檔管理器啟動新的 Firefox 實例,並最終在更改後立即恢復預設設定檔配置。有點老套,但我正在使用它並且效果很好。

如果在 Windows 上,您也許能夠重現等效的腳本,但我無法在這件事上幫助您。

這是保存在文件中並在終端機或文件中firefox-other.sh啟動的腳本。您可能必須在一開始就調整配置:./firefox-other.sh.desktop

#!/bin/bash

# configuration
profiles=/home/jerome/.mozilla/firefox/profiles.ini
firefox=`which firefox`

# find current default profile
profile_regex="\[([^\[]+)\]"
name_regex="Name=([^$]+)"
default_regex="^Default=1"
while read line
do
    [[ $line =~ $name_regex ]]
    if [[ -n "${BASH_REMATCH[1]}" ]]
    then
        profile_name="${BASH_REMATCH[1]}"
    fi
    [[ $line =~ $profile_regex ]]
    if [[ -n "${BASH_REMATCH[1]}" ]]
    then
        default_profile="${BASH_REMATCH[1]}"
    fi
    [[ $line =~ $default_regex ]]
    if [ -n "${BASH_REMATCH[0]}" ]
    then
        break
    fi
done < $profiles

echo "Default profile is \"$profile_name\" [$default_profile]"
last_update=`stat -c %Y $profiles`

# restore default profile
function restore {
    on_default=0
    tmp="${profiles}.new"
    rm -f $tmp
    while read line
    do
        [[ $line =~ $profile_regex ]]
        if [[ "${BASH_REMATCH[1]}" = $default_profile ]]
        then
            on_default=1
        fi
        if [[ "$line$on_default" = 1 ]]
        then
            echo "Default=1" >> $tmp
            on_default=0
        fi

        # echo existing line unless it is the default declaration
        [[ $line =~ $default_regex ]]
        if [ -z "${BASH_REMATCH[0]}" ]
        then
            echo $line >> $tmp
        fi
    done < $profiles

    mv $tmp $profiles
    echo "Default profile restored to \"$profile_name\" [$default_profile]"
}

# start firefox with profile manager
echo -n "Start Firefox..."
$firefox -no-remote -P 2> /dev/null 1> /dev/null &
pid=$!
echo -e "\rFirefox started with pid $pid"

# loop until $profiles is changed or firefox instance killed
while true
do
    sleep 1

    # watch profiles
    update=`stat -c %Y $profiles`
    if [ $update -gt $last_update ]
    then
        # profiles updated
        break
    fi

    # watch instance
    if [ -n "`kill -0 $pid 2>&1`" ]
    then
        # instance terminate
        break
    fi

done

# then restore
restore

答案4

我將為此使用兩個設定檔名稱。 「常規」是您的正常使用設定檔。 「其他」是JavaScript hacky之一。請確保在遵循此操作時使用您的個人資料名稱。

  1. 開啟設定檔管理器並確保“常規”設定為預設設定檔。
  2. 複製 Firefox 快捷方式。 (所以現在你有兩個相同的 Firefox 快捷方式)。
  3. 將其中一個快捷方式重新命名為“常規”,右鍵單擊 -> 屬性,然後添加將以下字串加入到結尾目標的:
    -P "General"
  4. 按確定。
  5. 將另一個快捷方式重新命名為“其他”,右鍵單擊->屬性,然後添加將以下字串加入到結尾目標的:
    -P "Other" -no-remote
  6. 按確定。

現在你完成了。每個設定檔都有兩個不同的快捷方式。您的預設設定檔將為“常規”,因此程式將在該設定檔中開啟捷徑。現在對於主要優勢:您可以同時使用兩個設定檔!它們將在不同的實例和視窗中開啟。

相關內容