Есть ли способ заставить Firefox запускаться в новом процессе? - PullRequest
18 голосов
/ 06 декабря 2008

Существует ли аргумент командной строки, который заставляет firefox.exe запускать новый процесс для определенного URL-адреса независимо от того, запущен ли уже другой экземпляр firefox?

Ответы [ 3 ]

27 голосов
/ 06 декабря 2008

Если у вас есть второй профиль (например, «sidekick»), следующее запустит новый процесс Firefox:

firefox.exe -no-remote -p sidekick

Однако, если этот профиль уже используется текущим сеансом Firefox, он не будет работать.

Чтобы создать новый профиль, запустите Firefox из командной строки с флагом -P и создайте его.

firefox.exe -P
2 голосов
/ 25 сентября 2014

Мне часто нужно закрывать несколько экземпляров, очищать кеш и открывать несколько окон Firefox при тестировании моих изменений после перестройки моего веб-приложения. Я использую Firefox Portable для этой цели, чтобы разрешить несколько экземпляров. Ниже я написал пакетные сценарии, которые изменяют установку FirefoxPortable, если она еще не изменена, останавливают текущий процесс firefox и перезапускают его. У меня обычно есть четыре экземпляра с другим исполняемым именем. Один для моего обычного просмотра, а остальные три для тестирования веб-приложений. Очень полезно, когда вы хотите протестировать и сертифицировать свое веб-приложение для текущей и предыдущих версий Firefox.

Я могу открыть три вкладки в одном и том же браузере, но при работе с браузерами я склонен быть параноиком. Я предпочитаю очистить и заново открыть свежий экземпляр браузера для различных приложений перед повторным тестированием вместо F5 или Ctrl F5.

Сценарий будет запускать отдельный переносимый процесс Firefox с отдельным именем процесса и отдельным профилем.

Надеюсь, это поможет вам. Не стесняйтесь использовать их. Пожалуйста, оставьте свои изменения и исправления ошибок в этой теме.

Установить FirefoxPortable в папку с именем FirstFirefoxPortable (или любым другим подходящим именем)

REM ==============

setlocal

set URL=%1

REM FirefoxPortable installation folder
set FIREFOX_PORTABLE_HOME=C:\portables\FirstFirefoxPortable

REM Name of the FirefoxPortable executable file
set FIREFOX_FILENAME_NOEXT=FirstFirefoxPortable

REM Name of the Firefox executable file within App/firefox
set FIREFOX_EXEC_NOEXT=firstfirefox

set FIREFOX_PORTABLE_EXEC=%FIREFOX_PORTABLE_HOME%\%FIREFOX_FILENAME_NOEXT%.exe

REM Name of the other profile folder.
set FIREFOX_PROFILE=firstprofile

set CLEAR_HISTORY=true
set CLEAR_CACHE=true
set CLEAR_SAVED_PASSWORDS=true
set CLEAR_SESSION=true

set WAIT_DURATION=4
set ADDITIONAL_WAIT_DURATION=2

if not exist %FIREFOX_PORTABLE_HOME%\%FIREFOX_PROFILE%.ini (

@echo off
echo.
echo.
echo Setting up Firefox Profile
echo.
echo.
pause
@echo on

echo [FirefoxPortable]>%FIREFOX_PORTABLE_HOME%\%FIREFOX_PROFILE%.ini
echo FirefoxDirectory=App\firefox>>%FIREFOX_PORTABLE_HOME%\%FIREFOX_PROFILE%.ini
echo ProfileDirectory=%FIREFOX_PROFILE%\profile>>%FIREFOX_PORTABLE_HOME%\%FIREFOX_PROFILE%.ini
echo SettingsDirectory=%FIREFOX_PROFILE%\settings>>%FIREFOX_PORTABLE_HOME%\%FIREFOX_PROFILE%.ini
echo PluginsDirectory=%FIREFOX_PROFILE%\plugins>>%FIREFOX_PORTABLE_HOME%\%FIREFOX_PROFILE%.ini
echo FirefoxExecutable=%FIREFOX_EXEC_NOEXT%.exe>>%FIREFOX_PORTABLE_HOME%\%FIREFOX_PROFILE%.ini
echo AdditionalParameters=>>%FIREFOX_PORTABLE_HOME%\%FIREFOX_PROFILE%.ini
echo LocalHomepage=>>%FIREFOX_PORTABLE_HOME%\%FIREFOX_PROFILE%.ini
echo DisableSplashScreen=false>>%FIREFOX_PORTABLE_HOME%\%FIREFOX_PROFILE%.ini
echo AllowMultipleInstances=false>>%FIREFOX_PORTABLE_HOME%\%FIREFOX_PROFILE%.ini
echo DisableIntelligentStart=false>>%FIREFOX_PORTABLE_HOME%\%FIREFOX_PROFILE%.ini
echo SkipCompregFix=false>>%FIREFOX_PORTABLE_HOME%\%FIREFOX_PROFILE%.ini
echo RunLocally=false>>%FIREFOX_PORTABLE_HOME%\%FIREFOX_PROFILE%.ini

rem create dirs
pushd %FIREFOX_PORTABLE_HOME%
mkdir %FIREFOX_PORTABLE_HOME%\%FIREFOX_PROFILE%
mkdir %FIREFOX_PORTABLE_HOME%\%FIREFOX_PROFILE%\profile
mkdir %FIREFOX_PORTABLE_HOME%\%FIREFOX_PROFILE%\settings
mkdir %FIREFOX_PORTABLE_HOME%\%FIREFOX_PROFILE%\plugins
popd

rem copy profile
xcopy /e %FIREFOX_PORTABLE_HOME%\App\DefaultData\profile %FIREFOX_PORTABLE_HOME%\%FIREFOX_PROFILE%\profile

copy /y %FIREFOX_PORTABLE_HOME%\%FIREFOX_PROFILE%.ini %FIREFOX_PORTABLE_HOME%\FirefoxPortable.ini
rename %FIREFOX_PORTABLE_HOME%\FirefoxPortable.exe %FIREFOX_FILENAME_NOEXT%.exe
rename %FIREFOX_PORTABLE_HOME%\App\Firefox\firefox.exe %FIREFOX_EXEC_NOEXT%.exe
)

rem check if firefox is running
REM tasklist /FI "IMAGENAME eq %FIREFOX_FILENAME_NOEXT%.exe" 2>NUL | find /I /N "%FIREFOX_FILENAME_NOEXT%.exe">NUL
REM if "%ERRORLEVEL%"=="0" (
REM echo Firefox running
REM taskkill /t /FI "IMAGENAME eq %FIREFOX_FILENAME_NOEXT%.exe"
REM ping -n 4 127.0.0.1 > NUL
REM tasklist /FI "IMAGENAME eq %FIREFOX_FILENAME_NOEXT%.exe"
REM echo retrying killing Firefox
REM taskkill /f /t /FI "IMAGENAME eq %FIREFOX_FILENAME_NOEXT%.exe"
REM ping -n 2 127.0.0.1 > NUL
REM taskkill /f /t /FI "IMAGENAME eq %FIREFOX_EXEC_NOEXT%.exe"
REM ) else (
REM echo Firefox not running.. starting..
REM )


taskkill /t /FI "IMAGENAME eq %FIREFOX_FILENAME_NOEXT%.exe"

ping -n %WAIT_DURATION% 127.0.0.1 > NUL
echo ==== try killing
tasklist /FI "IMAGENAME eq %FIREFOX_FILENAME_NOEXT%.exe"
tasklist /FI "IMAGENAME eq %FIREFOX_EXEC_NOEXT%.exe"
taskkill /t /FI "IMAGENAME eq %FIREFOX_FILENAME_NOEXT%.exe"
taskkill /t /FI "IMAGENAME eq %FIREFOX_EXEC_NOEXT%.exe"

ping -n %ADDITIONAL_WAIT_DURATION% 127.0.0.1 > NUL
echo ==== retry killing forcefully 
tasklist /FI "IMAGENAME eq %FIREFOX_FILENAME_NOEXT%.exe"
tasklist /FI "IMAGENAME eq %FIREFOX_EXEC_NOEXT%.exe"
taskkill /f /t /FI "IMAGENAME eq %FIREFOX_FILENAME_NOEXT%.exe"
taskkill /f /t /FI "IMAGENAME eq %FIREFOX_EXEC_NOEXT%.exe"


REM clear everything - delete profile
REM del /f /s /q %FIREFOX_PORTABLE_HOME%\%FIREFOX_PROFILE%\profile\*
REM rmdir %FIREFOX_PORTABLE_HOME%\%FIREFOX_PROFILE%\profile\
REM mkdir %FIREFOX_PORTABLE_HOME%\%FIREFOX_PROFILE%\profile\

REM clear all sqlite files
rem for /d %%x in (%FIREFOX_PORTABLE_HOME%\%FIREFOX_PROFILE%\*) do del /q /s /f %%x\*sqlite

