Aktuell funktionieren in der Nightly 140.0a1 (2025-04-29) (64-Bit) gar keine Skripte mehr!
Muss da was unter about:config umgestellt werden?
Mir war da so, aber ich finde den Beitrag nicht mehr.
Beiträge von Mira_Belle
-
-
Es ist vollbracht!
Das Skript führt die auf Endors Seite beschriebenen Schritte von alleine durch.Das Zip wird heruntergeladen und entpackt.
Und die entsprechenden Ordner angelegt und die Dateien abgelegt.Was mir fehlt, ein guter Name für das Skript
Ich habe es kurzerhand einfach "Firefox-JavaScript_install.ps1" genannt.
Danke .DeJaVuCode
Alles anzeigen# ==UserScript== # @name Firefox-JavaScript_install # @description Firefox-JavaScript_install.ps1 # @include ~ coming soon # @author TK87 @ supernature-forum.de # @version 2025/04/29 v.1.2 # ==/UserScript== #region SETTINGS Using NameSpace System.Management.Automation Using NameSpace System.Security.Principal Using NameSpace System.Windows.Forms Param([string]$User) Add-Type -AssemblyName System.Windows.Forms if (!$User) {$User = $Env:UserName} $ErrorActionPreference = 'stop' #endregion SETTINGS function CloseFirefoxMessage { $Form = [Form]@{StartPosition='CenterScreen'; AutoSize=$true; Padding='10,10,10,10'; BackColor='White'; ControlBox=$false; Size="10,10"; Text='Firefox beenden'; FormBorderStyle='FixedSingle'} $TLP = [TableLayoutPanel]@{Dock='Fill'; AutoSize=$true} $FLP = [FlowLayoutPanel]@{AutoSize=$true; Anchor="Bottom"} $Label = [Label]@{Text= "Firefox läuft derzeit. Bitte schließen Sie Firefox, bevor Sie fortfahren."; Font="Verdana,12"; AutoSize=$true; MaximumSize="400,300"} $Buttons = @( [Button]@{Text="Ok"; Size="80,30"; Font="Microsoft Sans Serif,10"; Margin="10,10,10,10"} [Button]@{Text="Abbruch"; Size="80,30"; Font="Microsoft Sans Serif,10"; Margin="10,10,10,10"} ) $Buttons.Add_Click({ $this.TopLevelControl.Hide() $this.TopLevelControl.Tag = $this.Text }) $FLP.Controls.AddRange($Buttons) $TLP.Controls.Add($Label) $TLP.Controls.Add($FLP) $Form.Controls.Add($TLP) return $Form } Function FF-Chooser { Param([Array]$items) $Form = [Form]@{StartPosition='CenterScreen'; Font='Verdana,12'; AutoSize=$true; Padding='10,10,10,10'; Size='1,1'; ControlBox=$false; BackColor='white'; FormBorderStyle='FixedSingle'} $TLP = [TableLayoutPanel]@{Dock='Fill'; AutoSize=$true} $Label = [Label]@{Text="Für welchen Firefox sollen die Anpassungen vorgenommen werden?"; AutoSize=$true; MaximumSize='500,500'; Font='Verdana, 14'; Margin='10,10,10,10'} $FLP = [FlowLayoutPanel]@{AutoSize=$true; Anchor='Bottom'} $TLP.SetColumnSpan($Label,3) $TLP.Controls.Add($Label,0,0) $i=1 foreach ($item in $items) { $checkbox = [CheckBox]@{Name=$item.DisplayName; AutoSize=$true; Size='1,1'; Anchor='Left'; Margin='40,10,10,10'} $icon = [Drawing.Icon]::ExtractAssociatedIcon(('{0}\Firefox.exe' -f $item.InstallLocation)) $panel = [Panel]@{Size='25,25'; Anchor='Left'; BackgroundImage=$icon; BackgroundImageLayout='zoom'} $Label = [Label]@{Text=$item.DisplayName; Anchor='Left'; AutoSize=$true} $TLP.Controls.Add($checkbox,0,$i) $TLP.Controls.Add($panel,1,$i) $TLP.Controls.Add($label,2,$i) $i++ } $Buttons = @( [Button]@{Text='Ok'; Size='100,40'; Margin='10,10,10,10'; Font='Microsoft Sans Serif,11'} [Button]@{Text='Abbruch'; Size='100,40'; Margin='10,10,10,10'; Font='Microsoft Sans Serif,11'} ) $Buttons.Add_Click({$this.ToplevelControl.Hide(); $this.ToplevelControl.Tag = $this.Text}) $TLP.SetColumnSpan($FLP,3) $FLP.Controls.AddRange($Buttons) $TLP.Controls.Add($FLP,0,$i) $Form.Controls.Add($TLP) return $Form } try { # 1. Prüfen, ob Firefox installiert ist $FFs = '','Wow6432Node\'|%{gp "HKLM:\Software\${_}Microsoft\Windows\CurrentVersion\Uninstall\*"} |?{$_.Publisher -eq 'Mozilla' -and $_.DisplayName -match 'Firefox|Nightly'} if (!$FFs) { throw [NotSupportedException]::new('Firefox ist nicht installiert.') } # 2. Prüfen, ob mit Administrator-Rechten gestartet if (![WindowsPrincipal]::new([WindowsIdentity]::GetCurrent()).IsInRole(544)) { # Skript als Administrator neustarten... try { # Bei Ausführung unter Powershell... if ($MyInvocation.MyCommand.CommandType -eq "ExternalScript"){Start -Verb RunAs Powershell -ArgumentList ('-NoLogo -File "{0}" "{1}"' -f $MyInvocation.MyCommand.Definition,$Env:UserName)} # Bei Ausführung als EXE umgewandelt... else {Start -Verb RunAs ([Environment]::GetCommandLineArgs()[0]) -ArgumentList "$User"} } catch {} return } # 3. Prüfen, ob mehrere Installationen vorhanden $FFids = '','Wow6432Node\'|%{gp "HKLM:\Software\${_}Mozilla\Firefox\TaskBarIDs"|%{$_.PsObject.Properties}}|Select -unique If ($FFs.Count){ $Form = FF-Chooser $FFs [void]$Form.ShowDialog() $Checkbox = $Form.Controls[0].Controls|?{$_ -is 'checkbox' -and $_.Checked} if ($Form.Tag -eq 'Abbruch' -or !$Checkbox) {return} $FF = Foreach ($item in $Checkbox.Name) { $FFs|? DisplayName -eq $item|%{@{ Name = $_.DisplayName Location = $_.InstallLocation Id = $FFids | ? Name -eq $_.InstallLocation |%{$_.Value} }} } } else { $FF = @(@{ Name = $FFs.DisplayName Location = $FFs.InstallLocation Id = $FFids.PsObject.Properties | ? Name -eq $FFs.InstallLocation |%{$_.Value} }) } # 4. Prüfen, ob Firefox läuft try { Get-Process Firefox | Out-Null $Form = CloseFirefoxMessage do { [void]$Form.ShowDialog() if ($Form.Tag -eq "Abbruch") {return} } until (!(Get-Process FireFox)) } catch {} # 4. ZIP herunterladen und entpacken $tempDir = "$ENV:Temp\{0}" -f (New-Guid).Guid md $tempDir | Out-Null $zipUrl = "https://raw.githubusercontent.com/Endor8/userChrome.js/master/userChrome/Dateien/firefox-anpassungen.zip" $zipPath = "$tempDir\firefox-anpassungen.zip" Write-Host -NoNewLine "Firefox-Anpassungen werden heruntergeladen... " [System.Net.WebClient]::new().DownloadFile($zipUrl,$zipPath) Write-Host -ForegroundColor Green "ok." Write-Host -NoNewLine "Archiv wird entpackt... " Expand-Archive -Path $zipPath -DestinationPath $tempDir -Force Write-Host -ForegroundColor Green "ok." # Install-Ini lesen $ini = @{} foreach ($line in Get-Content "C:\Users\$user\Appdata\Roaming\Mozilla\Firefox\installs.ini") { switch -RegEx ($line) { '^\[(.+)\]$' {$section=$Matches[1]; $ini.$section=@{}} '^(.+)=(.*)' {$key,$value=$Matches[1,2]; $ini.$section.$key=$value} } } # Datei kopieren foreach ($item in $FF) { "" Write-Host ('Beginne Kopiervorgang für: {0}' -f $item.Name) $FF_location = $item.Location Write-Host -NoNewLine "Datei 'config-prefs.js' wird ins Firefox-Verzeichnis kopiert... " Copy-Item -Path "$tempDir\config-prefs.js" -Destination "$FF_location\defaults\pref" Write-Host -ForegroundColor Green 'ok.' # Zielordner userChromeJS erstellen, falls nicht vorhanden if (!(Test-Path "$FF_location\userChromeJS")) { Write-Host -NoNewLine "Zielordner 'userChromeJS' wird erstellt... " md "$FF_location\userChromeJS" | Out-Null Write-Host -ForegroundColor Green 'ok.' } # Dateien einzeln kopieren foreach ($file in "main.js","Readme.txt","utilities.js") { if (Test-Path "$tempDir\userChromeJS\$file") { Write-Host -NoNewLine "Datei '$file' wird kopiert... " Copy-Item -Path "$tempDir\userChromeJS\$file" -Destination "$FF_location\userChromeJS" Write-Host -ForegroundColor Green "ok." } else { Write-Warning "Datei '$file' wurde nicht gefunden und wird übersprungen." } } # Datei kopieren Write-Host -NoNewLine "Datei 'config.js' wird ins Firefox-Verzeichnis kopiert... " Copy-Item -Path "$tempDir\config.js" -Destination $FF_location Write-Host -ForegroundColor Green "ok." # Profilordner finden $profilePath = $ini.GetEnumerator() |? Key -eq $item.id|%{ if ([System.IO.Path]::IsPathRooted($_.Value.Default)){$_.Value.Default} else {"C:\Users\$user\Appdata\Roaming\Mozilla\Firefox\"+$_.Value.Default} Write-Host ("Standardprofilordner: {0}" -f $_.Value.Default) } if (!$profilePath) { Write-Warning ("Das Standardprofil für '{0}' konnte nicht gefunden werden und wird übersprungen" -f $item.Name) continue } # chrome-Ordner erstellen, falls nicht vorhanden if (!(Test-Path "$profilePath\chrome")) { Write-Host -NoNewLine "Ordner 'chrome' wird erstellt..." md "$profilePath\chrome" | Out-Null Write-Host -ForegroundColor green "ok." } # userChrome.js kopieren Write-Host -NoNewLine "Datei 'userChrome.js' wird kopiert... " Copy-Item -Path "$tempDir\chrome\userChrome.js" -Destination "$profilePath\chrome" Write-Host -ForegroundColor Green "ok." } Write-Host -ForegroundColor Green "Der Vorgang wurde erfolgreich abgeschlossen." } catch [NotSupportedException] { Write-Warning $_.Exception.Message } catch { Write-Host -ForegroundColor Red $_.Exception.Message } if ($tempDir -and (Test-Path $tempDir)) {remove-item -force -recurse $tempDir} Write-Host -NoNewLine -ForegroundColor Yellow "`n--- Beliebige Taste zum Beenden ---" [void][console]::ReadKey($true) # MIT License # # Copyright (c) 2025 TK87 @ camp-firefox.de # # Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal # in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell # copies of the Software, and to permit persons to whom the Software is furnished to do so. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS # FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, # WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
.DeJaVu Magst Du mir auf die Sprünge helfen?
Die "profiles.ini" auf Default=1 abzufragen, ergibt keinen Sinn.
Hat der Nutzer keine andere Firefoxversion installiert, gibt es diesen einfach nicht.Hat der User z.B. zwei Profile, kann die "profiles.ini" so aussehen:
Code
Alles anzeigen[Install308046B0AF4A39CB] Default=Profiles/Testumgebung Locked=1 [Profile1] Name=Testumgebung IsRelative=1 Path=Profiles/Testumgebung [Profile0] Name=Mira IsRelative=1 Path=Profiles/Mira [General] StartWithLastProfile=0 Version=2
Auch hier habe ich das Problem, dass ich nicht weiß, wie ich an das Standardprofil, in diesem Fall "Mira", heran komme.
Um eine Abfrage, ob es sich um eine "normale" Installation handelt,
also ohne parallel laufenden Versionen,
könnte ja auch die "install.ini" abfragenCode[6F193CCC56814779] Default=Profiles/790r9b33.Nightly Locked=1 [308046B0AF4A39CB] Default=Profiles/Mira Locked=1
und wenn mehr als ein [xxxxxx] vorkommt einfach das Skript mit Meldung stoppen.
(x seht als Platzhalter)
-
.DeJaVu Ich habe nicht das Handtuch geworfen!
Es gibt ein Skript, aber es hat noch den einen oder anderen Bug!
Z.Z. klappt es mit dem Profilordner nicht so!
B,z.w. dem Auslesen der "profiles.ini". -
apollo_13 Einen Link wäre gar nicht schlecht, ab besten genau zu dieser Page.
-
Horstmann Das Skript wird definitiv nur für Windows sein!
Es soll recht einfach sein, d.h. es soll, es muss nichts am Skript geändert werden.
Einfach anklicken, warten, fertig.
Danach sollen JS-Dateien einfach genutzt werden können.ich dachte das suggeriert einen Diskussionswunsch.
Jain. Codebeispiele, oder auch Anmerkungen zum "Ablaufplan", gerne.
-
-
Hi, das Projekt ist abgeschlossen.
Ich werde das Skript irgendwann, wenn ich einen Versuchsaufbau habe, ausprobieren.
Wer es ausprobieren möchte, auf eigene Gefahr
Kann es bei mir anfordern.
Wäre eventuell schön, wenn jemand der sich (auch) mit PowerShell auskennt,
mal einen Blick drauf wirft.
Es muss ja nicht gleich getestet werden, wobei das echt klasse wäre. -
Solltest du vorhaben, es selektiv über private Nachrichten zu verteilen, bin ich eh raus.
Warum, wenn ich fragen darf?
Was soll den großartig passieren?
Keine Ahnung, die Hölle friert zu, wichtige Dateien werden gelöscht oder überschrieben?
Ich weiß es nicht! Wollte halt nur relativ sicher gehen, bevor es jeder auf seinem Rechner ausführen kann.Nachtrag!
Dein Script ...
Es ist nicht MEIN Skript.
Es hat mir jemand, der m.M. gut mit PS kann, geholfen
Besser, eigentlich stammt es von ihm, das hätte ich aber auf jeden Fall noch kommuniziert. -
Suche ein paar Leute, die auf einer VM oder einem Testrechner etwas ausprobieren könnten.
Das BS sollte Windows 10 oder 11 sein.
Der Firefox sollte ganz normal, ohne irgendwelche Verrenkungen installiert sein!
Es geht um das Projekt: Installations Skript zur Vorbereitung des FF zur Nutzung von JavaScript.Es gibt nun ein Skript und ich möchte wissen, ob es fehlerfrei funktioniert.
Und gleich vorweg, ich habe leider keinen Testrechner
und mit VM stehe ich auf Kriegsfuß!
Habe mich mit Microsofts VM-Lösung abgequält und nie so richtig zum Laufen bekommen.
Und extra eine Software installieren wollt' ich auch nicht unbedingt. -
Das Problem, was ich hier im PS-Script sehe: kein Konzept.
Ja, da hast Du recht!
War ja auch nur ein, ... na ja, Schnellschuss.Ich Augenblick bin ich am überlegen, welche Schritte so nach und nach abgearbeitet werden müssen,
und versuche das dann in eine eventuell richtige Reihenfolge zu bekommen.
Also Deine Sache mit dem Blatt Papier.
So ein klein wenig habe ich aus dem Durcheinander von vor zwei Jahren dann doch gelernt, hoffe ich.
Wenn so etwas wie ein Ablaufplan erstellt ist, werde ich mir noch einmal überlegen,
in welcher Form das dann umgesetzt werden soll.
Vielleicht finde ich ja einen oder zwei, die mir dann helfen das umzusetzen.
Die werden auf jeden Fall erwähnt, nicht dass es dann wieder heißt,
ich wolle die Lorbeeren einheimsen.
So bin ich nicht -
Okey
1:0 für Dich.Und DAS ist quasi der Quellcode?
Code
Alles anzeigen;---------------------------------------- SetCompressor /SOLID lzma ShowInstDetails show AutoCloseWindow true CRCCheck On Icon "firefox.ico" Name "firefox-anpassungen" OutFile "firefox-anpassungen_install.exe" XPStyle on !addincludedir "$EXEDIR" ;---------------------------------------- LoadLanguageFile "German1.nlf" ;---------------------------------------- InstallDir "C:\Program Files\Mozilla Firefox\" Page directory Page instfiles ;---------------------------------------- Section "" CreateDirectory "$INSTDIR" SetOutPath "$INSTDIR" SetOverwrite on DetailPrint "Dateien extrahieren..." File /r ".\firefox-anpassungen\*.*" MessageBox MB_YESNO|MB_DEFBUTTON1|MB_ICONQUESTION|MB_SETFOREGROUND "M�chten Sie das Zielverzeichnis jetzt angezeigt bekommen?" IDNO no Exec '"explorer.exe" $INSTDIR' no: SectionEnd ;----------------------------------------
Aber ich kann da gar nicht erkennen woher die ZIP kommt.
-
Danke .DeJaVu
Nettes kleines Programm um die ZIP runterzuladen und in einen Ordner zu entpacken.Aber Du hattest mich ja mal beschimpft, wegen eines Skriptes, welches ich in eine EXE "verwandelt" hatte.
Nun ja, liegt mir fern, aber BrokenHeart hatte ja eine Anmerkung zu dem Download einer EXE!
Und er schrieb, dass ein PS1 eben transparent in seiner Funktion wäre.
Das war, so glaube ich, auch damals, so vor recht genau zwei Jahren das, was Dir so sauer aufgestoßen war.
Kann ich aber heute nachvollziehen. -
Horstmann Habe doch die Browser-Werkzeuge bemüht und da stand dann auto!
Hast recht! Habe noch etwas gewühlt.
Das ist besser:
-
-
Mein Gedanke ist, der User hat nichts Komisches gemacht!
Firefox ist im richtigen Installationsordner und die, oder das Profil ist auch da, wo es hingehört.
Und das Skript lässt sich ja in eine EXE wandeln.
Kann man mit Prüfsumme (Hashes) versehen und dann erst veröffentlichen.Man kann das ganze aber auch einfach sein lassen und den Usern raten ganz einfach den Edge zu nutzen,
dann braucht sich auch niemand mehr Gedanken um irgendwelche Anpassungen zu machen,
denn MS weiß, was für einen Nutzer gut ist.Nachtrag.
Wenn jemand in der Lage ist, den Firefox woanders zu installieren,
es auch schafft, die Benutzerdaten auszulagern, der braucht wahrhaftig nicht
so eine Hilfe, der ist auch fähig nach Anleitung die entsprechenden Schritte durchzuführen. -
BrokenHeart Wir ticken da gerade irgendwie synchron.
-
Da mir auch nicht wirklich was anderes einfällt, bleibe ich bei dem "Zusatz"-CSS.
Ich könnte ja das CSS in das Skript einbauen, aber ..... -
2002Andreas Deine Symbole sind vom Firefox. Ich nehme an, die sind 16*16.
Ich habe eigene Symbole genommen, welche erheblich großer sind.
Warum auch immer, werden diese aber nicht auf die erforderliche Größe skaliert.
Ob es nun in JavaScript eine Entsprechung für die CSS-Eigenschaften gibt, da habe ich nicht weiter nach gesucht!Denn das Skript einfach mit:
JavaScriptmenuitem.style.minWidth = '16px'; menuitem.style.minHeight = '16px'; menuitem.style.width = '16px'; menuitem.style.height = '16px'; menuitem.style.backgroundSize = '16px 16px';
... erweitern, hat nicht funktioniert.
Eventuell sagt mir Sören Hentzschel ja wo mein Denkfehler liegt. -
Ach ja, da fiel mir auf, dass das Skript "SkipToTopAndBottom.uc.js" in der Nightly nicht mehr richtig funktionierte,
bzw. dass die Symbole irgendwie falsch, zu groß dargestellt wurden.Ergo, Fehlersuche und beheben.
Ergänzend musste ich eine CSS schreiben.CSS
Alles anzeigen/* SkipToTopAndBottom.css */ /* =========================== */ /* Skip To Top & Bottom Icons */ /* Einheitliche Icon-Größe */ /* =========================== */ #context-navigation { > .menuitem-iconic { /* Gemeinsame Icon-Größe */ > .menu-icon { width: 32px !important; height: 32px !important; max-width: 32px !important; max-height: 32px !important; background-size: contain !important; /* für perfekte Skalierung */ object-fit: contain !important; /* falls SVGs oder PNGs verwendet werden */ } } }
Damit wurde das Problem behoben.