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

  • Suche Selektor von Symbol in der Adressleiste

    • Mira_Belle
    • 9. Juli 2024 um 16:50

    Wie schon in der Überschrift beschrieben, suche ich den Selektor eines Symbols in der Adresszeile.
    Es handelt sich um den keinen Pfeil.

    Egal, was ich auch versuche, ich komme einfach nicht dran.
    Eventuell stelle ich mich auch nur ungeschickt an. ¯\_(ツ)_/¯

  • Wiederherstellen eines versehentlich gelöschten Ordners

    • Mira_Belle
    • 8. Juli 2024 um 16:28

    Habe es gerade ausprobiert!

    Wie Sören schreibt, kannst Du jedes Lesezeichen per darg & drop von einer Bibliothek in die andere ziehen.

  • Wiederherstellen eines versehentlich gelöschten Ordners

    • Mira_Belle
    • 8. Juli 2024 um 14:56

    Und ich habe das Gefühl, mich rechtfertigen zu müssen!
    Das war die Antwort auf .DeJaVu.
    Und die Begründung, warum ich von einer falschen Annahme aus ging.

    Ist das nicht erkenntlich?

    Ich editiere mal den obigen Beitrag!
    Sage mir bitte, ob ich es so in Zukunft machen soll.
    Und danach kann ja "unsere" Konversation gelöscht werden, weil OT.

  • Wiederherstellen eines versehentlich gelöschten Ordners

    • Mira_Belle
    • 8. Juli 2024 um 14:20

    2002Andreas

    OH, ich bitte tausendmal um Entschuldigung wegen der falschen Interpretation seines Threads!

    Wenn ich meinen Irrtum eingesehen habe, und in einem weiteren Beitrag korrigiert habe,

    Zitat von Mira_Belle

    Wenn es aber wirklich um Lesezeichen, abgespeichert in der "places.sqlite" geht, sollte es auch gehen!
    Dann muss (kann man) ein neues Profil angelegt werden und die entsprechenden "places.sqlite" aus dem gesicherten
    Profil dorthin kopiert werden.
    Wenn er nun dieses Profil beim Starten des FF auswählt, sollte er die "alten" Lesezeichen inkl. des gelöschten Ordners wieder haben.

    Wenn alles geklappt hat, kann das "neue" Profil wieder über das FF-Menü gelöscht werden.


    warum in Gottesnamen muss dann immer noch mal "nachgetreten" werden?
    Verstehe ich nicht!

  • Wiederherstellen eines versehentlich gelöschten Ordners

    • Mira_Belle
    • 8. Juli 2024 um 13:08

    .DeJaVu Er schrieb von einem Ordner!
    Nicht von Lesezeichen innerhalb des Firefoxes.

    Zitat

    Ich brauche nur diesen einen Ordner!!

    @ALL

    Wenn es aber wirklich um Lesezeichen, abgespeichert in der "places.sqlite" geht, sollte es auch gehen!
    Dann muss (kann man) ein neues Profil angelegt werden und die entsprechenden "places.sqlite" aus dem gesicherten
    Profil dorthin kopiert werden.
    Wenn er nun dieses Profil beim Starten des FF auswählt, sollte er die "alten" Lesezeichen inkl. des gelöschten Ordners wieder haben.

    Wenn alles geklappt hat, kann das "neue" Profil wieder über das FF-Menü gelöscht werden.


    Zitat von Sören Hentzschel

    Man kann die Sicherung in ein neues Firefox-Profil einspielen, dann jeweils die Bibliothek öffnen und die Lesezeichen per Drag & Drop kopieren.

    Sorry, weniger Worte, habe ich überlesen.

  • Wiederherstellen eines versehentlich gelöschten Ordners

    • Mira_Belle
    • 8. Juli 2024 um 11:51

    Es sollte doch möglich sein aus einem Acronis Backup entweder per "copy & paste" einzelne Ordner zu kopieren,
    oder diese über das Programm wieder herstellen zu lassen.

    Per "copy & paste" kann ich sogar einzelne Dateien und Ordner an jedem anderen Ort meiner Laufwerke "wieder herstellen".
    Gerade eben selber ausprobiert.


    Im Explorer das Backup doppelt anklicken. Wird wohl eine "XXXX.tibx" sein.
    Es öffnet sich darauf ein weiteres Explorerfenster, dort das Backup auch wieder doppelt anklicken.
    Nun siehst Du eine LW-Strucktur, ich vermute das Du Deine "Lesezeichen irgendwo auf C:\ hast,
    Doppelklicken, und so durchhangeln, bis Du Deine "Lesezeichen" gefunden hast.
    Dann einfach diesen Ordner markieren und im anderen Explorerfenster an einen vorher ausgewählten "Platz" ablegen.
    Fertig.

  • Ehrentitel

    • Mira_Belle
    • 7. Juli 2024 um 23:40
    Zitat von startup

    ;) du hast die *INNEN vergessen :) (musste nun mal sein - hab dich auch lieb :love: )

    Immer mit dem Strom zu schwimmen, kann ja jeder. ;)
    :*

  • Übersetzen in Firefox für iOS?

    • Mira_Belle
    • 7. Juli 2024 um 22:12

    Oh, das wusste ich nicht! Dann hat sich das ja erledigt.

  • Übersetzen in Firefox für iOS?

    • Mira_Belle
    • 7. Juli 2024 um 22:08

    Er könnte eventuell ein JavaScript nutzen.

    Beitrag

    Re: TranslateGoogles.uc.js

    // Wer lieber mit Deepl übersetzen will:
    Hier ist eine Modifikation nicht nötig:
    Siehe weiter unten im Thread...

    (Quelltext, 35 Zeilen)

    Boersenfeger
    15. März 2019 um 12:07
  • Entwicklung Firefox

    • Mira_Belle
    • 7. Juli 2024 um 22:02
    Zitat von FuchsFan

    Das sind die gesicherten Dateien aus dem entpackten zip-Archiv , Größe 74MB aus aktuellem Nightly.


    Danke.

  • Wer mag testen? Firefox4backup

    • Mira_Belle
    • 7. Juli 2024 um 21:57

    Käse.
    Mit dieser Abänderung des Skripts zum Ausschließen einiger Unterordner der Profile
    kommt das Skript nie zum Ende.

    Code
    if ($HS.Action) {
        # Entferne führende und nachfolgende Leerzeichen und den führenden Backslash
        $basePath = $Textbox[0].Text.Trim().Replace('"', '')
        $subPath = $Textbox[1].Text.Trim().TrimStart('\')
        $LogPfad = Join-Path -Path $basePath -ChildPath $subPath
    
        # Sicherstellen, dass das Zielverzeichnis existiert
        if (!(Test-Path -Path $LogPfad)) {
            New-Item -ItemType Directory -Path $LogPfad -Force | Out-Null
        }
    
        $profileZip = Join-Path -Path $LogPfad -ChildPath "profile.zip"
    
        # Profilordner und auszuschließende Ordner
        $profileBasePath = "$env:appdata\Mozilla\Firefox\Profiles"
        $profiles = Get-ChildItem -Directory -Path $profileBasePath
        $excludeDirs = @("bookmarkbackups", "crashes", "minidumps", "saved-telemetry-pings","sessionstore-backups","shader-cache")
    
        # Kompression der Profile mit Ausschluss bestimmter Ordner
        $profilePaths = @()
        foreach ($profile in $profiles) {
            $profileDir = Join-Path -Path $profileBasePath -ChildPath $profile.Name
            $profileItems = Get-ChildItem -Path $profileDir -Recurse | Where-Object {
                $excludeDirs -notcontains $_.Parent.Name
            }
            $profilePaths += $profileItems
        }
        Compress-Archive -Path $profilePaths -DestinationPath $profileZip -CompressionLevel NoCompression
    
        if ($Checkbox[0].Checked) {
            $programZip = Join-Path -Path $LogPfad -ChildPath "program.zip"
            if (Test-Path $programZip) { Remove-Item -Force $programZip }
    
            Compress-Archive -Path "$env:ProgramFiles\Mozilla Firefox" -DestinationPath $programZip -CompressionLevel NoCompression
        }
    }
    Alles anzeigen

    Jemand eine bessere Idee?

  • wow, AVM mit 16 Millionen Euro bestraft

    • Mira_Belle
    • 7. Juli 2024 um 18:49
    Zitat von ^L^

    USB-Kabel, ja eh, aber das braucht keinen stationären Festnetz- bzw. TV-Kabelanschluss. Ist also wesentlich praktischer.

    Speziell auch, wenn man umzieht, wie ich vor 3 Jahren. Ich verwende seit Jahren meine zwei, drei Handys als USB-Router und Telefon. 5G-Router hab ich nie verwendet. 8)

    OK, Du scheinst ja ein ganz moderner Mensch zu sein. Das ist OK, aber ich brauche z.B. für viele Dinge eben auch noch einen Drucker, auch haben wir ein Netzwerk.
    Lebe in Hessen und da hier gefühlt Vodafone sowieso in jeder Wohnung ist (Multimediadose) und wir schnelles I-Net haben wollen,
    gibt es eine Fritz!Box. Eventuell sähe das anders aus, wenn ich zwanzig wäre und alleine wohnen würde.

  • Entwicklung Firefox

    • Mira_Belle
    • 7. Juli 2024 um 18:38
    Zitat von Sören Hentzschel

    Die Größe ist von der Größe des Profils und die Zeit ebenfalls davon sowie von der Hardware abhängig. Daher sind die Werte unterschiedlicher Nutzer nicht miteinander vergleichbar. Im anderen Thread hatte ich Mira_Belle nur deswegen danach gefragt, um zu erfahren, wie ihre Lösung im Vergleich zur Firefox-Lösung abschneidet, da sie ihre eigene Methode ja getestet hat und die Zahlen dann hätte miteinander vergleichen können. Wenn du ihr Script testest, könntest du deine Zahlen aber auch miteinander vergleichen. ;)

    Ich habe keine Vorabversion, oder Beta vom Firefox am Start.
    Von daher kann ich das nicht vergleichen.
    Aber ich vermute mal, dass die interne Lösung schneller und auch kleinere BackUps liefert,
    da ja gewisse Dateien und Ordner ausgeschlossen werden.
    Ich denke, das wird meine nächste Baustelle, denn eigentlich soll ja nur das Nötigste gesichert werden.

    Ob jemand so lieb wäre mir eine Liste zu erstellen, welche Dateien und Ordner gesichert werden müssen?
    Oder ist in dem JavaScript, welches hier on Board gibt, schon alles Wesentliche enthalten?

  • Wer mag testen? Firefox4backup

    • Mira_Belle
    • 7. Juli 2024 um 17:45

    Drachen Du warst mit dem "mich angehen auch nicht" unbedingt gemeint!
    Was ich auch nicht verstehe, ist andauernd den Spruch, dass jemand dieses Skript gar nicht braucht!
    Dieser Thread wurde von mir eröffnet als Vorstellung und zur Hilfe suche!

    Aber Gegenfrage, wenn jemand etwas nicht braucht, ist es dann normal, dass man das nicht gebrauchte schlecht macht
    und Kommentare hinterlässt, brauch’ ich nicht, ist doch eh Blödsinn?
    Denke eher nicht.
    Also ich zumindest gebe nicht in jedem Thread, hier on Board, solche Kommentare ab,
    ob wohl ich das eine oder andere JavaScript nicht gebrauchen kann.
    Und dennoch installiere ich es mir, wenn jemand Probleme damit hat,
    um ihm eventuell helfen zu können, wenn ich denn Zeit und Muße dazu habe und das Skript auch verstehe.

    Zu Deinem Vorschlag, bzw, der Frage mit den Pfaden,
    ja, da bin ich noch dran, aber das ist für mich gar nicht so einfach.
    Du hast ja mitbekommen, dass ich noch am Üben bin.

    Ich habe jetzt erst einmal die Ausgabefenster bearbeitet und bei dem Skript ohne 7-ZIP
    einen Fehler behoben, was für mich so gar nicht einfach war.

    Und zu der Backupstrategie!
    Natürlich hat auch da jeder eine andere Vorstellung,
    Kann man so machen, wie Du es machst, was wie ich finde gut und richtig ist.
    Nur ich fummele doch hin und wieder in den Firefoxprofilen rum, nur so als Beispiel,
    soll ich deswegen jedes Mal ein Vollbackup machen?
    Das Skript als EXE, ein Doppelklick, fertig.
    Auch vor jedem Update mache ich das so, da aber dann mit Programmpfad.

    Genug der Begründungen und Erklärungen, wie geschrieben habe ich an den beiden Skripten noch etwas gearbeitet.
    Die Ausgabefenster während des Packens werden von den Anwendungen generiert,
    da habe ich leider keinen Einfluss drauf. Ob es dennoch geht, ich weiß es nicht.
    Wenn die Skripte als EXE umgewandelt werden, sieht das Ausgabefenster bei der Version
    ohne 7-Zip auch viel schöner aus.

    Hier mal beide Versionen der Skripte für jene, die es mal ausprobieren wollen.

    Für Rückmeldungen wäre ich dankbar, wenn Fehler entdeckt werden sowieso, und wenn jemand noch eine Idee,
    außer der "Automatischen suche der Pfaden", auch gut.

    1. Skript, 7-Zip muss installiert sein!

    Code
    Add-Type -A System.Windows.Forms
    
    #region Grundeinstellungen
    $7z = "$env:ProgramFiles\7-zip\7zG.exe"
    $Reg = "HKCU:\Software\FF_Backup"
    $Fonts = @(
        [Drawing.Font]::New("Microsoft Sans Serif", 12)
        [Drawing.Font]::New("Microsoft Sans Serif", 12, [Drawing.FontStyle]::Bold)
    )
    [Windows.Forms.Application]::EnableVisualStyles()
    #endregion
    
    # Funktion zur Anzeige des Hinweisfensters
    function Show-FirefoxRunningDialog {
        $Form = [Windows.Forms.Form]@{
            Text = "Hinweis"
            AutoSize = $false
            StartPosition = 'CenterScreen'
            Size = "565,155"
            Padding = '10,10,10,10'
            KeyPreview = $true
        }
        $Table = [Windows.Forms.TableLayoutPanel]@{
            Dock = 'Fill'
            AutoSize = $true
        }
        $Flow = [Windows.Forms.FlowLayoutPanel]@{
            Anchor = 'Top'
            AutoSize = $true
            AutoSizeMode = 'GrowAndShrink'
        }
    
        $Label = [Windows.Forms.Label]@{
            Font = $Fonts[0]
            Margin = '10,10,10,10'
            AutoSize = $true
            Text = "Firefox wird noch ausgeführt. Soll Firefox beendet werden?"
        }
    
        $OKButton = [Windows.Forms.Button]@{
            Size = "120,40"
            Text = "OK"
            Font = $Fonts[1]
            Margin = '10,10,10,10'
        }
        $OKButton.Add_Click({
            $Form.DialogResult = [System.Windows.Forms.DialogResult]::OK
            $Form.Close()
        })
    
        $CancelButton = [Windows.Forms.Button]@{
            Size = "120,40"
            Text = "Abbrechen"
            Font = $Fonts[1]
            Margin = '10,10,10,10'
        }
        $CancelButton.Add_Click({
            $Form.DialogResult = [System.Windows.Forms.DialogResult]::Cancel
            $Form.Close()
        })
    
        $Flow.Controls.Add($OKButton)
        $Flow.Controls.Add($CancelButton)
        [void]$Table.ColumnStyles.Add([Windows.Forms.ColumnStyle]::New('AutoSize'))
        [void]$Table.ColumnStyles.Add([Windows.Forms.ColumnStyle]::New('Percent', 10))
        [void]$Table.ColumnStyles.Add([Windows.Forms.ColumnStyle]::New('Absolute', 190))
        $Table.Controls.Add($Label, 0, 0)
        $Table.Controls.Add($Flow, 0, 1)
        $Table.SetColumnSpan($Flow, 3)
    
        $Form.Controls.Add($Table)
        return $Form.ShowDialog()
    }
    
    # Überprüfen, ob Firefox noch läuft und entsprechend handeln
    if (Get-Process "Firefox" -ErrorAction SilentlyContinue) {
        $result = Show-FirefoxRunningDialog
        if ($result -eq [System.Windows.Forms.DialogResult]::OK) {
            Get-Process "Firefox" | Stop-Process
        } else {
            exit
        }
    }
    
    #region Fensterelemente
    $Form = [Windows.Forms.Form]@{
        Text = "Firefox4backup"
        AutoSize = $false
        StartPosition = 'CenterScreen'
        Size = "565,240"
        Padding = '10,10,10,10'
        KeyPreview = $true
    }
    $Table = [Windows.Forms.TableLayoutPanel]@{
        Dock = 'Fill'
        AutoSize = $true
    }
    $Flow = [Windows.Forms.FlowLayoutPanel]@{
        Anchor = 'Top'
        AutoSize = $true
        AutoSizeMode = 'GrowAndShrink'
    }
    
    $Open = [Windows.Forms.Button]@{
        Size = "100,40"
        Text = "Speicherort"
        Font = $Fonts[0]
        Anchor = 'Left'
    }
    
    $Textbox = @(
        [Windows.Forms.TextBox]@{
            Font = $Fonts[0]
            Margin = '10,10,0,10'
            Size = "80,50"
            Dock = 'Fill'
        },
        [Windows.Forms.TextBox]@{
            Font = $Fonts[1]
            Margin = '10,10,10,10'
            Dock = 'Fill'
            Text = " \BackupFirefox\$(Get-Date -Format 'yyyy.MM.dd')"
            Enabled = $false
        }
    )
    $Checkbox = @(
        [Windows.Forms.Checkbox]@{
            Text = "Programmverzeichnis sichern"
            AutoSize = $true
            Font = $Fonts[0]
            Margin = '10,10,0,10'
        },
        [Windows.Forms.Checkbox]@{
            Text = "vorhandenen Ordner überschreiben"
            AutoSize = $true
            Font = $Fonts[0]
            Margin = '10,0,10,10'
            Visible = $false
        }
    )
    
    $HS = @{
        Run = [Windows.Forms.Button]@{
            Size = "120,40"
            Text = "Ausführen"
            Font = $Fonts[1]
            Margin = '10,10,10,10'
            Enabled = $false
        }
        SavePath = $false
        overwrite = $true
    }
    #endregion
    
    #region Fensteranordnung
    $Flow.Controls.Add($HS.Run)
    [void]$Table.ColumnStyles.Add([Windows.Forms.ColumnStyle]::New('AutoSize'))
    [void]$Table.ColumnStyles.Add([Windows.Forms.ColumnStyle]::New('Percent', 10))
    [void]$Table.ColumnStyles.Add([Windows.Forms.ColumnStyle]::New('Absolute', 240))
    $Table.Controls.Add($Open, 0, 0)
    $Table.Controls.Add($Textbox[0], 1, 0)
    $Table.Controls.Add($Textbox[1], 2, 0)
    $Table.Controls.Add($Checkbox[0], 0, 3)
    $Table.Controls.Add($Checkbox[1], 0, 4)
    $Table.Controls.Add($Flow, 0, 5)
    $Table.SetColumnSpan($Checkbox[0], 3)
    $Table.SetColumnSpan($Checkbox[1], 3)
    $Table.SetColumnSpan($Flow, 3)
    
    $Form.Controls.Add($Table)
    $Form.Size = "565,250"  # Hier die Größe des Formulars setzen
    #endregion
    
    #region Runspace
    # Firefox-Status überwachen
    $RS = [powershell]::Create().AddScript({
        while ($true) {
            if (Get-Process "Firefox" -ErrorAction SilentlyContinue) {
                $HS.FirefoxRunning = $true
            } else {
                $HS.FirefoxRunning = $false
                $HS.Run.Enabled = $HS.SavePath -and $HS.overwrite
            }
        }
    })
    $RS.Runspace.SessionStateProxy.SetVariable('HS', $HS)
    #endregion
    
    #region Events
    $Form.Add_Load({
        $HS.handle = $RS.BeginInvoke()
        if (Test-Path $Reg) {
            $Textbox[0].Text = Get-ItemPropertyValue $Reg "(default)" -ErrorAction SilentlyContinue
        }
        [void]$this.ActivateControl($Checkbox[0])
    })
    $Form.Add_Closed({
        [void]$RS.Stop()
    })
    $Form.Add_KeyDown({
        switch ($_.KeyCode) {
            'Return' {$HS.Run.PerformClick()}
            'Escape' {$this.Hide()}
        }
    })
    
    $HS.Run.Add_Click({
        $this.TopLevelControl.Hide()
        $HS.Action = $true
        $HS.BackupCompleted = $true
        Set-ItemProperty -Path $Reg -Name "(default)" -Value $Textbox[0].Text.Replace('"', '') -Force
    })
    
    $Textbox.Add_TextChanged({
        if ($this.Text -and (Test-Path $this.Text.Replace('"', ''))) {
            $HS.SavePath = $true
            if (Test-Path (Join-Path $this.Text.Replace('"', '') "BackupFirefox\$(Get-Date -Format 'yyyy.MM.dd')")) {
                $Checkbox[1].Visible = $true
                $HS.overwrite = $false
            } else {
                $Checkbox[1].Visible = $false
                $HS.overwrite = $true
            }
        } else {
            $HS.SavePath = $false
        }
    })
    
    $Open.Add_Click({
        $Browse = [Windows.Forms.FolderBrowserDialog]@{
            RootFolder = "MyComputer"
            SelectedPath = if ($HS.SavePath) {$Textbox.Text.Replace('"', '')}
        }
        if ($Browse.ShowDialog() -eq 'ok') {$Textbox[0].Text = $Browse.SelectedPath}
    })
    
    $Checkbox[1].Add_CheckStateChanged({
        $HS.overwrite = $this.Checked
    })
    #endregion
    
    #region Ausführung
    [void]$Form.ShowDialog()
    $RS.Dispose()
    #endregion
    
    if ($HS.Action) {
        $LogPfad = Join-Path $Textbox[0].Text.Replace('"', '') $Textbox[1].Text.SubString(1)
        if (Test-Path "$LogPfad\Profilverzeichnis.zip") {Remove-Item -Force "$LogPfad\Profilverzeichnis.zip"}
    
        &$7z a -mx5 -bso0 -bsp1 "$LogPfad\Profilverzeichnis.zip" "$env:appdata\Mozilla\Firefox\Profiles" | Out-String -Stream | Select-String -Pattern "\d+(?=%)" -AllMatches |
            ForEach-Object { Write-Progress -Activity "Profilverzeichnis wird archiviert... " -PercentComplete ([int]$_.Matches.Value) -Status " " }
        if ($Checkbox[0].Checked) {
            if (Test-Path "$LogPfad\Programmverzeichnis.zip") {Remove-Item -Force "$LogPfad\Programmverzeichnis.zip"}
    
            &$7z a -mx5 -bso0 -bsp1 "$LogPfad\Programmverzeichnis.zip" "$env:ProgramFiles\Mozilla Firefox" | Out-String -Stream | Select-String -Pattern "\d+(?=%)" -AllMatches |
                ForEach-Object { Write-Progress -Activity "Programmverzeichnis wird archiviert... " -PercentComplete ([int]$_.Matches.Value) -Status " " }
        }
    
        $date = Get-Date -Format "yyyy.MM.dd - HH.mm.ss"
        $datum = Get-Date -Format "dd.MM.yyyy"
    
        if (!(Test-Path ("$LogPfad\Sicherung am $date.txt"))) {
            $FF_Version = Get-ItemProperty -Path 'HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*' | Where-Object { $_.DisplayName -like "*firefox*" } | Select-Object -ExpandProperty DisplayVersion
            $Logfile = (New-Item -Path "$LogPfad\Sicherung vom $datum.txt" -ItemType File -Force).FullName
            Add-Content $Logfile ("Diese Sicherung ist vom $(Get-Date -Format 'dddd, dd. MMMM yyyy, HH:mm:ss') Uhr`n")
            Add-Content $Logfile ("Die gesicherte Firefox-Version ist: $FF_Version")
            Add-Content $Logfile "`n`n"
        }
    
        # Nachricht anzeigen
        Add-Type -AssemblyName System.Windows.Forms
    
        #region Grundeinstellungen
        $Fonts = @(
            [Drawing.Font]::New("Microsoft Sans Serif", 12)
            [Drawing.Font]::New("Microsoft Sans Serif", 12, [Drawing.FontStyle]::Bold)
        )
        [Windows.Forms.Application]::EnableVisualStyles()
        #endregion
    
        #region Fensterelemente
        $Form = [Windows.Forms.Form]@{
            Text = "Backup abgeschlossen"
            AutoSize = $false
            StartPosition = 'CenterScreen'
            Size = "565,150"
            Padding = '10,10,10,10'
            KeyPreview = $true
        }
        $Table = [Windows.Forms.TableLayoutPanel]@{
            Dock = 'Fill'
            AutoSize = $true
        }
        $Flow = [Windows.Forms.FlowLayoutPanel]@{
            Anchor = 'Top'
            AutoSize = $true
            AutoSizeMode = 'GrowAndShrink'
        }
    
        $Label = [Windows.Forms.Label]@{
            Font = $Fonts[0]
            Margin = '10,10,10,10'
            AutoSize = $true
            Text = "Backup erfolgreich abgeschlossen."
        }
    
        $HS = @{
            Run = [Windows.Forms.Button]@{
                Size = "120,40"
                Text = "OK"
                Font = $Fonts[1]
                Margin = '10,10,10,10'
                Enabled = $true
            }
        }
        #endregion
    
        #region Fensteranordnung
        $Flow.Controls.Add($HS.Run)
        [void]$Table.ColumnStyles.Add([Windows.Forms.ColumnStyle]::New('AutoSize'))
        [void]$Table.ColumnStyles.Add([Windows.Forms.ColumnStyle]::New('Percent', 10))
        [void]$Table.ColumnStyles.Add([Windows.Forms.ColumnStyle]::New('Absolute', 190))
        $Table.Controls.Add($Label, 1, 0)
        $Table.Controls.Add($Flow, 0, 1)
        $Table.SetColumnSpan($Flow, 3)
    
        $Form.Controls.Add($Table)
        #endregion
    
        #region Button-Click-Event
        $HS.Run.Add_Click({
            $Form.Close()
        })
        #endregion
    
        #region Ausführung
        [void]$Form.ShowDialog()
        #endregion
    }
    Alles anzeigen

    2. Skript, ganz ohne externen Packer!

    Code
    Add-Type -A System.Windows.Forms
    
    #region Grundeinstellungen
    
    $Reg = "HKCU:\Software\FF_Backup"
    $Fonts = @(
        [Drawing.Font]::New("Microsoft Sans Serif", 12)
        [Drawing.Font]::New("Microsoft Sans Serif", 12, [Drawing.FontStyle]::Bold)
    )
    [Windows.Forms.Application]::EnableVisualStyles()
    #endregion
    
    # Funktion zur Anzeige des Hinweisfensters
    function Show-FirefoxRunningDialog {
        $Form = [Windows.Forms.Form]@{
            Text = "Hinweis"
            AutoSize = $false
            StartPosition = 'CenterScreen'
            Size = "565,155"
            Padding = '10,10,10,10'
            KeyPreview = $true
        }
        $Table = [Windows.Forms.TableLayoutPanel]@{
            Dock = 'Fill'
            AutoSize = $true
        }
        $Flow = [Windows.Forms.FlowLayoutPanel]@{
            Anchor = 'Top'
            AutoSize = $true
            AutoSizeMode = 'GrowAndShrink'
        }
    
        $Label = [Windows.Forms.Label]@{
            Font = $Fonts[0]
            Margin = '10,10,10,10'
            AutoSize = $true
            Text = "Firefox wird noch ausgeführt. Soll Firefox beendet werden?"
        }
    
        $OKButton = [Windows.Forms.Button]@{
            Size = "120,40"
            Text = "OK"
            Font = $Fonts[1]
            Margin = '10,10,10,10'
        }
        $OKButton.Add_Click({
            $Form.DialogResult = [System.Windows.Forms.DialogResult]::OK
            $Form.Close()
        })
    
        $CancelButton = [Windows.Forms.Button]@{
            Size = "120,40"
            Text = "Abbrechen"
            Font = $Fonts[1]
            Margin = '10,10,10,10'
        }
        $CancelButton.Add_Click({
            $Form.DialogResult = [System.Windows.Forms.DialogResult]::Cancel
            $Form.Close()
        })
    
        $Flow.Controls.Add($OKButton)
        $Flow.Controls.Add($CancelButton)
        [void]$Table.ColumnStyles.Add([Windows.Forms.ColumnStyle]::New('AutoSize'))
        [void]$Table.ColumnStyles.Add([Windows.Forms.ColumnStyle]::New('Percent', 10))
        [void]$Table.ColumnStyles.Add([Windows.Forms.ColumnStyle]::New('Absolute', 190))
        $Table.Controls.Add($Label, 0, 0)
        $Table.Controls.Add($Flow, 0, 1)
        $Table.SetColumnSpan($Flow, 3)
    
        $Form.Controls.Add($Table)
        return $Form.ShowDialog()
    }
    
    # Überprüfen, ob Firefox noch läuft und entsprechend handeln
    if (Get-Process "Firefox" -ErrorAction SilentlyContinue) {
        $result = Show-FirefoxRunningDialog
        if ($result -eq [System.Windows.Forms.DialogResult]::OK) {
            Get-Process "Firefox" | Stop-Process
        } else {
            exit
        }
    }
    
    #region Fensterelemente
    $Form = [Windows.Forms.Form]@{
        Text = "Firefox4backup"
        AutoSize = $false
        StartPosition = 'CenterScreen'
        Size = "565,240"
        Padding = '10,10,10,10'
        KeyPreview = $true
    }
    $Table = [Windows.Forms.TableLayoutPanel]@{
        Dock = 'Fill'
        AutoSize = $true
    }
    $Flow = [Windows.Forms.FlowLayoutPanel]@{
        Anchor = 'Top'
        AutoSize = $true
        AutoSizeMode = 'GrowAndShrink'
    }
    
    $Open = [Windows.Forms.Button]@{
        Size = "100,40"
        Text = "Speicherort"
        Font = $Fonts[0]
        Anchor = 'Left'
    }
    
    $Textbox = @(
        [Windows.Forms.TextBox]@{
            Font = $Fonts[0]
            Margin = '10,10,0,10'
            Size = "80,50"
            Dock = 'Fill'
        },
        [Windows.Forms.TextBox]@{
            Font = $Fonts[1]
            Margin = '10,10,10,10'
            Dock = 'Fill'
            Text = " \BackupFirefox\$(Get-Date -Format 'yyyy.MM.dd')"
            Enabled = $false
        }
    )
    $Checkbox = @(
        [Windows.Forms.Checkbox]@{
            Text = "Programmverzeichnis sichern"
            AutoSize = $true
            Font = $Fonts[0]
            Margin = '10,10,0,10'
        },
        [Windows.Forms.Checkbox]@{
            Text = "vorhandenen Ordner überschreiben"
            AutoSize = $true
            Font = $Fonts[0]
            Margin = '10,0,10,10'
            Visible = $false
        }
    )
    
    $HS = @{
        Run = [Windows.Forms.Button]@{
            Size = "120,40"
            Text = "Ausführen"
            Font = $Fonts[1]
            Margin = '10,10,10,10'
            Enabled = $false
        }
        SavePath = $false
        overwrite = $true
    }
    #endregion
    
    #region Fensteranordnung
    $Flow.Controls.Add($HS.Run)
    [void]$Table.ColumnStyles.Add([Windows.Forms.ColumnStyle]::New('AutoSize'))
    [void]$Table.ColumnStyles.Add([Windows.Forms.ColumnStyle]::New('Percent', 10))
    [void]$Table.ColumnStyles.Add([Windows.Forms.ColumnStyle]::New('Absolute', 240))
    $Table.Controls.Add($Open, 0, 0)
    $Table.Controls.Add($Textbox[0], 1, 0)
    $Table.Controls.Add($Textbox[1], 2, 0)
    $Table.Controls.Add($Checkbox[0], 0, 3)
    $Table.Controls.Add($Checkbox[1], 0, 4)
    $Table.Controls.Add($Flow, 0, 5)
    $Table.SetColumnSpan($Checkbox[0], 3)
    $Table.SetColumnSpan($Checkbox[1], 3)
    $Table.SetColumnSpan($Flow, 3)
    
    $Form.Controls.Add($Table)
    $Form.Size = "565,250"  # Hier die Größe des Formulars setzen
    #endregion
    
    #region Runspace
    # Firefox-Status überwachen
    $RS = [powershell]::Create().AddScript({
        while ($true) {
            if (Get-Process "Firefox" -ErrorAction SilentlyContinue) {
                $HS.FirefoxRunning = $true
            } else {
                $HS.FirefoxRunning = $false
                $HS.Run.Enabled = $HS.SavePath -and $HS.overwrite
            }
        }
    })
    $RS.Runspace.SessionStateProxy.SetVariable('HS', $HS)
    #endregion
    
    #region Events
    $Form.Add_Load({
        $HS.handle = $RS.BeginInvoke()
        if (Test-Path $Reg) {
            $Textbox[0].Text = Get-ItemPropertyValue $Reg "(default)" -ErrorAction SilentlyContinue
        }
        [void]$this.ActivateControl($Checkbox[0])
    })
    $Form.Add_Closed({
        [void]$RS.Stop()
    })
    $Form.Add_KeyDown({
        switch ($_.KeyCode) {
            'Return' {$HS.Run.PerformClick()}
            'Escape' {$this.Hide()}
        }
    })
    
    $HS.Run.Add_Click({
        $this.TopLevelControl.Hide()
        $HS.Action = $true
        $HS.BackupCompleted = $true
        Set-ItemProperty -Path $Reg -Name "(default)" -Value $Textbox[0].Text.Replace('"', '') -Force
    })
    
    $Textbox.Add_TextChanged({
        if ($this.Text -and (Test-Path $this.Text.Replace('"', ''))) {
            $HS.SavePath = $true
            if (Test-Path (Join-Path $this.Text.Replace('"', '') "BackupFirefox\$(Get-Date -Format 'yyyy.MM.dd')")) {
                $Checkbox[1].Visible = $true
                $HS.overwrite = $false
            } else {
                $Checkbox[1].Visible = $false
                $HS.overwrite = $true
            }
        } else {
            $HS.SavePath = $false
        }
    })
    
    $Open.Add_Click({
        $Browse = [Windows.Forms.FolderBrowserDialog]@{
            RootFolder = "MyComputer"
            SelectedPath = if ($HS.SavePath) {$Textbox.Text.Replace('"', '')}
        }
        if ($Browse.ShowDialog() -eq 'ok') {$Textbox[0].Text = $Browse.SelectedPath}
    })
    
    $Checkbox[1].Add_CheckStateChanged({
        $HS.overwrite = $this.Checked
    })
    #endregion
    
    #region Ausführung
    [void]$Form.ShowDialog()
    $RS.Dispose()
    #endregion
    
    
    
    if ($HS.Action) {
        # Entferne führende und nachfolgende Leerzeichen und den führenden Backslash
        $basePath = $Textbox[0].Text.Trim().Replace('"', '')
        $subPath = $Textbox[1].Text.Trim().TrimStart('\')
        $LogPfad = Join-Path -Path $basePath -ChildPath $subPath
    
        # Sicherstellen, dass das Zielverzeichnis existiert
        if (!(Test-Path -Path $LogPfad)) {
            New-Item -ItemType Directory -Path $LogPfad -Force | Out-Null
        }
    
        $profileZip = Join-Path -Path $LogPfad -ChildPath "profile.zip"
        
            Compress-Archive -Path "$env:appdata\Mozilla\Firefox\Profiles" -DestinationPath $profileZip -CompressionLevel NoCompression
    
        if ($Checkbox[0].Checked) {
            $programZip = Join-Path -Path $LogPfad -ChildPath "program.zip"
            if (Test-Path $programZip) { Remove-Item -Force $programZip }
    
                Compress-Archive -Path "$env:ProgramFiles\Mozilla Firefox" -DestinationPath $programZip -CompressionLevel NoCompression
        }
        
        $date = Get-Date -Format "yyyy.MM.dd - HH.mm.ss"
        $datum = Get-Date -Format "dd.MM.yyyy"
    
        if (!(Test-Path ("$LogPfad\Sicherung am $date.txt"))) {
            $FF_Version = Get-ItemProperty -Path 'HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*' | Where-Object { $_.DisplayName -like "*firefox*" } | Select-Object -ExpandProperty DisplayVersion
            $Logfile = (New-Item -Path "$LogPfad\Sicherung vom $datum.txt" -ItemType File -Force).FullName
            Add-Content $Logfile ("Diese Sicherung ist vom $(Get-Date -Format 'dddd, dd. MMMM yyyy, HH:mm:ss') Uhr`n")
            Add-Content $Logfile ("Die gesicherte Firefox-Version ist: $FF_Version")
            Add-Content $Logfile "`n`n"
        }
        
        # Nachricht anzeigen
        Add-Type -AssemblyName System.Windows.Forms
    
        #region Grundeinstellungen
        $Fonts = @(
            [Drawing.Font]::New("Microsoft Sans Serif", 12)
            [Drawing.Font]::New("Microsoft Sans Serif", 12, [Drawing.FontStyle]::Bold)
        )
        [Windows.Forms.Application]::EnableVisualStyles()
        #endregion
    
        #region Fensterelemente
        $Form = [Windows.Forms.Form]@{
            Text = "Backup abgeschlossen"
            AutoSize = $false
            StartPosition = 'CenterScreen'
            Size = "565,150"
            Padding = '10,10,10,10'
            KeyPreview = $true
        }
        $Table = [Windows.Forms.TableLayoutPanel]@{
            Dock = 'Fill'
            AutoSize = $true
        }
        $Flow = [Windows.Forms.FlowLayoutPanel]@{
            Anchor = 'Top'
            AutoSize = $true
            AutoSizeMode = 'GrowAndShrink'
        }
    
        $Label = [Windows.Forms.Label]@{
            Font = $Fonts[0]
            Margin = '10,10,10,10'
            AutoSize = $true
            Text = "Backup erfolgreich abgeschlossen."
        }
    
        $HS = @{
            Run = [Windows.Forms.Button]@{
                Size = "120,40"
                Text = "OK"
                Font = $Fonts[1]
                Margin = '10,10,10,10'
                Enabled = $true
            }
        }
        #endregion
    
        #region Fensteranordnung
        $Flow.Controls.Add($HS.Run)
        [void]$Table.ColumnStyles.Add([Windows.Forms.ColumnStyle]::New('AutoSize'))
        [void]$Table.ColumnStyles.Add([Windows.Forms.ColumnStyle]::New('Percent', 10))
        [void]$Table.ColumnStyles.Add([Windows.Forms.ColumnStyle]::New('Absolute', 190))
        $Table.Controls.Add($Label, 1, 0)
        $Table.Controls.Add($Flow, 0, 1)
        $Table.SetColumnSpan($Flow, 3)
    
        $Form.Controls.Add($Table)
        #endregion
    
        #region Button-Click-Event
        $HS.Run.Add_Click({
            $Form.Close()
        })
        #endregion
    
        #region Ausführung
        [void]$Form.ShowDialog()
        #endregion
    }
    Alles anzeigen

    Wenn beide Skripte soweit gut "laufen", werde ich versuchen mich des "großen Problems" anzunehmen.
    Mich stört es, dass weder der Pfad zur Installation noch zu dem Profilordner von alleine gefunden wird.

    Ach, und mir geistert da noch eine andere Sache durch den Kopf.
    Bisher ist es ja so, dass der Firefox beendet sein muss, damit das BackUp auch fehlerfrei funktioniert.
    Hier on Board gibt es ja ein JavaScript, dass dafür sorgt, dass man vom Profilordner eine Sicherung anlegen kann.
    Darin ist ein Ausschluss von bestimmten Dateien und Ordner enthalten.
    Wenn ich dies in ähnlicher Weise "übernehmen" könnte, könnte die Abfrage, ob der Browser beendet werden soll, entfallen.
    Denn die Funktion killt den Firefox recht radikal! Ist nicht wirklich so schön.

  • Wer mag testen? Firefox4backup

    • Mira_Belle
    • 6. Juli 2024 um 23:00

    Andauernd werde ich hier kritisiert und angegangen, das Skript wird als Unfug abgestempelt
    und ich soll dann ruhig und besonnen bleiben.
    Toll.
    Ab dem dritten Beitrag ging es schon los.
    Es tut mir wirklich leid, wenn dann doch das eine oder andere untergegangen ist.

    Sören Hentzschel Diesen Vergleich, den Du gerne hättest, kann ich Dir nicht liefern.

    Drachen Du hast recht viel geschrieben und doch nur in den letzten beiden Sätzen mir eine Frage gestellt.
    Ja sorry, hatte ich vorher irgendwie nicht mitgeschnitten, aber Du könntest die Antwort wissen, hättest Du es ausprobiert.
    Ich muss zugeben, ich bin etwas leichtsinnig und habe das alles nur unter Adminrechten ausprobiert.
    Ich kann Dir also gar nicht sagen, ob das Skript auch mit eingeschränkten Rechten funktioniert.
    Aber da das Skript ja sowieso obsolet ist, ist es ja auch völlig egal, oder?


    Ich bin es leid, ständig eine eingeschenkt zu bekommen, wenn ich dies anspreche, bekomme ich erst recht noch eins drauf.
    Das Skript wird schlecht gemacht, als völlig überflüssig hingestellt.

    Das die Vorstellung des Skriptes nicht gut gelaufen ist, habe ich zugegeben und dennoch hat sich so gut wie niemand die Mühe gemacht sich den Code mal genauer anzuschauen und mir eventuell .... ach lassen wir das.


    Zitat von schlingo

    Hallo :)

    das ist auch nicht nötig, denn es ist obsolet. Schon deshalb habe ich es übrigens auch nicht getestet.

    Gruß Ingo

    Für Dich, das ist OK. Du nutzt ja auch zum Briefeschreiben noch Stift und ein Blatt Papier.
    Denn so'n Office ist ja obsolet.

    Genau solche Kritik haben mich schwer enttäuscht.
    Und die ganzen Anpassungen, die hier für den Firefox angeboten und entwickelt werden,
    auch Schwachsinn? Sorry, obsolet!

  • Wer mag testen? Firefox4backup

    • Mira_Belle
    • 6. Juli 2024 um 15:10

    Drachen Phü, ....

    Überheblich. Autsch.
    Da bekommt man nur Schelte und wenn man schmollt, ist man überheblich. So so.

    Du hast das Skript scheinbar gar nicht getestet.

    Zitat

    ... variablen Zielordnern ....

    Das geht! Dafür ist der Button "Speicherort".

    Zitat

    ... mit dem aktuellen Datum im Pfadnamen ....

    Es wird ein Ordner namens BackupFirefox und in diesem werden die Backups in Ordner abgelegt die dem aktuellem Datum entsprechen. In diesen Ordner befindet sich außerdem noch eine Textdatei, auch mit Datum und sogar mit Uhrzeit und welche Firefoxversion da gesichert wurde.

    Zitat

    Das kann man dann aufhübschen und verfeinern ....

    Bin ich gerade noch dran, habe aber noch Probleme mit dem "aufhübschen".
    Entweder habe ich eine "schöne" GUI und die Funktion des Skripts wird zerschossen,
    oder es sieht nicht so "hübsch" aus, aber dafür funktioniert es.

    Also, mit dem Verurteilen und Austeilen bist Du schnell.
    Hättest Du das Skript nur einmal getestet.

  • Wer mag testen? Firefox4backup

    • Mira_Belle
    • 5. Juli 2024 um 21:11

    OK, Vorschläge und Verbesserungen kamen keine.
    Hilfe wurde auch nicht angeboten, ich selber habe versucht noch etwas an der GUI zu ändern, komme aber nicht weiter.
    Egal, das Skript, bzw. Prögrämmschen erfüllt bei mir seinen Zweck,
    und somit mache ich an dieser Stelle hier im Forum Schluss,
    es sei denn, es passiert hier noch was.

    Ich bedanke mich für die konstruktive Kritik und wünsche allen, dies nutzen möchten und wollen, viel Spaß damit.

  • Wer mag testen? Firefox4backup

    • Mira_Belle
    • 4. Juli 2024 um 16:03

    StandingBill Oh Weh, bis dahin ist es aber noch ein langer Weg.
    Es gibt da noch so viel Potenzial der Verbesserungen.
    z.B. könnte das Skript den Installations- aber auch den Profilordner von alleine finden!

    Nicht ein jeder installiert den Firefox so wie vorgesehen. ;)

    Und es gibt da bestimmt auch noch ein, zwei weitere Sachen, die verbessert werden könnten.

  • Wer mag testen? Firefox4backup

    • Mira_Belle
    • 4. Juli 2024 um 15:11

    StandingBill Nun sollte es funktionieren.

    Code
    Add-Type -A System.Windows.Forms
    
    #region Grundeinstellungen
    
    $Reg   = "HKCU:\Software\FF_Backup"
    $Fonts = @(
        [Drawing.Font]::New("Microsoft Sans Serif",12)
        [Drawing.Font]::New("Microsoft Sans Serif",12,[Drawing.FontStyle]"Bold")
    )
    [Windows.Forms.Application]::EnableVisualStyles()
    #endregion
    
    # Funktion zur Anzeige des Hinweisfensters
    function Show-FirefoxRunningDialog {
        $Form = [Windows.Forms.Form]@{Text = "Hinweis"; AutoSize = $true; StartPosition = 'CenterScreen'; Size = "50,50"; Padding = '10,10,10,10'; KeyPreview = $true }
        $Table = [Windows.Forms.TableLayoutPanel]@{Dock = 'Fill'; AutoSize = $true }
        $Flow = [Windows.Forms.FlowLayoutPanel]@{Anchor = 'Top'; AutoSize = $true; AutoSizeMode = 'GrowAndShrink' }
    
        $Label = [Windows.Forms.Label]@{Font = $Fonts[0]; Margin = '10,10,10,10'; AutoSize = $true; Text = "Firefox wird noch ausgeführt.
    
    Soll Firefox beendet werden?" }
    
        $OKButton = [Windows.Forms.Button]@{Size = "120,40"; Text = "OK"; Font = $Fonts[1]; Margin = '10,10,10,10' }
        $OKButton.Add_Click({
            $Form.DialogResult = [System.Windows.Forms.DialogResult]::OK
            $Form.Close()
        })
    
        $CancelButton = [Windows.Forms.Button]@{Size = "120,40"; Text = "Abbrechen"; Font = $Fonts[1]; Margin = '10,10,10,10' }
        $CancelButton.Add_Click({
            $Form.DialogResult = [System.Windows.Forms.DialogResult]::Cancel
            $Form.Close()
        })
    
        $Flow.Controls.Add($OKButton)
        $Flow.Controls.Add($CancelButton)
        [void]$Table.ColumnStyles.Add([Windows.Forms.ColumnStyle]::New('AutoSize'))
        [void]$Table.ColumnStyles.Add([Windows.Forms.ColumnStyle]::New('Percent', 10))
        [void]$Table.ColumnStyles.Add([Windows.Forms.ColumnStyle]::New('Absolute', 190))
        $Table.Controls.Add($Label, 0, 0)
        $Table.Controls.Add($Flow, 0, 1)
        $Table.SetColumnSpan($Flow, 3)
    
        $Form.Controls.Add($Table)
        return $Form.ShowDialog()
    }
    
    # Überprüfen, ob Firefox noch läuft und entsprechend handeln
    if (Get-Process "Firefox" -ErrorAction SilentlyContinue) {
        $result = Show-FirefoxRunningDialog
        if ($result -eq [System.Windows.Forms.DialogResult]::OK) {
            Get-Process "Firefox" | Stop-Process
        } else {
            exit
        }
    }
    
    #region Fensterelemente
    $Form = [Windows.Forms.Form]@{Text = "Firefox4backup"; AutoSize = $true; StartPosition = 'CenterScreen'; Size = "50,50"; Padding = '10,10,10,10'; KeyPreview = $true}
    $Table = [Windows.Forms.TableLayoutPanel]@{Dock='Fill'; AutoSize=$true}
    $Flow  = [Windows.Forms.FlowLayoutPanel]@{Anchor='Top'; AutoSize=$true; AutoSizeMode='GrowAndShrink'}
    
    $Open  = [Windows.Forms.Button]@{Size="100,40"; Text="Speicherort"; Font=$Fonts[0]; Anchor='Left'}
    
    $Textbox  = @(
        [Windows.Forms.TextBox]@{Font=$Fonts[0]; Margin='10,10,0,10'; Size="150,30"; Dock='Fill'}
        [Windows.Forms.TextBox]@{Font=$Fonts[1]; Margin='0,10,10,10'; Dock='Fill'; Text=" \BackupFirefox\$(Get-Date -Format 'yyyy.MM.dd')";  Enabled=$false}
    )
    $Checkbox = @(
        [Windows.Forms.Checkbox]@{Text="Programmverzeichnis sichern";      AutoSize=$true; Font=$Fonts[0];Margin='10,10,0,10'}
        [Windows.Forms.Checkbox]@{Text="vorhandenen Ordner überschreiben"; AutoSize=$true; Font=$Fonts[0];Margin='10,0,10,10'; Visible=$false}
    )
    
    $HS = [Hashtable]::Synchronized(@{
        Run       = [Windows.Forms.Button]@{Size="120,40"; Text="Ausführen";       Font=$Fonts[1]; Margin='10,10,10,10'; Enabled=$false}
        SavePath  = $false
        overwrite = $true
    })
    #endregion
    
    #region Fensteranordnung
    $Flow.Controls.Add($HS.Run)
    [void]$Table.ColumnStyles.Add([Windows.Forms.ColumnStyle]::New('AutoSize'))
    [void]$Table.ColumnStyles.Add([Windows.Forms.ColumnStyle]::New('Percent', 10))
    [void]$Table.ColumnStyles.Add([Windows.Forms.ColumnStyle]::New('Absolute', 190))
    $Table.Controls.Add($Open, 0, 0)
    $Table.Controls.Add($Textbox[0], 1, 0)
    $Table.Controls.Add($Textbox[1], 2, 0)
    $Table.Controls.Add($Checkbox[0], 0, 3)
    $Table.Controls.Add($Checkbox[1], 0, 4)
    $Table.Controls.Add($Flow, 0, 5)
    $Table.SetColumnSpan($Checkbox[0], 3)
    $Table.SetColumnSpan($Checkbox[1], 3)
    $Table.SetColumnSpan($Flow, 3)
    
    $Form.Controls.Add($Table)
    #endregion
    
    #region Runspace
    # Firefox-Status überwachen
    $RS = [powershell]::Create().AddScript({
        while ($true) {
            if (Get-Process "Firefox" -ErrorAction SilentlyContinue) {
                $HS.FirefoxRunning = $true
            } else {
                $HS.FirefoxRunning = $false
                $HS.Run.Enabled = $HS.SavePath -and $HS.overwrite
            }
        }
    })
    $RS.Runspace.SessionStateProxy.SetVariable('HS', $HS)
    #endregion
    
    #region Events
    $Form.Add_Load({
        $HS.handle = $RS.BeginInvoke()
        if (Test-Path $Reg) {
            $Textbox[0].Text = Get-ItemPropertyValue $Reg "(default)" -ErrorAction SilentlyContinue
        }
        [void]$this.ActivateControl($Checkbox[0])
    })
    $Form.Add_Closed({[void]$RS.Stop()})
    $Form.Add_KeyDown({
        switch ($_.KeyCode) {
          'Return' {$HS.Run.PerformClick()}
          'Escape' {$this.Hide()}
        }
    })
    
    $HS.Run.Add_Click({
        $this.TopLevelControl.Hide()
        $HS.Action = $true
        $HS.BackupCompleted = $true # Setze den Status auf true, wenn das Backup beginnt
        Set-ItemProperty -Path $Reg -Name "(default)" -Value $Textbox[0].Text.Replace('"', '') -Force
    })
    
    $Textbox.Add_TextChanged({
        if ($this.Text -and (Test-Path $this.Text.Replace('"',''))) {
          $HS.SavePath = $true
          if (Test-Path (Join-Path $this.Text.Replace('"','') "BackupFirefox\$(get-date -Format "yyyy.MM.dd")")) {
            $Checkbox[1].Visible = $true
            $HS.overwrite = $false
          } else {
            $Checkbox[1].Visible = $false
            $HS.overwrite = $true
            $this.TopLevelControl.Size="100,100"
          }
        }
        else {$HS.SavePath = $false}
    })
    
    $Open.Add_Click({
        $Browse = [Windows.Forms.FolderBrowserDialog]@{
            RootFolder   = "MyComputer"
            SelectedPath = if ($HS.SavePath) {$Textbox.Text.Replace('"','')}
        }
        if ($Browse.ShowDialog() -eq 'ok') {$Textbox[0].Text = $Browse.SelectedPath}
    })
    
    $Checkbox[1].Add_CheckStateChanged({$HS.overwrite = $this.Checked})
    #endregion
    
    #region Ausführung
    [void]$Form.ShowDialog()
    $RS.Dispose()
    #endregion
    
    if ($HS.Action) {
        # Sicherungsordner erstellen, falls dieser nicht existiert
        $BackupPath = $Textbox[0].Text.Replace('"','')
        $LogPfad = Join-Path $BackupPath $Textbox[1].Text.SubString(1)
    
        if (-not (Test-Path -Path $LogPfad)) {
            New-Item -ItemType Directory -Path $LogPfad -Force
        }
    
        if (Test-Path "$LogPfad\Profilverzeichnis.zip") {
            Remove-Item -Force "$LogPfad\Profilverzeichnis.zip"
        }
    
        Compress-Archive -Path "$env:appdata\Mozilla\Firefox\Profiles" -DestinationPath "$LogPfad\Profilverzeichnis.zip" -CompressionLevel NoCompression
        Write-Progress -Activity "Profilverzeichnis wird archiviert... " -PercentComplete 100 -Status "Abgeschlossen"
    
        if ($Checkbox[0].Checked) {
            if (Test-Path "$LogPfad\Programmverzeichnis.zip") {
                Remove-Item -Force "$LogPfad\Programmverzeichnis.zip"
            }
    
            Compress-Archive -Path "$env:ProgramFiles\Mozilla Firefox" -DestinationPath "$LogPfad\Programmverzeichnis.zip" -CompressionLevel NoCompression
            Write-Progress -Activity "Programmverzeichnis wird archiviert... " -PercentComplete 100 -Status "Abgeschlossen"
        }
    
        $date = Get-Date -Format "yyyy.MM.dd - HH.mm.ss"
        $datum = Get-Date -Format "dd.MM.yyyy"
    
        if (!(Test-Path ("$LogPfad\Sicherung am $date.txt"))) {
            $FF_Version = gp 'HKLM:\Software\Microsoft\Windows\CurrentVersion\Uninstall\*'| ? DisplayName -like "*firefox*"|select -Expand DisplayVersion
            $Logfile = (New-Item -Path "$LogPfad\Sicherung vom $datum.txt"  -ItemType File -Force).FullName 
            Add-Content $Logfile ("Diese Sicherung ist vom $(get-date -Format "dddd, dd. MMMM yyyy, HH:mm:ss") Uhr`n")
            Add-Content $Logfile ("Die gesicherte Firefox-Version ist: $FF_Version")    
            Add-Content $Logfile "`n`n"       
        }
    
        # Nachricht anzeigen
        Add-Type -AssemblyName System.Windows.Forms
    
        #region Grundeinstellungen
        $Fonts = @(
            [Drawing.Font]::New("Microsoft Sans Serif", 12)
            [Drawing.Font]::New("Microsoft Sans Serif", 12, [Drawing.FontStyle]::Bold)
        )
        [Windows.Forms.Application]::EnableVisualStyles()
        #endregion
    
        #region Fensterelemente
        $Form = [Windows.Forms.Form]@{Text = "Backup abgeschlossen"; AutoSize = $true; StartPosition = 'CenterScreen'; Size = "50,50"; Padding = '10,10,10,10'; KeyPreview = $true }
        $Table = [Windows.Forms.TableLayoutPanel]@{Dock = 'Fill'; AutoSize = $true }
        $Flow = [Windows.Forms.FlowLayoutPanel]@{Anchor = 'Top'; AutoSize = $true; AutoSizeMode = 'GrowAndShrink' }
    
        $Label = [Windows.Forms.Label]@{Font = $Fonts[0]; Margin = '10,10,10,10'; AutoSize = $true; Text = "Backup erfolgreich abgeschlossen." }
    
        $HS = @{Run = [Windows.Forms.Button]@{Size = "120,40"; Text = "OK"; Font = $Fonts[1]; Margin = '10,10,10,10'; Enabled = $true }}
        #endregion
    
        #region Fensteranordnung
        $Flow.Controls.Add($HS.Run)
        [void]$Table.ColumnStyles.Add([Windows.Forms.ColumnStyle]::New('AutoSize'))
        [void]$Table.ColumnStyles.Add([Windows.Forms.ColumnStyle]::New('Percent', 10))
        [void]$Table.ColumnStyles.Add([Windows.Forms.ColumnStyle]::New('Absolute', 190))
        $Table.Controls.Add($Label, 1, 0)
        $Table.Controls.Add($Flow, 0, 1)
        $Table.SetColumnSpan($Flow, 3)
    
        $Form.Controls.Add($Table)
        #endregion
    
        #region Button-Click-Event
        $HS.Run.Add_Click({
            $Form.Close()
        })
        #endregion
    
        #region Ausführung
        [void]$Form.ShowDialog()
        #endregion
    }
    Alles anzeigen
  • Wer mag testen? Firefox4backup

    • Mira_Belle
    • 4. Juli 2024 um 14:09

    StandingBill Dieses Fehlverhalten habe ich auch schon festgestellt.
    Bin mir noch nicht im Klaren, warum der Ordner nicht angelegt wird.

    Bei einem zweiten Aufruf und dem abnicken, ob der Ordner überschrieben werden soll,
    klappt es ja dann.
    Da muss ich noch mal ran.

    Sören Hentzschel Zu Deiner Frage!
    Das hat mich dann auch interessiert und ich wollte es etwas genauer wissen.

    Also das Skript mit dem Aufruf der 7zg.exe braucht mit dem Parameter mx5 so in etwa 18s.

    Das Skript ohne dem Aufruf der 7zg.exe braucht mit dem Parameter Optimal schon etwas länger, ca. 1min.
    Mit dem Parameter Fastest ca.45s.

    Was die Dateigrößen angeht, so sind sie bei diesen Einstellungen in etwas alle gleich.
    Die Unterschiede sind wirklich zu vernachlässigen!

    Natürlich habe ich auch den Parameter NoCompression ausprobiert, da war der Vorgang dann mit ca. 19s beendet,
    aber die Datei "Profilverzeichnis.zip" war dann doch ein wenig größer!
    ca. 2.200.000 KB wohingegen die komprimierten ca. 1.400.000KB groß sind.

Unterstütze uns!

Jährlich (2025)

104,5 %

104,5% (679,10 von 650 EUR)

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