Allerdings fand er das Verfahren via Oberfläche zu langatmig.
Zudem ändert der Firefox bei jedem Update die Dialoge, daher war die Frage wie man das anders lösen kann.
Ein Forumskollege von unserer neuen "Empirum Slack Gruppe" hatte auch gleich eine Lösung (Code nur als Beispiel).
Das macht er so:
Code: Select all
ReplaceTextFile ('%APPDATA%\Mozilla\Firefox\Data\profile\prefs.js', 'user_pref("network.proxy.autoconfig_url", "http://scripts4web.xy.com/proxy.pac', "user_pref("network.proxy.autoconfig_url", "http://scripts4web.xy.com/proxy.pac");, 0)
Ein Blick in diese Datei zeigt, dass der Firefox dort die Settings ablegt, in einem bestimmten Format.
Hier zum Beispiel die Zeilen, die einen Proxy des Kunden einschalten (die IP-Addressen habe ich aus Sicherheitsgründen verfälscht).
Code: Select all
user_pref("network.proxy.backup.ftp", "");
user_pref("network.proxy.backup.ftp_port", 0);
user_pref("network.proxy.backup.socks", "");
user_pref("network.proxy.backup.socks_port", 0);
user_pref("network.proxy.backup.ssl", "");
user_pref("network.proxy.backup.ssl_port", 0);
user_pref("network.proxy.ftp", "192.168.11.209");
user_pref("network.proxy.ftp_port", 2098);
user_pref("network.proxy.http", "192.168.11.209");
user_pref("network.proxy.http_port", 2098);
user_pref("network.proxy.no_proxies_on", "localhost, 127.0.0.1, 192.168.11.0/22, 192.168.18.0/22,192.168.3.0/22, 192.168.8.0/22, 192.168.9.0/22, 192.168.12.0/22, 192.168.21.0/22");
user_pref("network.proxy.share_proxy_settings", true);
user_pref("network.proxy.socks", "192.168.11.209");
user_pref("network.proxy.socks_port", 2098);
user_pref("network.proxy.ssl", "192.168.11.209");
user_pref("network.proxy.ssl_port", 2098);
user_pref("network.proxy.type", 1);
1. Die Zeile ist schon da, dann will man nur den Wert ändern (bzw. die Zeile austauschen gegen die man möchte).
2. Die Zeile fehlt, dann möchte man die Zeile an die Datei anhängen
3. Die Zeile ist vorhanden und soll gelöscht werden
Diese 3 Fälle deckt mein folgendes MPR-Skript ab. Um das Skript zu verwenden muß man sich zunächst jedoch die Einträge besorgen, die geändert - also hinzugefügt, geändert oder gelöscht - werden sollen.
Diese Einträge kommen in eine Textdatei die dem Skript beigelegt wird.
Das Skript arbeitet nun Zeile für Zeiledieser Textdatei ab, und ändert entsprechend die Einträge in der "prefs.js" Datei.
1. Firefox starten, Backup der "prefs.js"-Datei machen
2. Gewünschte Änderungen im FF vornehmen.
3. sich die nun geänderte "prefs.js" Datei holen, und durch einen Abgleich mit der zuvor gesicherten Datei feststellen,
welche Teile relevant für die Änderung sind.
4. Diese Teile in eine Textdatei kopieren.
Nun gibt es zwei Möglichkeiten:
A) Man will einen Eintrag setzen - dann kopiert man einfach diese Zeile in die Textdatei
Dieser Eintrag wird dann entsprechend geändert - falls schon vorhanden - oder neu hinzugefügt - falls er noch nicht da war.
B) Man will diesen Eintrag löschen. In dem Fall schreibt man ein "DEL:" davor. So etwa:
Code: Select all
DEL:user_pref("network.proxy.backup.ftp", "");
DEL:user_pref("network.proxy.backup.ftp_port", 0);
DEL:user_pref("network.proxy.backup.socks", "");
Dabei ist der Wert der da drinsteht egal, denn das Skript such nur nach dem Zeilenanfang bis zum ersten ",".
Die Zeile wird dann entfernt.
Da die "prefs.js" Datei erst nach einem Start des Firefox angelegt wird, startet das Skript den FF zunächst und schliesst den dann wieder. Sodann wird aus der entsprechenden INI-Datei der Pfad zu der "Prefs.js" ermittelt.
Und diese dann angepasst.
Es wird eine Commandline akzeptiert, mit der man zwischen zwei Zuständen umschalten kann. In dem Fall wäre das "Proxy-an und Proxy-Aus. Der User hat dann zwei Shortcuts auf dem Desktop, einer davon hat einen Commandline-Parameter "ON", der andere nicht. Mit diesen Shortcuts kann er dann den Proxy an und aus schalten.
Code: Select all
' +++ main_Firefox-Config.rem +++
' Zweck:
' erstellt am: 18.03.2017
' von: Theo Gottwald
'========================
'#EXE:?path
'#SPI:ForceWrite
'#SPI:VBRun
'#SPI:NoAuto
'#SPI:x64
'#MAN:ra
'#INC:?path\Proxy_on.txt
'#INC:?path\Proxy_off.txt
DWP\5
VAR\$$EMP=
' Select Proxies on or off here using commandline-Argument
VAR\$$CMD=$ev2$
VBT\$$CMD
VTU\$$CMD
IVC\$$CMD|ON
VAR\$$PXA=?path\Proxy_on.txt
ELSE
VAR\$$PXA=?path\Proxy_off.txt
EVC\
' Zuerst FF straten und Schliessen
NAI\Mozilla Firefox 52.0 ESR (x64 de)
GOTO enx
ELSE
' Muss einmal gestartet sein damit Config-Datei existiert, Installationspfad ist dank NAI\ bereits in $v5$
VAR\$$PAT=$v5$\firefox.exe
EXE\$$PAT
STW\mozillawindowclass\- mozilla firefox|w30
CLW\1
CAW\mozillawindowclass\- mozilla firefox
EAI\
' Pfad zu %APPDATA% besorgen
SFP\(user)\Application Data
VAR\$$APP=$v4$
VAR\$$FIF=\Data\profile\prefs.js
' Beispiel: C:\Users\Admin\AppData\Roaming\Mozilla\Firefox
VAR\$$FIA=$$APPMozilla\Firefox
VAR\$$FIB=$$FIA\profiles.ini
NEF\$$PXA
GOTO enx
ELSE
CFF\$$PXA>$$TEX
EEF\
NEF\$$FIB
GOTO enx
EEF\
FOR\$$LOP|0|99
VAR\$$SEC=Profile$$LOP
VAR\$$KEY=Path
CFI\$$FIB|$$SEC|$$KEY>$$RES
' Falls Profil nicht existiert
IVV\$$RES=
GOTO enx
EVV\
VAR\$$FID=$$RES
' Testen ob relativer Pfad
VAR\$$KEY=IsRelative
CFI\$$FIB|$$SEC|$$KEY>$$RES
IVV\$$RES=1
VAR\$$FIC=$$FIA\$$FID
ELSE
VAR\$$FIC=$$FID
EVV\
VAR\$$FIL=$$FIE
VAR\$$FIE=$$FIC\prefs.js
NEF\$$FIE
VAR\$$FIE=$$FIL
GOTO enx
ELSE
CFF\$$FIE>$$PRF
EEF\
GSB\DoProfile
NXT\
:enx
CTF\$$FIE<$$PRF
MBX\OK
@
'-----------------------------------------------------------
'-----------------------------------------------------------
' Eingabe ist
' $$FIC - Pfad des Profils, darinnen ist die prefs.js
' $$FIE - Pfade der prefs.js
:DoProfile
FEL\$$TEX|DoPatch|$$LIN
RET\
'-----------------------------------------------------------
:DoPatch
VBT\$$LIN
GSL\$$LIN>$$LEN
JIZ\$$LEN|enz
GSS\1,4|$$LIN>$$DEL
VTU\$$DEL
VBT\$$DEL
IVV\$$DEL=DEL:
VAR\$$DEL=1
GSS\5,0|$$LIN>$$LIN
ELSE
VAR\$$DEL=0
EVV\
' Alles links vom ersten "," holen
BLC\$$LIN|,
VAR\$$PAA=$v1$
IVV\$$DEL=1
RPL\$$PRF|$$PAA|$$EMP
ELSE
IVC\$$PRF|$$PAA
RPL\$$PRF|$$PAA|$$LIN
ELSE
' Not exist append to file
VAR\$$PRF=$$PRF$crlf$$$LIN
EVC\
EVV\
:enz
@
'-----------------------------------------------------------