1. Nachrichten
  2. Forum
    1. Unerledigte Themen
    2. Forenregeln
  3. Spenden
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. camp-firefox.de
  2. Mira_Belle

Beiträge von Mira_Belle

  • Profilmanager

    • Mira_Belle
    • 14. Mai 2026 um 15:21
    Zitat von FuchsFan

    Mira_Belle Den Link hast du gesehen?

    Keine Antwort, ...

    Oh, Sorry!!
    Doch, doch.
    Und gesichert und ausprobiert habe ich diese portable Versionen auch schon.

    Danke, vielen, vielen Dank dafür!
    Entschuldige.
    Bin schon halb in Berlin, zumindest mit den Gedanken.

    Zitat von 2002Andreas

    Dann viel Spaß bei egal was :thumbup:

    Schiller.

  • Profilmanager

    • Mira_Belle
    • 14. Mai 2026 um 14:53

    Danke an alle Beteiligten.
    Bin dann ab morgen in Berlin.
    Deshalb ist jetzt an dieser Stelle erst einmal Schluss.

    Und dann, nächste Woche, habe ich dann viel zu tun und auszuprobieren,
    bevor es mit dem Skript weiter geht.

  • Profilmanager

    • Mira_Belle
    • 14. Mai 2026 um 12:53

    FuchsFan Danke für den Link.

    Zitat von FuchsFan

    Übrigens,das erste Script, welches ich gezeigt habe, funktioniert in jeder Version, installiert oder portable.

    Es lag am "Loader", dass die Anwendungen auch nicht mit Deinem Skript funktionierten.
    Jetzt schaue ich mal, was ich die nächsten Tage aus den vielen Möglichkeiten mache.

    Hättest Du die PNG's für mich?

    Zitat von 2002Andreas

    Ich habe die zwar auch, aber mit anderen Namen

    Na, das sollte doch nicht wirklich ein Problem sein.

  • Profilmanager

    • Mira_Belle
    • 14. Mai 2026 um 12:16

    Ich habe in Fuchsfan's Skript das mal eingetragen, schaut so aus:

    Code
        // Portable Profile 
        addProfileItem(document, popup,
          "Portable Version 53.0 💛", "profile",
          "C:\\Portable-Firefox\\Firefox_53.0\\FirefoxStarter.exe",
          "file:///C:/FoxIcons/Finale.png"
        );
        addProfileItem(document, popup,
          "Portable Beta 💚", "profile",
          "C:\\Portable-Firefox\\Beta\\FirefoxStarter.exe",
          "file:///C:/FoxIcons/Beta.png"
        );
        addProfileItem(document, popup,
          "Portable Nigly 💜", "profile",
          "C:\\Portable-Firefox\\Nightly\\FirefoxStarter.exe",
          "file:///C:/FoxIcons/Nightly.png"
        );
    Alles anzeigen

    Funktioniert nicht!

    Auch wenn ich einen andere "Starter" verwenden will, funktioniert das nicht.
    Kann doch nicht am Pfad liegen? :/

    2002Andreas
    Hast Du die PNG's für mich?


    Danke Endor
    Das mit dem "Loader" war der entscheidend Tip!
    Nutze ich den "MultipleFirefoxLoader.exe", starten auch die Portablen:!:

    Ist das AutoIt?

    Bene - Pastebin.com
    Pastebin.com is the number one paste tool since 2002. Pastebin is a website where you can store text online for a set period of time.
    pastebin.com


    Dann würde ich den für eventuell mich "neu" machen, mit neuem Symbol.

  • Profilmanager

    • Mira_Belle
    • 14. Mai 2026 um 11:05

    FuchsFan Wie hast Du die portablen Versionen erstellt?
    Warum hast Du verschiedene Launcher.exe?

    Kannst Du mir mal eine komplette portable Version von Dir zukommen lassen?

    Ich habe zwar von 2002Andreas verschiedene Möglichkeiten bekommen,
    eine portable Version zu erstellen, aber diese lassen sich ums verrecken nicht aus "meinem",
    aber auch nicht aus "Deinem" Skript heraus starten!

    Um das Problem, dass das Skript z.Z. nicht in einer Protablen funktioniert, werde ich mir dann,
    bei Gelegenheit auch mal anschauen.

      2002Andreas Das werde ich berücksichtigen und mir auch bei Gelegenheit anschauen.
    Z.Z. nutze ich solche "unechten" Profile nicht. (Dient nur zur Unterscheidung!!)

  • Profilmanager

    • Mira_Belle
    • 14. Mai 2026 um 00:19

    Erste Etappe geschafft!

    Das Skript erstellt einen Button, der es ermöglicht alle Profile aller installierten Firefox Versionen,
    sei es eine Standardinstallation, eine Beta oder auch eine Nightly, zu starten.
    Für das erzeugte Menü wird die profiles.ini ausgelesen.
    Für die Zuordnung der EXE wird die compatibility.ini in den Profilen ausgelesen
    und dem Profil zugewiesen.

    JavaScript
    // QuickProfilesChangesButton.uc.js
    // Das Script erstellt einen Button, der den Profilmanager zur Auswahl einer weiteren Instanz öffnet.
    
    // Source file https://www.camp-firefox.de/forum/xxx
    
    /* ----------------------------------------------------------------------------------- */
    /*     Zu beachten ist, dass die Grafiken sich im richtigen Ordner befinden müssen     */
    /*            %appdata%\Mozilla\Firefox\Profiles\"Profilname"\chrome\icons             */
    /* ----------------------------------------------------------------------------------- */
    
    (function() {
    
      if (!window.gBrowser)
        return;
    
      const
      // ■■ START UserConfiguration ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
               id = 'aboutprofiles-Start', // Id des Buttons
            label = 'Profil zusätzlich starten', // Bezeichnung des Buttons
      tooltiptext = 'Zusätzliche Firefox-Profile starten',
      // Icon-------------------------------------------------------
             icon = 'profile.svg',  // [Name.Dateiendung] des Symbols
         iconPath = '/chrome/icons/', // Pfad zum Ordner der das Icon beinhaltet
      // ■■ END UserConfiguration ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
         popup_id = id + '-popup',
       curProfDir = PathUtils.toFileURI(PathUtils.join(PathUtils.profileDir)),
    
      // ── Basispfad für profiles.ini
         basePath = PathUtils.normalize(PathUtils.parent(PathUtils.parent(PathUtils.profileDir))),
         INI_PATH = basePath + "\\profiles.ini";
    
      //BUTTON
      try {
        CustomizableUI.createWidget({
          id: id,
          defaultArea: CustomizableUI.AREA_NAVBAR,
          label: label,
          tooltiptext: tooltiptext,
    
          onCreated: (button) => {
            button.style.MozContextProperties = 'fill, stroke, fill-opacity';
            button.style.listStyleImage = 'url("' + curProfDir + iconPath + icon + '")';
            button.style.minWidth = 'fit-content';
            button.style.color = '#ff5a79'; // Farbe für das SVG-Icon setzen   
          }
        });
    	} catch(e) {};
    
      // EXE-Pfad aus compatibility.ini eines Profils lesen
      function getFirefoxExeForProfile(profilePath) {
        try {
          const compatPath = profilePath + "\\compatibility.ini";
          let compatFile = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsIFile);
          compatFile.initWithPath(compatPath);
    
          if (!compatFile.exists()) return null;
    
          const parser = Cc["@mozilla.org/xpcom/ini-parser-factory;1"]
            .getService(Ci.nsIINIParserFactory)
            .createINIParser(compatFile);
          // Beispiel:
          // C:\Program Files\Firefox Nightly
          const platformDir = parser.getString("Compatibility", "LastPlatformDir");
    
          if (platformDir) return platformDir + "\\firefox.exe";
    
        } catch(e) {
          console.error("compatibility.ini Fehler für", profilePath, e
          );
        }
        return null;
      }
    
      // Absoluten Profilpfad aus profiles.ini berechnen
      function getAbsoluteProfilePath(iniParser, section) {
    
        const rawPath = iniParser.getString(section, "Path");
        let isRelative;
    
        try {
          isRelative = iniParser.getString(section, "IsRelative");
        } catch(e) {
          isRelative = "1";
        }
    
        if (!rawPath) return null;
        // Relativer Pfad
        if (isRelative === "1") {
          return PathUtils.normalize(basePath + "\\" + rawPath.replace(/\//g, "\\"));
        }
        // Absoluter Pfad
        return PathUtils.normalize(rawPath);
      }
    
      // Profil starten
      function startProfile(profileName, exePath) {
    
        // Fallback:
        // aktuell laufende Firefox-Installation
        if (!exePath) {
    
          const curDir = Services.dirsvc.get("GreBinD", Ci.nsIFile);
          exePath = curDir.path + "\\firefox.exe";
        }
    
        let file = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsIFile);
        file.initWithPath(exePath);
    
        if (!file.exists()) {
    
          console.error("Firefox EXE nicht gefunden:", exePath);
          return;
        }
    
        let args = ["-no-remote", "-P", profileName || ""];
        let process = Cc["@mozilla.org/process/util;1"].createInstance(Ci.nsIProcess);
        process.init(file);
        process.run(false, args, args.length);
      }
    
      // Menüeintrag erstellen
      function addProfileItem(aDocument, menupopup, label, profileName, exePath) {
        const xulNS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
        let item = aDocument.createElementNS(xulNS, "menuitem");
        item.setAttribute("label", label);
    
        if (profileName !== undefined) {
          // Tooltip zeigt EXE
          item.setAttribute("tooltiptext",exePath || "Standard-EXE");
          item.addEventListener("command", () => startProfile(profileName, exePath));
        }
        menupopup.appendChild(item);
      }
    
      // Profile aus profiles.ini laden
      function loadProfilesWithNiceNames(aDocument, menupopup) {
    
        try {
          let iniFile = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsIFile);
          iniFile.initWithPath(INI_PATH);
    
          if (!iniFile.exists()) {
            addProfileItem(aDocument, menupopup, "⚠️ profiles.ini fehlt");
            return;
          }
    
          const iniParser = Cc["@mozilla.org/xpcom/ini-parser-factory;1"]
            .getService(Ci.nsIINIParserFactory)
            .createINIParser(iniFile);
    
          for (let section of iniParser.getSections()) {
            if (!section.startsWith("Profile")) continue;
            let profileName;
    
            try {
              profileName = iniParser.getString(section, "Name");
            } catch(e) {
              profileName = section.replace("Profile", "");
            }
            // Profilpfad
            const profilePath = getAbsoluteProfilePath(iniParser,section);
            // EXE aus compatibility.ini
            let exePath = null;
    
            if (profilePath) {
              exePath = getFirefoxExeForProfile(profilePath);
            }
            // Anzeigename
            let displayLabel = profileName;
    
            if (exePath) {
              const parts = exePath
                  .replace(/\\firefox\.exe$/i, "")
                  .split("\\");
    
              const folder = parts[parts.length - 1]; displayLabel += "  →  " + folder;
            }
            addProfileItem(aDocument, menupopup, displayLabel, profileName, exePath);
          }
        } catch(e) {
          console.error("Fehler beim Laden der Profile:", e);
          addProfileItem(aDocument, menupopup, "⚠️ Fehler beim Laden der Profile");
        }
      }
    
      // Popup erstellen oder aktualisieren
      function buildPopupIfNeeded() {
        const button = document.getElementById(id);
        if (!button) return null;
    
        const xulNS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
        let popup = document.getElementById(popup_id);
    
        if (!popup) {
          popup = document.createElementNS(xulNS, "menupopup");
          popup.setAttribute("id", popup_id);
          button.appendChild(popup);
        } else {
          // Vorherige Inhalte löschen
          popup.textContent = "";
        }
    
        loadProfilesWithNiceNames(document, popup);
        return popup;
      }
    
      // Button-Klick behandeln (nur Linksklick)
      function click_button() {
        const button = document.getElementById(id);
        if (!button) return;
        // Nur EINMAL Listener registrieren
        if (button.hasAttribute("listener-added")) return;
        button.setAttribute("listener-added", "true");
        // Kontextmenü unterdrücken
        button.addEventListener("contextmenu", event => event.preventDefault());
        button.addEventListener("mousedown", event => {
          if (event.button !== 0) return; // Nur Linksklick (button 0 = linker Mausknopf)
          event.preventDefault();
          event.stopPropagation();
          const popup = buildPopupIfNeeded();
    
          if (!popup) return;
          // Hängende Popups verhindern
          try {
            popup.hidePopup();
          } catch(e) {}
    
          popup.openPopup(button, "after_start", 0, 0, false, false);
        });
      }
    
      // Stellt sicher, dass der Button und sein Event-Listener (click_button) so früh wie möglich im Fenster initialisiert werden.
      // Unabhängig davon, ob das Fenster bereits vollständig geladen ist oder nicht!
      function initForWindow() {
        const init = () => setTimeout(click_button, 300);
        if (document.readyState !== "loading") {
          init();
        } else {
          window.addEventListener("DOMContentLoaded", init);
        }
      }
    
      // Initialisierung
      initForWindow();
      // Nach Toolbar-Anpassung erneut aktivieren
      window.addEventListener('aftercustomization', () => setTimeout(click_button, 100));
    
    })();
    Alles anzeigen
  • Profilmanager

    • Mira_Belle
    • 13. Mai 2026 um 20:29

    .DeJaVu Ich nehme an, Du hast nicht alles gelesen.

    Zitat von .DeJaVu

    Was ist denn so schwer daran, firefox -p <profilname" aufzurufen und dennoch profiles.ini und installs.ini zu nutzen?

    Eigentlich nichts!
    Nur müsste ich ja dann für jedes Profil eine eigene Verknüpfung anlegen, wo auch immer!
    So mache ich es z.Z. mit der Nightly.

    Das Ziel, welches ich mir gesteckt habe ist, nicht nur ein X-belibiges Profil zusätzlich zustarten,
    was ja mit dem Skript schon prima funktioniert,
    sondern eben auch die Nightly, die ach eventuell mehrere Profile hat.
    Angemerkt sei noch, dass die Nightly installiert ist.

    Sicher könnte ich das auch "hardcoden", aber das ist doch langweilig.
    Das wäre dann z.B. so ein Aufruf => "C:\Program Files\Firefox Nightly\firefox.exe" -P "Nightly" (oder so ähnlich).
    Aber dann müssten andere, die eventuell auch das Skript nutzen wollen, es erst einmal für sich anpassen.

    Ok, in erster Linie mache ich es ja für mich, aber es soll dann in der Anwendung einfach sein, es zu nutzen.

  • Profilmanager

    • Mira_Belle
    • 13. Mai 2026 um 20:08

    Danke.
    Habe mir so einige Versionen nach Anleitung portabel gemacht.

    Die sind ja nur zum Testen!

    Mein erstes Problem ist, die installierte Nichtly zum Laufen zubekommen.
    Und zwar per Skript!

    Meine Idee, die compatibility.ini im Profilordner auslesen und eben das richtige Programm zu starten!

    Wenn ich das irgendwann geschafft habe, geht es an portable Versionen.
    Aber das wird noch dauern.

  • Profilmanager

    • Mira_Belle
    • 13. Mai 2026 um 19:13

    Ok, ich bedanke mich dann erst einmal für diese Informationen!

    Wo kann ich denn portable Firefoxversionen herbekommen?

    Ich hätte da ganz gerne einen sehr alten Fuchs, die derzeitige Beta, die Nightly
    und eventuell noch eine Version so z.B. die 140.

  • Profilmanager

    • Mira_Belle
    • 13. Mai 2026 um 18:44

    Und die Portablen erstellen da kein Profil?

    Die Nightly ist bei Dir auch eine Portable?

  • Profilmanager

    • Mira_Belle
    • 13. Mai 2026 um 18:15

    Es gibt nun einen "Zwischenstand"!
    Der die Ausgangsbasis für ein neues Skript "Profil Changer" bilden wird.

    Code
    (function() {
    
      if (!window.gBrowser)
        return;
    
      const
      // ■■ START UserConfiguration ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
               id = 'aboutprofiles-Start', // Id des Buttons
            label = 'Profil zusätzlich starten', // Bezeichnung des Buttons
      tooltiptext = 'Zusätzliche Firefox-Profile starten',
      // Icon-------------------------------------------------------
             icon = 'default-browser-red.svg',  // [Name.Dateiendung] des Symbols
         iconPath = '/chrome/icons/', // Pfad zum Ordner der das Icon beinhaltet
      // ■■ END UserConfiguration ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
         popup_id = id + '-popup',
       curProfDir = PathUtils.toFileURI(PathUtils.join(PathUtils.profileDir));
    
     // const POPUP_ID = id + '-popup'; popup-id
    
      //BUTTON
      try {
        CustomizableUI.createWidget({
          id: id,
          defaultArea: CustomizableUI.AREA_NAVBAR,
          label: label,
          tooltiptext: tooltiptext,
    
          onCreated: (button) => {
            button.style.MozContextProperties = 'fill, stroke, fill-opacity';
            button.style.listStyleImage = 'url("' + curProfDir + iconPath + icon + '")';
            button.style.minWidth = 'fit-content';
          //  button.style.color = '#ff5a79'; // Farbe für das SVG-Icon setzen   
          }
        });
    	} catch(e) {};
    
      // Profil starten
      function startProfile(profileName) {
        let file = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsIFile);
        let args = ["-no-remote", "-P", profileName || "", "-foreground"];
        file.initWithPath("C:\\Program Files\\Mozilla Firefox\\firefox.exe"); // 64-Bit
    
        let process = Cc["@mozilla.org/process/util;1"].createInstance(Ci.nsIProcess);
        process.init(file);
        process.run(false, args, args.length);
      }
    
      // Menüeintrag erstellen
      function addProfileItem(aDocument, menupopup, label, profileName) {
        const xulNS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
        let item = aDocument.createElementNS(xulNS, "menuitem");
        item.setAttribute("label", label);
        item.addEventListener("command", () => startProfile(profileName));
        menupopup.appendChild(item);
      }
    
      // Profile aus profiles.ini laden
      function loadProfilesWithNiceNames(aDocument, menupopup) {
        const pfad = PathUtils.normalize(PathUtils.parent(PathUtils.parent(PathUtils.profileDir)));
        const INI_PATH = pfad + "\\profiles.ini";
    
        try {
          let iniFile = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsIFile);
          iniFile.initWithPath(INI_PATH);
    
          if (!iniFile.exists()) {
            addProfileItem(aDocument, menupopup, "❌ profiles.ini fehlt");
            return;
          }
    
          const iniParser = Cc["@mozilla.org/xpcom/ini-parser-factory;1"]
            .getService(Ci.nsIINIParserFactory)
            .createINIParser(iniFile);
    
          for (let section of iniParser.getSections()) {
            if (!section.startsWith("Profile")) continue;
            let profileNameRaw = iniParser.getString(section, "Name") || section.replace("Profile", "");
            addProfileItem(aDocument, menupopup, profileNameRaw, profileNameRaw);
          }
        } catch (e) {
        addProfileItem(aDocument, menupopup, "❌ Fehler beim Laden der Profile");
        }
      }
    
      // Popup erstellen oder aktualisieren
      function buildPopupIfNeeded() {
        const button = document.getElementById(id);
        if (!button) return null;
    
        const xulNS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
        let popup = document.getElementById(popup_id);
    
        if (!popup) {
          popup = document.createElementNS(xulNS, "menupopup");
          popup.setAttribute("id", popup_id);
          button.appendChild(popup);
        } else {
          popup.textContent = "";
        }
    
        loadProfilesWithNiceNames(document, popup);
        return popup;
      }
    
      // Button-Klick behandeln (nur Linksklick)
      function click_button() {
        const button = document.getElementById(id);
        if (!button) return;
        if (button.hasAttribute("listener-added")) return;
        button.setAttribute("listener-added", "true");
        // Kontextmenü unterdrücken
        button.addEventListener("contextmenu", event => event.preventDefault());
        button.addEventListener("click", event => {
          if (event.button !== 0) return; // Nur Linksklick (button 0 = linker Mausknopf)
          event.preventDefault();
          event.stopPropagation();
          const popup = buildPopupIfNeeded();
          if (popup) popup.openPopup(button, "after_start", 0, 0, false, false);
        });
      }
    
      // Stellt sicher, dass der Button und sein Event-Listener (click_button) so früh wie möglich im Fenster initialisiert werden.
      // Unabhängig davon, ob das Fenster bereits vollständig geladen ist oder nicht!
      function initForWindow() {
        const init = () => setTimeout(click_button, 300);
        if (document.readyState !== "loading") {
          init();
        } else {
          window.addEventListener("DOMContentLoaded", init);
        }
      }
    
      // Initialisierung
      initForWindow();
      window.addEventListener('aftercustomization', () => setTimeout(click_button, 100));
    
    })();
    Alles anzeigen


    2002Andreas Aber ich brauche nun weitere Informationen!
    Du nutzt doch noch weitere Firefox Installationen?
    Oder nur weitere Portable?
    Laegen all diese Füchse unter "%APPDATA%\Mozilla\Firefox\Profiles"
    "eigene" Profile an?

    Wenn ja, kannst Du mal schauen, ob sich in den jeweiligen Profilen eine compatibility.ini befindet.
    Steht da immer der passende Pfad zum "richtigen" Fuchs drinnen?

    Also in meinem Standardprofil steht da z.B.

    Code
    [Compatibility]
    LastVersion=150.0.3_20260511200624/20260511200624
    LastOSABI=WINNT_x86_64-msvc
    LastPlatformDir=C:\Program Files\Mozilla Firefox
    LastAppDir=C:\Program Files\Mozilla Firefox\browser

    Im Profil für die Nighty:

    Code
    [Compatibility]
    LastVersion=152.0a1_20260512090214/20260512090214
    LastOSABI=WINNT_x86_64-msvc
    LastPlatformDir=C:\Program Files\Firefox Nightly
    LastAppDir=C:\Program Files\Firefox Nightly\browser


    Wenn dem so ist, ließe sich diese Datei auslesen und die Profile dann dementsprechend mit dem dazugehörenden
    Fuchs starten.

    Wenn es so ist, wie ich vermute, mache ich einen neuen Thread auf, für das neue Skript.

  • Profilmanager

    • Mira_Belle
    • 12. Mai 2026 um 22:15
    Zitat von FuchsFan

    Wie ich oben angab, die installierten Versionen werden über die profiles.ini automatisch ausgelesen und übernommen.

    Habe ich auch schon gemerkt.
    Und da liegt auch "mein" Problem,
    denn das Profil der Nightly wird ja auch angezeigt und ist dann eben nicht nutzbar, da nicht mit der Nightly verknüpft.

    Bin aber gerade dabei das (Dein Skript) zu zerpflücken.
    Noch ist mir nicht alles klar.

  • Profilmanager

    • Mira_Belle
    • 12. Mai 2026 um 20:56

    FuchsFan Du hast mich auf eine Idee gebracht! Danke.

    Da das alles ja nicht mehr so einfach mit dem Profilmanager funktioniert,
    wird es ein neues Skript geben.

    Die Idee, Button öffnet ein Auswahlmenü.
    Angeklickt wird einfach "nur" das "Profil"!
    Im Script wird aber dann für die Nightly so etwas "C:\\Program Files\\Firefox Nightly\\firefox.exe -P Nightly -foreground", aufgerufen.
    Werd ich noch testen wie das genau funktioniert!

  • Profilmanager

    • Mira_Belle
    • 12. Mai 2026 um 18:59

    2002Andreas Aber wenn ich da "C:\Program Files\Firefox Nightly\firefox.exe" -P "umilg7ve.Nightly" eintrage,
    startet der Profilmanager von der Nightly!

    Es muss schon "C:\Program Files\Firefox Nightly\firefox.exe" --profile "%APPDATA%\Mozilla\Firefox\Profiles\umilg7ve.Nightly"
    sein!


    Zitat von milupo

    Du willst das gleiche Profil mit dem finalen Firefox und dem Nightly nutzen. Das wird standardmäßig verhindert, deswegen kommt die Meldung. Du musst da unterschiedliche Profile verwenden.

    Äh, nein, eigentlich nicht!
    Mit dem Skript wird der Profilmanager geöffnet.
    Wenn ich dort nun ein anderes Profil auswähle, wird eine neue Instanz gestartet, also ein neues Fenster,
    aber eben mit dem ausgewählten Profil!
    Bis Version 149, bzw. ich glaube Nightly 151, war das überhaupt kein Problem.
    Es scheint, als dass Mozilla da etwas an den Profilmanagern geändert hat!

    Überhaupt ist da so einiges "NEU"!
    Die Nightly hat seit neuestem einen Launcher auf dem Desctop abgelegt!
    Habe ich durch eine Verknüpfung ersetzt!
    Nun kann ich eben im Nightly per Script komischerweise auch die "normalen" Profile nutzen,
    ohne dass die mir zerschossen werden!

    Hier mal das Skript, dass so in der Standardkonfiguration aber auch im Nightly genutzt wird (werden soll).

    Code
    // QuickProfilesChangesButton.uc.js
    // Das Script erstellt einen Button, der den Profilmanager zur Auswahl einer weiteren Instans öffnet.
    
    // Source file https://www.camp-firefox.de/forum/thema/140072/?postID=1282691#post1282691
    
    /* ----------------------------------------------------------------------------------- */
    /*     Zu beachten ist, dass die Grafiken sich im richtigen Ordner befinden müssen     */
    /*            %appdata%\Mozilla\Firefox\Profiles\"Profilname"\chrome\icons             */
    /* ----------------------------------------------------------------------------------- */
    
    (function() {
    
      if (location.href !== 'chrome://browser/content/browser.xhtml')
        return;
    
      const
      // ■■ START UserConfiguration ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
               id = 'profileschange-button', // Id des Buttons
            label = 'Profil zusätzlich starten', // Bezeichnung des Buttons
      tooltiptext = 'Profile Changer',
      // Icon-------------------------------------------------------
             icon = 'profile.svg',  // [Name.Dateiendung] des Symbols
         iconPath = '/chrome/icons/', // Pfad zum Ordner der das Icon beinhaltet
      // ■■ END UserConfiguration ■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
      curProfDir = PathUtils.toFileURI(PathUtils.join(PathUtils.profileDir));
    
    	if (Services.prefs.getBoolPref('svg.context-properties.content.enabled') == false) {
    		Services.prefs.setBoolPref('svg.context-properties.content.enabled', true );
    	}
      //BUTTON
    	try {
        CustomizableUI.createWidget({
          id: id,
          defaultArea: CustomizableUI.AREA_NAVBAR,
          label: label,
          tooltiptext: tooltiptext,
    
          onCreated: (button) => {
            button.style.MozContextProperties = 'fill, stroke, fill-opacity';
            button.style.listStyleImage = 'url("' + curProfDir + iconPath + icon + '")';
            button.style.minWidth = 'fit-content';
            button.style.color = '#E0E0E0'; // Farbe für das SVG-Icon setzen
          }
        });
    	} catch(e) {};
    
    // click
      (function click_button() {
        const button = document.getElementById(id);
    
        if (button) {
          button.addEventListener('click', (event) => {
            if (event.button != 0) {
              return;
            }
            let file = Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsIFile);
            // let args = ["-no-remote", "-P", "Neu", "-foreground"]; // Profil wird ausgewählt
            let args = ["-no-remote", "-P", "-foreground"]; // Profilmanager aufrufen
            file.initWithPath("C:\\Program Files\\Mozilla Firefox\\firefox.exe"); // 64‑bit
            // file.initWithPath("C:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe"); // 32‑bit
            // file.initWithPath("/Applications/Firefox.app/Contents/MacOS/firefox"); // macOS
            let process = Cc["@mozilla.org/process/util;1"].createInstance(Ci.nsIProcess);
            process.init(file);
            process.run(false, args, args.length);
          });
        } else {
          setTimeout(click_button, 100);
        }
      })();
    
    })();
    Alles anzeigen
  • Profilmanager

    • Mira_Belle
    • 12. Mai 2026 um 18:27

    Sören Hentzschel Also, die Meldung erscheint,
    wenn ich aus dem Standardbrowser versuche das Nightlyprofil zu starten.
    Ok, ist wohl jetzt so!
    Ich müsse im Skript irgendwie etwas einbauen, dass dann eben die Nightly gestartet wird.
    Denke, das bekomme ich noch irgendwann hin.

    Wenn ich aus der Nightly "versehendlich" ein "normales" Profil gestartet habe,
    wird irgendetwas darin geändert!
    Es "läuft" in der Nightly erst einmal ganz normal!
    Starte ich aber den Standardbrowser und wähle dann das besagte Profil, bekomme ich dann auch diese Meldung!
    D.h. war es mein Standardprofil, ist es dahin!
    Ich kann es ja nicht mehr im Standardbrowser benutzen.

    Achja, für meine Desctopverknüpfung habe ich nun eine Lösung gefunden"

    "C:\Program Files\Firefox Nightly\firefox.exe" --profile "%APPDATA%\Mozilla\Firefox\Profiles\umilg7ve.Nightly" -no-remote"
    Im Eigenschaftsfenster unter Ziel eingetragen, startet die Nightly mit dem dazugehörenden Profil,
    ohne das der Profilmanager gestartet wird.

  • Profilmanager

    • Mira_Belle
    • 12. Mai 2026 um 17:19

    Ich hätte da eine Frage zu einem Skript, welches den Profilmanager aufruft!

    Unter Version 149 funktioniert es noch, dass ich, wenn ich den Profilmanager von 149 per Skript aufrief,
    dass ich da auch den Firefox Nightly starten konnte!
    Kein Profil wurde da geschreddert!

    Ich bin mir nicht sicher, ob es am Firefox Nightly liegt, oder am Update auf 150.
    Denke aber es liegt am Firefox Nightly!

    Versuche ich über den Profilmanager von Version 150 den Firefox Nightly zu starten, bekomme ich folgende Meldung.

    Starte ich direkt den Firefox Nightly, bzw. dessen Profilmanager, schreddert der das Profil, wenn es nicht das zur Firefox Nightly gehörende ist.

    Ich würde gerne das irgendwie beheben wollen.
    Entweder soll das Firefox Nightlyprofil gar nicht mehr im Profilmanager von Version 150 erscheinen,
    oder es muss eine andere Lösung her!
    Zu schnell habe ich sonst meine Installation zerschossen!
    Zum Glück habe ich aktuelle Backups, aber so wie es z.Z. ist, kann es nicht bleiben.

    Hat jemand eine Idee?
    Vorrangig, dass das Nightlyprofil gar nicht in der Auswahl des Profilmanagers von Version 150 erscheint.

    Und kann ich den Profilmanager der Nightly unabhängig vom Profilmanager der "normalen" Installation konfigurieren?

  • Diverse Scripte funktionieren nicht mehr in Nightly

    • Mira_Belle
    • 10. Mai 2026 um 20:57

    bege Du kannst in Deine Scripte eine "Weiche" einbauen, wo geprüft wird, ob noch ownerGlobal oder schon documentGlobal
    gebraucht wird.

    In etwa so:

    Beitrag

    RE: Diverse Scripte funktionieren nicht mehr in Nightly

    Danke milupo  

    Ich habe dann mal weiter mit dieser KI gearbeitet und es kam dabei ein Wrapper raus!
    Also eine Abfrage ob "event.target.ownerGlobal" bzw. "event.target.documentGlobal." genutzt wird!

    Vorher:

    (Quelltext, 6 Zeilen)

    Nachher:

    (Quelltext, 9 Zeilen)

    Somit funktionieren die Skripte jetzt und auch später, und ich muss dann nicht mehr basteln.
    Mira_Belle
    5. Mai 2026 um 20:23
  • Firefox ist Standard-Browser, aber beim Klick auf Links öffnet sich Edge

    • Mira_Belle
    • 10. Mai 2026 um 13:34
    Zitat von .DeJaVu

    Und wenn du was anderes behauptest, was du ja getan hast, dann sollte diese Falschdarstellung kritisiert werden. Punkt.

    Darfst Du, keine Frage!
    Es würde aber auch reichen, wenn Du einfach schreiben würdest, "Hey, Mira, Du liegst falsch, weil ... "
    Aber mir vorzuwerfen, wieder mal Bullshit, oder Mumpitz oder dergleichen, zu verbreiten, ist einfach doof!
    Du kannst es besser!

    Da wir aber z.Z. gar nicht wissen, aus welchem Programm guennie1 die Links aufruft,
    heißt es eh erst einmal abwarten und Tee trinken.

  • Firefox ist Standard-Browser, aber beim Klick auf Links öffnet sich Edge

    • Mira_Belle
    • 10. Mai 2026 um 09:10
    Zitat von .DeJaVu

    Und der übliche Mumpitz zu Windows 11. Lass es doch bitte einfach sein!

    Wenn Du es besser weißt, dann schreibe es!
    Aber unterlasse es, mich andauernd zu beleidigen, wenn ich Deiner Meinung falsch liege.
    Danke.

    Und zur Info => https://www.google.com/search?q=Links…+Edge%21&udm=14

    Deshalb meine Idee mit den Tools! Ist zwar eine Holzhammermethode, aber sie funktioniert!

  • Dank KI: Mozilla schließt 423 Sicherheitslücken in Firefox – nur im April 2026

    • Mira_Belle
    • 10. Mai 2026 um 08:49
    Zitat von .DeJaVu

    Wäre Claude auch was für unsere Javascript-"Spezies" hier was?

    Nö. Ich habe auch schon überlegt!
    Meine Gedanken dazu.
    Die Skripte laufen ja nur in der Browserengine,
    wenn diese Sicher ist, sollte es kein Problem sein.
    Wenn man aber aus dem I-Net irgendwie doch an diese Skripte herankommt
    und deren "Lücken" ausnutzen kann/könnte,
    wäre es eventuell besser ganz auf JS zu verzichten!

    Ich muss mich dieses Thema noch etwas schlauer machen
    und warte mal ab, was andere User so im Netz zu JS im Browser meinen.
    Und auch, was Sören Hentzschel dazu schreibt. ;)

    Netzfund!

    Code
    Ich schreibe professionell JS und bin auch ein Verfechter von Datenschutz und Sicherheit, daher kann ich diesen Punkt besonders genau beleuchten.
    
    Aus Sicherheitsgründen ist JavaScript ziemlich sicher. Angenommen, Sie sprechen davon im Kontext eines Webbrowsers, wird es in Sandboxen in Browser-Engines ausgeführt, die von Unternehmen unterstützt werden, die viel zu verlieren haben.
    
    Das heißt nicht, dass es perfekt ist (suchen Sie nach Chrome- und Firefox-Zero-Day-Schwachstellen, es gab vor kurzem einige), es gibt Exploits, die verwendet werden können, um beliebigen Code auf Ihrem lokalen Rechner auszuführen. Diese sind jedoch äußerst unwahrscheinlich, dass sie Sie jemals betreffen, und werden schnell gepatcht. Im Allgemeinen ist JavaScript sicher und zuverlässig. 

    Wenn Sören das in etwa bestätigen würde, denke ich, sind die UserScripte nicht wirklich das Problem.
    Aber klar, es wäre wünschenswert eine bessere KI zu haben, die speziell JS "kann" und diese Skripte
    dann sauberer und besser machen könnte.
    Bisher ist es ja eher so, dass der Fokus auf "funktioniert" oder "funktioniert eben nicht" liegt.

Unterstütze uns!

Jährlich (2026)

76,1 %

76,1% (589,79 von 775 EUR)

Jetzt spenden
  1. Kontakt
  2. Datenschutz
  3. Impressum
Community-Software: WoltLab Suite™
Mastodon