Форум программистов, компьютерный форум, киберфорум
damix
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  

Восстановить юзерскрипты Greasemonkey из бэкапа браузера

Запись от damix размещена 15.01.2026 в 19:20
Показов 3316 Комментарии 0
Метки greasemonkey, powershell

Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым.
Но восстановить их можно так.
Для этого понадобится консольная утилита SQLite и скрипт Import-Greasemonkey-Scripts.ps1 из этой статьи.
  1. Сделайте бэкап нового профиля.
  2. Найдите в папке <старый_профиль_браузера>\storage\default файл 61413404gyreekansoem.sqlite. Их может быть несколько, если это так, попробуйте взять самый новый из них. Скопируйте его в одну папку с Import-Greasemonkey-Scripts.ps1 и sqlite3.exe..
  3. Отредактируйте первые строчки скрипта. Укажите пути к вышеуказанным файлам и к файлу 61413404gyreekansoem.sqlite в новом профиле. Оба фала должны быть доступны на запись (да, даже файл со старой базой) тому пользователю, который будет запускать скрипт.
    PowerShell
    1
    2
    3
    4
    
    # Paths
    $oldDatabasePath = "C:\Users\DAMIX\Documents\TEMP\61413404gyreekansoem.sqlite" # Path to old database
    $newDatabasePath = "C:\Users\DAMIX\AppData\Roaming\Mozilla\Firefox\Profiles\f9aziwfo.damix\storage\default\moz-extension+++b2a1888f-b67e-4552-b3de-3feec1b02009\idb\61413404gyreekansoem.sqlite" # Path to new database
    $tool = "C:\Users\DAMIX\Documents\TEMP\sqlite3.exe" # Path to new sqlite
  4. Запустите скрипт Import-Greasemonkey-Scripts.ps1. Он сам закроет и откроет Firefox.

После этого юзерскрипты из сторого профиля должны быть доступны в новом.

Основано на Othman-Saleh/Import-Greasemonkey-Scripts/.

Если выдает
Code
1
2
3
Dumping data from the old database...
sql error: unable to open database file (14)
sqlite3.exe failed while dumping the old database (exit code 1). Script will stop.
проверьте права на файлы.

Но впредь лучше все же делать бэкапы скриптов в самом Greasemonkey. Бэкапа профиля для этого недостаточно.

Import-Greasemonkey-Scripts.ps1
PowerShell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
# Paths
$oldDatabasePath = "C:\Users\DAMIX\Documents\TEMP\61413404gyreekansoem.sqlite" # Path to old database
$newDatabasePath = "C:\Users\DAMIX\AppData\Roaming\Mozilla\Firefox\Profiles\f9aziwfo.damix\storage\default\moz-extension+++b2a1888f-b67e-4552-b3de-3feec1b02009\idb\61413404gyreekansoem.sqlite" # Path to new database
$tool = "C:\Users\DAMIX\Documents\TEMP\sqlite3.exe" # Path to new sqlite
 
# Check for old database and sqlite first
if (-not (Test-Path -LiteralPath $oldDatabasePath)) { Write-Host "Old database path not found. Stopping script." -ForegroundColor Red return }
if (-not (Test-Path -LiteralPath $tool)) { Write-Host "Sqlite not installed. Please get it for free here: https://sqlite.org/download.html" -ForegroundColor Red return }
 
# Shut down Firefox
Write-Host "Shutting down Firefox..."
Stop-Process -Name "firefox" -Force -ErrorAction SilentlyContinue
 
# Wait for Firefox to exit
Write-Host "Waiting for Firefox to shut down..."
while (Get-Process -Name "firefox" -ErrorAction SilentlyContinue) {
    Start-Sleep -Seconds 1
}
Write-Host "Firefox is completely shut down."
 
# Delete the current database
Write-Host "Deleting the current gyreekansoem.sqlite..."
Remove-Item -Path $newDatabasePath -Force
 
# Start Firefox
Write-Host "Starting Firefox..."
Start-Process -FilePath "firefox.exe"
 
# Wait for Firefox to start
Write-Host "Waiting for Firefox to start..."
while (-not (Get-Process -Name "firefox" -ErrorAction SilentlyContinue)) {
    Start-Sleep -Seconds 1
}
 
# Wait an additional 5 seconds after Firefox has started
Write-Host "Firefox is running. Waiting 5 more seconds..."
Start-Sleep -Seconds 5
 
# Shut down Firefox
Write-Host "Shutting down Firefox..."
Stop-Process -Name "firefox" -Force -ErrorAction SilentlyContinue
 
# Wait for Firefox to exit
Write-Host "Waiting for Firefox to shut down..."
while (Get-Process -Name "firefox" -ErrorAction SilentlyContinue) {
    Start-Sleep -Seconds 1
}
Write-Host "Firefox is completely shut down."
 
# Dump data from the old database
Write-Host "Dumping data from the old database..."
$sqliteDumpPath = "$env:TEMP\dump.sql"
# &$tool $oldDatabasePath ".dump" > $sqliteDumpPath
&$tool $oldDatabasePath ".dump" | Out-File -FilePath $sqliteDumpPath -Encoding utf8
if ($LASTEXITCODE -ne 0) {
    Write-Host "sqlite3.exe failed while dumping the old database (exit code $LASTEXITCODE). Script will stop." -ForegroundColor Red
    return
}
 
# Filter the dump file to include only the desired INSERT statements
Write-Host "Filtering the dump file..."
(Get-Content $sqliteDumpPath) -match "INSERT INTO (object_data|unique_index_data)" | Set-Content $sqliteDumpPath
 
# SQL commands to drop indexes and triggers
$sqlCommands = @"
DROP INDEX IF EXISTS index_data_value_locale_index;
DROP INDEX IF EXISTS unique_index_data_value_locale_index;
DROP TRIGGER IF EXISTS object_data_insert_trigger;
DROP TRIGGER IF EXISTS object_data_update_trigger;
DROP TRIGGER IF EXISTS object_data_delete_trigger;
DROP TRIGGER IF EXISTS file_update_trigger;
"@
 
# Execute the SQL commands using sqlite3.exe
Write-Host "Dropping indexes and triggers in the new database..."
$sqlCommands | &$tool $newDatabasePath
 
 
# Import data into the new database
Write-Host "Importing data into the new database..."
Get-Content $sqliteDumpPath | &$tool $newDatabasePath
 
 
# Start Firefox to verify the data is imported
Write-Host "Starting Firefox..."
Start-Process -FilePath "firefox.exe"
 
# Suggest a backup
Write-Host "Remember to back up the new database immediately and regularly!"
 
# Done
Write-Host "Script complete. Enjoy!"
Метки greasemonkey, powershell
Размещено в Без категории
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Всего комментариев 0
Комментарии
 
Новые блоги и статьи
Лето уходит
kumehtar 17.08.2026
Мысли в слух
kumehtar 17.08.2026
Забавно, насколько сейчас стала доступна информация. Например о магии, духовном развитии, медитациях, и других подобных направлениях, ранее зачастую тайных, передаваемых от учителя к ученику. Хотя. . .
Перемещение строк из ТЧ в другой документ с учетом текущего пробега
Maks 17.08.2026
Реализация из решения ниже выполнена на примере нетипового документа "Автозапчасти", с ТЧ "Шины". За основу взят алгоритм отсюда: https:/ / www. cyberforum. ru/ blogs/ 359708/ 10838. html Задача: . . .
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru