Hab eben etwas Zeit zum Spielen gehabt:
Gut gespielt, das gefällt mir auch. Ich sage Dankeschön!
Hab eben etwas Zeit zum Spielen gehabt:
Gut gespielt, das gefällt mir auch. Ich sage Dankeschön!
den Filenamen in diese Form zu bekommen:
Wichtig ist ja erst einmal, dass in Zeile 20 des Scriptes ein Pfad für die Speicherung vorgegeben wird. Dann hat Andreas hier RE: Icons in Hamburger-Menü und den anderen Menüs einbauen. eine Möglichkeit zur detailierten Kennung gezeigt.
In Deinem Fall müsste das dann in Zeile 47 so aussehen var archiveName = 'ProfileBU_' + ' ' + localnow + '.zip';
Probiere mal bitte.
Edit:
Das stimmt dann trotzdem nicht mit deinem Wunsch überein, die Datumsangabe bleibt bei der alten Anzeige. Da müssten andere User einspringen.
Ja, ich habe nur den Text im Script geändert.
Und das funktioniert. Danke!
Das ist wahrscheinlich, weil es ein Konversationsbeitrag von mir war.
Danke, milupo, das werde ich mal probieren.
Nur falls du das gleiche Problem wie Boersenfeger haben solltest.
Moin milupo!
Wird hier auch mit ...null...usw, bezeichnet. Stört mich nicht, denn ich habe ja für jeden Fox einen separaten Ordner für Sicherungen angelegt. Trotzdem würde mich jetzt mal die Lösung interessieren, aber wie Andreas schon zeigt, die Seite ist nicht aufrufbar.
Da ich das Base64-Icon bestimmt gegen eins auf Platte austauschen will
Du kannst doch das Original nehmen.
Das nehme ich doch dann auch gleich mal für meine port. Versionen, danke
Lang zu, alles umsonst zu haben.
Mal ehrlich, also ich verwende es schon eine ganze Weile, wenn Arbeiten (Basteleien, oder Updates auf neue Version) anliegen, Druck auf den Button, Profil gesichert.
Mache gerade vom ganzen "Profiles" ein ZIP-Datei
Betrachte dieses nicht als Störung deiner Arbeit, aber wenn du wieder richtig Zeit dafür hast, dann solltest du dir für solche Zwecke mal das folgende Script anschauen. Das erledigt diese Aufgabe automatisch auf Knopfdruck. Dafür wird ein Button angelegt in der Symbolleiste.
Wichtig ist die Zeile 20, wo du einen Pfad vorgeben musst, dort wird dann das betreffende Profil als zip-Datei gespeichert.
Sieht bei mir z.B. so aus: var path = "E:\\FirefoxProfile\\Arbeits-Fox\\";.
Auf Laufwerk E: ist ein Ordner FirefoxProfile angelegt, und dort ist der Unterordner Arbeits-Fox, in den dann die Datei gespeichert wird.
Ich nutze mehrere Firefox (portable), für jeden ist dann ein Ordner ausgewählt (mit entsprechendem Namen) .
Eventuell kannst du das Script ja verwenden, ich möchte es nicht mehr missen.
// ==UserScript==
// @name BackupProfile.uc.js
// @namespace BackupProfile.github.com
// @description Schaltfläche zum Sichern des Firefoxprofils
// @charset UTF-8
// @author ywzhaiqi、defpt
// @version v2018.01.10
// @note Vorlage Script von ywzhaiqi
// @note Sicherungsdatei enthaelt auch Profilname (v2017.12.23); Ersatz veralteter Funktionen (v2017.12.28b)
// @reviewURL http://bbs.kafan.cn/thread-1758785-1-1.html
(function () {
Components.utils.import("resource:///modules/CustomizableUI.jsm");
CustomizableUI.createWidget({
id : "Backup-button",
defaultArea : CustomizableUI.AREA_NAVBAR,
label : "Profilsicherung",
tooltiptext : "Sichern der aktuellen Konfiguration",
onClick: function(){
// Speicherort - Ordner festlegen - Sichern funktioniert nur wenn Speicherort- bzw. Ordner vorhanden ist!!
var path = "E:\\FirefoxProfile\\Arbeits-Fox\\";
// var path = "";
// Ausschlussliste
var excludes = 'bookmarkbackups *cache* crashes fftmp *healthreport* minidumps safebrowsing *webapps* saved-telemetry-pings *thumbnails* *session* *Telemetry* *hotfix* *.sqlite-shm *.sqlite-wal *.bak parent.lock blocklist.xml content-prefs.sqlite directoryLinks.json mimeTypes.rdf compatibility.ini parent.lock formhistory.sqlite';
if (!path) {
var nsIFilePicker = Ci.nsIFilePicker;
var FP = Cc['@mozilla.org/filepicker;1'].createInstance(nsIFilePicker);
FP.init(window, 'Sicherungspfad wählen', nsIFilePicker.modeGetFolder);
if (FP.show() == nsIFilePicker.returnOK) {
path = FP.file.path;
} else {
return false;
}
}
excludes = excludes.replace(/\./g, '\\.').replace(/\*/g, '.*').replace(/\s+/g, '|');
excludes = new RegExp(excludes, 'i');
var zw = Cc['@mozilla.org/zipwriter;1'].createInstance(Ci.nsIZipWriter);
var pr = {PR_RDONLY: 0x01, PR_WRONLY: 0x02, PR_RDWR: 0x04, PR_CREATE_FILE: 0x08, PR_APPEND: 0x10, PR_TRUNCATE: 0x20, PR_SYNC: 0x40, PR_EXCL: 0x80};
var fu = Cu.import('resource://gre/modules/FileUtils.jsm').FileUtils;
var dir = fu.getFile('ProfD', []);
var localnow = new Date().toLocaleString(); /*localnow = new Date().toISOString().slice(0,19); */
localnow = localnow.replace(/T/g, "_").replace(/\W+/g, "_");
var archiveName = 'Profil_' + bupgetCurrentProfileName()+ '_' + localnow + '.zip';
var xpi = fu.File(path + '\\' + archiveName);
zw.open(xpi, pr.PR_RDWR | pr.PR_CREATE_FILE | pr.PR_TRUNCATE);
var dirArr = [dir];
for (var i=0; i<dirArr.length; i++) {
var dirEntries = dirArr[i].directoryEntries;
while (dirEntries.hasMoreElements()) {
var entry = dirEntries.getNext().QueryInterface(Ci.nsIFile);
if (entry.path == xpi.path) {
continue;
}
if (entry.isDirectory()) {
dirArr.push(entry);
}
var relPath = entry.path.replace(dirArr[0].path, '');
if (relPath.match(excludes)) {
continue;
}
var saveInZipAs = relPath.substr(1);
saveInZipAs = saveInZipAs.replace(/\\/g,'/');
// Konfigurationsdateien können gesperrt werden
try {
zw.addEntryFile(saveInZipAs, Ci.nsIZipWriter.COMPRESSION_FASTEST, entry, false);
} catch (e) {}
}
}
zw.close();
alert('Die aktuelle Konfiguration wurde als:\n'+ archiveName +'\ngesichert in:\n' + path);
function alert(aString, aTitle) {
Cc['@mozilla.org/alerts-service;1'].getService(Ci.nsIAlertsService).showAlertNotification("", aTitle, aString, false, "", null);
}
function bupgetCurrentProfileName(){
function readFile(aFile){
var stream = Cc["@mozilla.org/network/file-input-stream;1"].createInstance(Ci.nsIFileInputStream); stream.init(aFile, 0x01, 0, 0);
var cvstream = Cc["@mozilla.org/intl/converter-input-stream;1"].createInstance(Ci.nsIConverterInputStream);
cvstream.init(stream, "UTF-8", 1024, Ci.nsIConverterInputStream.DEFAULT_REPLACEMENT_CHARACTER);
var content = "", data = {};
while (cvstream.readString(4096, data)) {
content += data.value;
}
cvstream.close();
return content.replace(/\r\n?/g, "\n");
}
var PrefD = Components.classes["@mozilla.org/file/directory_service;1"].getService(Components.interfaces.nsIProperties).get("PrefD", Components.interfaces.nsIFile);
var ini = Components.classes["@mozilla.org/file/directory_service;1"].getService(Components.interfaces.nsIProperties).get("AppRegD", Components.interfaces.nsIFile);
ini.append("profiles.ini");
var ini = readFile(ini);
var profiles = ini.match(/Name=.+/g);
var profilesD = ini.match(/Path=.+/g);
for ( var i = 0; i < profiles.length;i++) {
if ((profilesD[i]+"$").indexOf(PrefD.leafName+"$") >= 0) {
profiles[i].match(/Name=(.+)$/);
return RegExp.$1;
}
}
return null;
}
},
});
var cssStr = '@-moz-document url("chrome://browser/content/browser.xhtml"){'
+ '#Backup-button .toolbarbutton-icon {'
+ 'list-style-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1%2B%2FAAAABZ0RVh0Q3JlYXRpb24gVGltZQAwNC8xMS8wOGGVBZQAAAAcdEVYdFNvZnR3YXJlAEFkb2JlIEZpcmV3b3JrcyBDUzQGstOgAAABxklEQVQ4ja2UMUgbURjHfxeSFBzuBEuCkkAgIA5JDdzWohVnQe3UpRDE2UXpKKXdWro4ixlcdNJAydxiyHZkCIKIOEnLpZQSRFFz%2Bjqk73nvuDtb2j883nv%2F73u%2F%2B%2B69ewf%2FWUZgbgEFYDgiPw18B86An8DtQw%2BYdF1XRLVGoyGEEKJara4Bj0MKIhGYDxuGQVSTqtVqH0ql0uzvNzLigCQSicjmeZ7K63Q6u5VKZRoYigXGVWhZlpbbbrfrwKjfS4ZVGKVCoUCz2aTX65FOp6WdA04igf69CsqyLMrlctAWsRXGAf9EavXyFELEZT4A2TwYsLQKF%2BYXAJhb3VPep4%2BLzK3uqd7vS9Xr%2B2qsAW9u4eyoxcZSFoCVLZfTwxaA6v2xjaUsuYmnWrU60IOr%2FmD8etvl%2Fausikl%2FZcsFULEbD02hwPUdl7cvs1qiBAb9eOCdwdjEM2AABdh88wJA%2BbK%2FX6MDtVPmHyRPOfjRPfc87%2FPfgJLJ5AzwRc0BbNseB8a63e6TuKsXpnw%2BP5nJZAzgq%2BM4x3IPzwFM07woFovv%2Bv3%2BUDTiXqlU6tI0zQs%2FI%2FSe2bYt%2FyCPgJFA%2BAdwDeA4zrfg2l%2BwUqCoC1F3YQAAAABJRU5ErkJggg%3D%3D)'
+ '}}';
var sss = Cc["@mozilla.org/content/style-sheet-service;1"].getService(Ci.nsIStyleSheetService);
var ios = Cc["@mozilla.org/network/io-service;1"].getService(Ci.nsIIOService);
sss.loadAndRegisterSheet(ios.newURI("data:text/css;base64," + btoa(cssStr), null, null), sss.USER_SHEET);
})();
Alles anzeigen
Aber wozu?
Um Base64 in Image-Dateien umzuwandeln, so habe ich alle Menüs umgearbeitet. Nun sage nicht dass das auch mit kopieren über die Adressleiste geht, ja, ob ich nun den Code da einfüge oder da, ist mir völlig Wurscht.
wieder was gelernt.
Du hast Andreas vergessen.
Man muss keine Website besuchen
Man muss nicht, aber man kann.
Ich mach irgendwas falsch. es zeigt nichts an.
Der Code fängt hinter dem Komma an , also ab dem i und endet hinter ==.
Nicht mehr und nicht weniger, dann klappt es auch.
ich will wissen wie man es herausfindet.
...dann sage es doch
Diese Seite aufrufen (nur eine von vielen), und den Base64-Code einfügen, umwandeln lassen. Fertig!
Base64 to PNG | Image | Base64 Decode | Base64 Converter | Base64
welches dieses Background Icon ist?
Für den Übergang bis...
Du bist der Beste, dann mal schauen, wann offiziell der Eintrag wieder da ist. Danke!
Das reicht noch nicht, ein genaues Bild das mehr des drumherum abbildet.
Wenn es so i.O. ist?
Ok..also Freispruch dann
Danke, Euer Ehren.
Dein Screenshot in Beitrag Nr. 5 zeigt auch mehr/deutlicher was du meintest, als der aus Beitrag Nr.1
Gebe ich zu, das stimmt allerdings.
Aber zu meiner Verteidigung muss ich anfügen, im Thema (Überschrift) hatte ich vorsorglich den korrekten Namen für das Menü angegeben (versuche das jetzt immer zu machen, hatte schon mal Haue wegen Falschbezeichnung dafür bekommen ) .
das dort derzeit kein Text für label.toolbarbutton-text vorhanden ist
Danke, Ralf, werde ich weiter beobachten.
In der Tat, ich verwende das Menü nicht, also muss ich leider passen.
Macht doch überhaupt nichts, Leistungsanalyse gibt es ja auch erst mit der aktuellen Nightly-Version. Am Anfang war auch noch die Schrift da, öffne ich das Menü , so ist oben die Bezeichnung da.
Ich wollte auch nur wissen, ob es nur bei mir so ist, oder i.M. übergreifend aktuell bei allen vorkommt.
Hm, wie soll das Menü erreichbar sein?
Die Frage sagt mir dass ich wohl der alleinige Nutzer des Menüs bin.
Wenn ich Symbolleiste anpassen aufrufe, dann von links nach rechts in das Menü verschiebe, so erscheint nach Beendigung der Button mit den zwei Pfeilen. Damit rufe ich dann das Menü auf.