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

  • 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.

  • Wer mag testen? Firefox4backup

    • Mira_Belle
    • 4. Juli 2024 um 13:07

    .DeJaVu Lass es doch jetzt einfach mal gut sein! Die EXE habe ich zurückgezogen, das sollte doch jetzt genügen, oder?
    Wenn ich hier etwas "veröffentliche", dann nur noch Skripte! Zufrieden?
    Und wenn ich so etwas lese

    Zitat

    Du musst noch so viel lernen, du kannst nicht 20 Jahre von anderen in ein ps2exe stecken und Heldin sein.

    bekomme ich das große Kotzen!

    Wie überheblich und arrogant das doch ist!
    Dass ich noch vieles lernen muss, ist mir bekannt, und genau deshalb stellte ich das "Programm" hier ein.
    Ich bat ja um Hilfe!
    Ich habe auch gleich, nach Deinem "Gepoltere", direkt das zugrunde liegende Skript hier eingestellt.
    Und das Nörgeln hört dennoch nicht auf.
    Was das Logo angeht, das gab es nur in der EXE, im Skript wird es ja gar nicht genutzt!
    Zu 7-Zip, bei Firesave hatte es Dich auch nicht gestört, dass Dateien dieses Packers genutzt wurden.
    Ich meine sogar, dass Du selbst sogar empfolen hast die genutzen Dateien durch aktuellere zu ersetzen!

    Wie dem auch sei, sollte 7-Zip mit dem Skript aufgerufen werden, welches man dann ja installiert haben muss,
    ist auch in diesem Fall Dein Einwand für die Füß'.

  • Wer mag testen? Firefox4backup

    • Mira_Belle
    • 4. Juli 2024 um 11:00

    StandingBill Erst einmal ein <3liches Danke für Dein testen.

    Ja ich weiß, das mit dem 7-Zip ist schon irgendwie doof, aber (!) hat natürlich seine Gründe.
    1. Mit dem im System vorhandenem ZIP dauert das Packen ewig.
    2. Bekomme ich es nicht hin, so ein "schönes" Fenster mit Fortschrittsbalken zu generieren.

    Aber wenn Du es Dir mal anschauen möchtest, bitte schön:

    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 = "100,100"; 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="100,100"; 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) {
      $LogPfad = Join-Path $Textbox[0].Text.Replace('"','') $Textbox[1].Text.SubString(1)
      
      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 Optimal
      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 Optimal
      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


    Apropos 7-Zip, da wurde ja lieber gepoltert, als nachzufragen, warum die "7zG.exe" genutzt wurde.
    Und Vorschläge kamen da natürlich auch keine, obwohl ich extra darum bat.

    Also, wenn mir jemand mitteilen kann, bzw. möchte, wie ich dieses Manko beseitigen kann,
    wäre ich echt glücklich und könnte an andere Baustellen des Skriptes gehen.

  • Wer mag testen? Firefox4backup

    • Mira_Belle
    • 4. Juli 2024 um 01:17
    Zitat von StandingBill

    Eben habe ich die Exe mal spaßeshalber bei Virustotal hochgeladen.
    Das Teil halten 24 von 74 Antivirenprogrammen für Malware. 8)

    Na dann würde ich mal schnell den Rechner runterfahren und von einem Bootstick starten und ihr überprüfen.

  • Wer mag testen? Firefox4backup

    • Mira_Belle
    • 4. Juli 2024 um 00:29
    Zitat von geldhuegel

    Wenn ich das zip herunterladen will, zeigt mir der Defender an, dass es einen Virus enthält und verweigert den Download!

    Lass das mit dem Zip mal, oben steht das PowerShellSkript. Das ist die Grundlage der im Zip enthaltenen EXE.

  • Meldungen über Spam im Forum

    • Mira_Belle
    • 4. Juli 2024 um 00:05
    Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist.

    Wieder einmal "Werbung"!

  • Wer mag testen? Firefox4backup

    • Mira_Belle
    • 3. Juli 2024 um 23:05

    schlingo Danke für das Nachtreten! Hast Du fast 10 Minuten dafür gebraucht?

    .DeJaVu Zwanzig Minuten Später immer noch am Schimpfen, obwohl ich Deiner "Bitte" nachgekommen bin.

    startup Ja, sorry, die Beschreibung ist/war etwas dünn. Darüber hatte ich mir nicht wirklich Gedanken gemacht.

    Wer PowerShellSkript lesen kann, weis was es tut.

    Und ja, das Skript ist nicht perfekt, aber welche Software ist das schon?

    Also in aller Klarheit, wenn ihr es so wollt, es ist eine Beta!
    Benutzung auf eigene Gefahr!


    Zitat von startup
    Zitat von Mira_Belle

    Stattdessen wird nur rumgenölt und rumgestänkert. Danke.

    Genau deshalb: Schuster, bleib bei deinen Leisten :) n8

    Das kann man aber auch ganz böse deuten! Aber Du hast ja einen Smilie dran gemacht. n8.
    Aber wer nichts Neues ausprobiert, bleibt auf der Stelle und entwickelt sich nicht weiter.

    Und wenn das alle so gemacht hätten, wir würden immer noch auf Bäumen leben.

  • Wer mag testen? Firefox4backup

    • Mira_Belle
    • 3. Juli 2024 um 22:49

    startup Du hast einen Narren an mir gefressen, oder?

    Zitat von .DeJaVu

    Ich würde behaupten, das ist das dein Backup-Powershell-Script mit einem NET-Wrapper, der es lediglich entpackt und startet. Kann sich jeder mit dnSpyEx anschauen.


    Zitat von StandingBill

    Ziemlich viel negative Energie hier.
    Lasst sie doch ein Backuptool zusammenbasteln, wenn ihr das Spaß macht.

    Zurecht. Es gibt Grundregeln, wenn man Software verbreiten will. Entweder ist es offen, dann hat es einen Quellcode, oder kommerziell, dann closed source. Hier trifft beides nicht zu. In dem Wrapper kann alles Mögliche enthalten sein. Und daher die extreme Abwertung. Du magst vielleicht Spass dran haben, dein System zu himmeln, die Fehlermeldungen sagen einfach nur, dass hier überhaupt nicht drüber nachgedacht wurde. Nicht mal der Hinweis auf 7zip war gegeben, sowas gehört einfach dabei. Dabei ist 7zip nicht mal das eigentliche Problem hier, auch wenn man die Windows-ZIP-Routine hätte auch nehmen können. Es ist einfach ganz schlechter Stil, nur eine EXE zu verbreiten, keine Beschreibung dabei, nada. Und dann auch noch eine miese Umsetzung mit Wrapper für PS.

    Jetzt hör doch mal auf nur rumzustänkern. Ja, ich habe einen Fehler gemacht, habe aber gleich auf Deinen Hinweis
    das zugrundeliegende Skript nachgereicht.

    Und nein, wie ich schon schrieb, kein Profi! Habe mich wohl nicht an mir unbekannte Gepflogenheiten gehalten, sorry.

    Wenn hier weiter nur gestänkert wird, lösche ich halt einfach alles wieder. So'n Scheiß muss ich mir nicht geben!

    Und ich dachte, dass man mir hier eventuell unter die Arme greift, Hilfe anbietet und mich anleiten würde,
    Dinge besser zu machen.

    Stattdessen wird nur rumgenölt und rumgestänkert. Danke.

  • wow, AVM mit 16 Millionen Euro bestraft

    • Mira_Belle
    • 3. Juli 2024 um 22:38

    Mh, es ging eigentlich nicht um ein Produkt! Es ging um Preisabsprachen mehrerer Produkte.

    Und aus diesem Grund nannte ich jene Unternehmen, da diese genau wegen gleicher Vergehen Strafe zahlen mussten.

    Aber gut, lange Zeit habe ich "Müller" boykottiert, und dabei liebte ich die Müllermilch.
    Nun Jahre sind vergangen und aus der "kleinen" Firma ist ein riesiger Konzern geworden.
    Ich kann deren Produkte im Grunde gar nicht mehr meiden, ob im Aldi einen Pudding, im Lidl einen Joghurt,
    die Milch von Weihenstephan, egal was für ein Molkereiprodukt, fast überall hat dieser Konzern seine Finger drin.

    Ich habe das geschrieben, weil ich auch so dachte wie Du.
    Und ich will Dir Deine Meinung und Dein Handeln auch gar nicht absprechen.

  • Wer mag testen? Firefox4backup

    • Mira_Belle
    • 3. Juli 2024 um 22:22

    StandingBill
    HKCU:\Software\FF_Backup wird ja auch beim ersten Start angelegt, aber auch nur, wenn eine LW ausgewählt wurde.
    Und 7-zip muss installiert sein, sorry.

    Sören Hentzschel Bis dahin tut's das Tool. BackUp mit einem klick.

    Wenn ich das alles zu Fuß machen will, dauert's länger.
    Und ja, das komplette Profil mit allem drum und dran wird gesichert.
    Habe auch schon daran gedacht, einen Excludeparameter einzubauen.

    Das BackUp wird komprimiert und verschlüsseln sollte auch gehen, wenn ich es noch einbaue,

    Aber gut, ist halt nicht plattformübergreifend.

    Aber jeder fängt mal mit einer Fingerübung an.


    Leute, hört doch bitte auf, über Sinn und/oder Zweck zu diskutieren.

    Wenn ihr es nicht braucht, nicht haben wollt, ist das ok,
    aber lasst mir doch einfach den Spaß und das gute Gefühl, wenn das Teil macht, was es soll.

    Danke.

  • Wer mag testen? Firefox4backup

    • Mira_Belle
    • 3. Juli 2024 um 22:08
    Zitat von .DeJaVu

    Kein Quellcode, kein Vertrauen, keine Nutzung. Und ich weiss, wovon ich rede.

    Sorry.

    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 = $true; StartPosition = 'CenterScreen'; Size = "100,100"; 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="100,100"; 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) {
      $LogPfad = Join-Path $Textbox[0].Text.Replace('"','') $Textbox[1].Text.SubString(1)
      if (Test-Path "$LogPfad\Profilverzeichnis.zip") {rm -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") {rm -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 = 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
    • 3. Juli 2024 um 20:52

    Gibt nicht wirklich so viel dazu zu sagen.

    Erstellt ein Backup!

    Als erstes wird geprüft, ob der Firefox läuft,
    wenn ja, lässt er sich beenden, wenn nein, dann beendet man das Tool.

    Wenn der FF beendet wurde, dann öffnet sich ein Fenster, wo man das Backup hin haben möchte.
    Des Weiteren kann in einer Checkbox angegeben werden, dass auch das Programmverzeichnis gesichert werden soll.

    Probiert es mal aus.

    Grundvoraussetzung ist aber, dass der Firefox ganz normal im Programmverzeichnis %ProgramFiles% installiert wurde
    und dass sich das Profilverzeichnis unter %appdata%\Mozilla\Firefox\ befindet.

    Daran arbeite ich noch.

    Ansonsten bin ich für Verbesserungsvorschläge offen.

    Nachtrag.

    OK, der Name ist doof, aber Firesave wollte ich nicht nehmen und BackUp4Firefox fand ich jetzt auch nicht so prikelnd.
    Vielleicht gibt es ja einen besseren Vorschlag?


    ---------------------------------------------------------------------------------------------------------------------------------------------------

    Vergesst die EXE, nehmt das Skript und wer mit der Powershell umzugehen weis, bekommt das auch selber hin
    aus einem PS1 eine EXE zu machen.

    Aber mir ging es ja nie um die EXE selber, sondern um deren Funktion und die sind in dem Skript gegeben,

    denn das ist/war ja die Grundlage!

Unterstütze uns!

Jährlich (2026)

69,4 %

69,4% (538,17 von 775 EUR)

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