if "%CLEAR_HISTORY%"=="true" (
echo.
echo Clearing History
echo.
rem clear history (Bookmarks, browsing and download history)
del /q /s /f %FIREFOX_PORTABLE_HOME%\%FIREFOX_PROFILE%\profile\places.sqlite*

rem clear form history (Saved form data)
del /q /s /f %FIREFOX_PORTABLE_HOME%\%FIREFOX_PROFILE%\profile\formhistory.sqlite*
)

if "%CLEAR_SESSION%"=="true" (
echo.
echo Clearing browsing session
echo.
rem clear previous browsing session
del /q /s /f %FIREFOX_PORTABLE_HOME%\%FIREFOX_PROFILE%\profile\sessionstore.js
)

if "%CLEAR_SAVED_PASSWORDS%"=="true" (
echo.
echo Clearing saved passwords
echo.
rem clear saved passwords
del /q /s /f %FIREFOX_PORTABLE_HOME%\%FIREFOX_PROFILE%\profile\logins.json
)

if "%CLEAR_CACHE%"=="true" (
echo.
echo Clearing cache
echo.
rem clear permissions (Permission database for cookies, pop-up blocking, image loading and add-ons installation.)
del /q /s /f %FIREFOX_PORTABLE_HOME%\%FIREFOX_PROFILE%\profile\permissions.sqlite*

rem clear content preferences (Individual settings for pages.)
del /q /s /f %FIREFOX_PORTABLE_HOME%\%FIREFOX_PROFILE%\profile\content-prefs.sqlite*

rem clear cookies
del /q /s /f %FIREFOX_PORTABLE_HOME%\%FIREFOX_PROFILE%\profile\cookies.sqlite*

rem clear cache
del /q /s /f %FIREFOX_PORTABLE_HOME%\%FIREFOX_PROFILE%\profile\cache2\*

rem clear offline cache
del /q /s /f %FIREFOX_PORTABLE_HOME%\%FIREFOX_PROFILE%\profile\OfflineCache\*

rem clear DOM Storage
del /q /s /f %FIREFOX_PORTABLE_HOME%\%FIREFOX_PROFILE%\profile\webappsstore.sqlite*
)

if "%URL%"=="" (
set URL=www.google.com?q=DidYouPassTheURLArgument
)
@echo on
start /MAX "%FIREFOX_FILENAME_NOEXT%.exe" %FIREFOX_PORTABLE_EXEC% -P "%FIREFOX_PROFILE%" -no-remote -new-tab %URL%
endlocal

REM ==================

Скрипт для открытия firefox для второго приложения. Это тот же сценарий, что и выше.

Копировать и сохранить в отдельный файл, например secondfirefox.bat. Установите FirefoxPortable в другую папку, например C: \ АРБ \ SecondFirefoxPortable. Измените переменные в secondfirefox.bat, чтобы они указывали на другую папку установки переносного Firefox.

setlocal

set URL=%1

REM FirefoxPortable installation folder
set FIREFOX_PORTABLE_HOME=C:\portables\SecondFirefoxPortable

REM Name of the FirefoxPortable executable file
set FIREFOX_FILENAME_NOEXT=SecondFirefoxPortable

REM Name of the Firefox executable file within App/firefox
set FIREFOX_EXEC_NOEXT=secondfirefox

set FIREFOX_PORTABLE_EXEC=%FIREFOX_PORTABLE_HOME%\%FIREFOX_FILENAME_NOEXT%.exe

REM Name of the other profile folder.
set FIREFOX_PROFILE=secondprofile

REM --- snip ---

---- Обновление ----

Исправлены ошибки - исправлен путь к профилю.

Отделенная переменная для очистки паролей. Запомните пароль для страницы входа в мое веб-приложение. Меньше печатать.

---- Обновление ---- 2014-10-01

Убрана необходимость вручную переименовывать файл FirefoxPortable.exe. Сценарий делает это при первом запуске установки FirefoxPortable.

---- Обновление ---- 2014-11-09

Изменения, разрешающие обновление, запустив установщик FirefoxPortable. Когда этот пакет попросит вас перезаписать префы и закладки, введите N. Это сохранит закладки и некоторые настройки.

1 голос
/ 06 декабря 2008

Да, как описано в Аргументы командной строки Firefox :

firefox -new-window

Редактировать: перечитывая, вы на самом деле сказали "процесс", и в этом случае нет, я не думаю, что вы можете.

...