Author Topic: перемещение истории сообщений в Miranda NG из старого профиля  (Read 4442 times)

0 Members and 1 Guest are viewing this topic.

Offline Pinguin

  • Newbie
  • *
  • Posts: 6
Добрый день. Есть пользователь, который работает с Jabber-сервером, поднятым в локальной сети. Клиент Miranda IM 0.7.7.0. Возникла необходимость перенести профиль пользователя *dat на клиент Miranda NG 0.95.10.3 с сохранением истории сообщений. Установка Miranda NG чистая, рядом с Miranda IM, не в папку Miranda IM. Здесь возникает проблема:
1. если положить файл напрямую в папку профиля Miranda NG, то при запуске Miranda NG спросит "формат вашей базы данных является устаревшим. Нажмите "да", чтобы преобразовать ее в новый формат". При нажатии Да происходит конвертация, размер базы уменьшается с 2.6Мб до ~1Мб. При попытке просмотреть историю пользователей, вся история пуста.
2. пробовал запускать fixme.cmd над исходной базой, а затем открыть пофикшенную базу в Miranda NG. История все равно отсутствует.
3. пробовал запускать dbtool.exe (разных версий) над исходной базой и делал "агрессивный поиск повреждений", а затем открывал "починенную" базу с помощью NG. История все равно отсутствует.
4. пробовал создать чистую базу из-под Miranda IM 0.10.8.0, а затем с помощью Импорта внести историю из исходной базы в только что созданную. После прохождения импорта история все равно отсутствовала.

Пробовал все действия с базой проводить как на Windows XP SP3 x86, так и на Windows 10 1903 x64.

Какие шаги еще можно попробовать? В базе необходима только история сообщений. Спасибо.

VersionInfo:
Spoiler
CPU:  Intel(R) Pentium(R) 4 CPU 3.00GHz [x86 Family 15 Model 4 Stepping 1] [2 CPUs]
Installed RAM: 1024 MBytes
Microsoft Windows XP Professional Service Pack 3 (build 2600)
Internet Explorer: 8.0.6001.18702 (build 86001)
Administrator privileges: Yes
OS Languages: (UI | Locale (User/System)) : Russian/Russian | Russian/Russian
Free disk space on Miranda partition: 20586 MBytes

Miranda NG Version: 0.95.10.3 build #22076 (6f1bcea1fb)
Build time: 2 Sep 2019 17:12:24
Profile: C:\Documents and Settings\user_user\Application Data\Miranda NG\1\1.dat
Profile size: 1048576 Bytes
Profile creation date: 5 Jul 2019 9:31:25
Language pack: Russian (RU) [0419]
Service Mode: No

Active Plugins (13):
¤ AutoRun.dll v.0.1.0.1 [2 Sep 2019 17:13:08] - AutoRun
¤ AVS.dll v.0.98.1.2 [2 Sep 2019 17:12:28] - Avatar service
¤ CrashDumper.dll v.0.1.0.3 [12 Sep 2019 12:33:50] - Crash dumper
¤ Db_autobackups.dll v.0.1.0.4 [2 Sep 2019 17:12:36] - Db autobackuper
¤ Dbx_mdbx.dll v.0.95.9.1 [2 Sep 2019 17:13:50] - Miranda NG MDBX database driver
¤ Dbx_mmap.dll v.0.95.8.1 [2 Sep 2019 17:12:30] - Miranda NG mmap database driver
¤ Dummy.dll v.0.2.0.0 [2 Sep 2019 17:13:26] - Dummy protocol
¤ historypp.dll v.1.5.1.5 [2 Sep 2019 17:14:14] - History++
¤ Import.dll v.0.95.11.1 [2 Sep 2019 17:12:52] - Import contacts and messages
¤ Jabber.dll v.0.11.0.5 [2 Sep 2019 17:13:08] - Jabber protocol
¤ PluginUpdater.dll v.0.2.0.3 [2 Sep 2019 17:13:00] - Plugin updater
¤ SmileyAdd.dll v.0.3.1.2 [2 Sep 2019 17:12:46] - SmileyAdd
¤ TabSRMM.dll v.3.5.0.14 [2 Sep 2019 17:12:36] - TabSRMM

Protocols and Accounts:
-------------------------------------------------------------------------------
JABBER                   1 - Enabled 0 - Disabled  Loaded

Icon Packs:
-------------------------------------------------------------------------------
 HistoryPP_icons.dll [2 Sep 2019 17:14:06]
 Proto_Dummy.dll [2 Sep 2019 17:14:08]
 Proto_ICQ.dll [2 Sep 2019 17:14:08]
 Proto_Jabber.dll [2 Sep 2019 17:14:06]
 Proto_MetaContacts.dll [2 Sep 2019 17:14:08]
 TabSRMM_icons.dll [2 Sep 2019 17:14:08]
 xStatus_Jabber.dll [2 Sep 2019 17:14:06]
[close]


 

Online dartraiden

Профиль, вероятно в формате MMAP. MMAP от IM c некоторого момента несовместим с MMAP от NG.

Поэтому:
- положить в Miranda IM плагин IM Updater
- запустить Miranda IM и позволить плагину превратить её в Miranda NG древней версии
- затем дёргать проверку обновлений вручную и обновляться до тех пор, пока Miranda NG не превратится в 0.95.10.3

в процессе профиль будет переконвертирован сначала из старого MMAP в новый MMAP, а затем в MDBX, который используется актуальными версиями Миранды.

Перед всем этим, конечно, сделать резервную копию всей папки с Miranda IM, включая профиль, чтобы не было мучительно больно, если что-то пойдет не так.
« Last Edit: 12 09 2019, 12:54:25 by dartraiden »
 

Offline Pinguin

  • Newbie
  • *
  • Posts: 6
Спасибо за ответ. Действительно, по вашей методике с одним профилем получилось с помощью IM Updater обновиться с Miranda IM до Miranda NG 0.95.10.3 с сохранением истории.
Однако есть другие пользователи, с которыми такой фокус не удался. Что интересно, после того, как Miranda IM обновилась до промежуточной версии Miranda NG 0.94.9, история пользователя все еще видна. Однако после следующего обновления (еще появляется окно, что база в старом формате и должна быть переконвертирована) история уже отсутствует.
Судя по всему, хоть у этих пользователей и стоит сейчас версия Miranda IM 0.7.7.0, формат базы данных чем-то отличается.
Можете ли что-то еще подсказать, что попробовать?
 

Offline Apollo2k4

Pinguin, лучше перед этим прогонять базы dbtool-ом, и вообще миранда форкнулась от версии 0.9 т.ч. может имеет смысл обновить IM до этой версии.
«Все глупости совершаются с серьёзным выражением лица» © Кён «Меланхолия Сузумии Харухи»

Правильно заданный вопрос – 50% решения.
Правила постинга
 

Offline ghazan

Pinguin,
скорее всего битый профиль, при котором если читать историю сзади, то что-то есть, а если спереди - то нет (за это мы ненавидим mmap, да)
как выше совершенно правильно посоветовали, надо прогнать dbtool еще в старой миранде, оно умеет вытаскивать куски истории сзади тоже
 

Offline Pinguin

  • Newbie
  • *
  • Posts: 6
Спасибо за ответ.
Попробовал сделать следующим образом:
1. с помощью dbtool 0.8.2.0 прогнал проблемную базу с включенными галками "агрессивный поиск повреждений - пометить как прочитанные и конвертировать старые unicode в UTF8".
2. сконвертированную базу открыл в Miranda IM 0.10.8.0. История присутствует и читается.
3. закинул IM Updater и обновил Miranda IM 0.10.8.0 до Miranda NG. Когда обновление прошло до промежуточного Miranda NG 0.94.9, то история базы еще присутствует и читается. При следующем же поиске обновлений и обновления до Miranda 0.95.10.3 происходит конвертация базы (окно "база в старом формате и должна быть переконвертирована"). После этого база уже не содержит истории.

Пробовал другую версию dbtool 0.7.1.0, а затем те же самые шаги - результат отрицательный.
Что еще можете посоветовать?
 

Online dartraiden

А если так:

- в окне "база в старом формате и должна быть переконвертирована" отказаться от конвертации, миранда завершит работу
- в актуальную миранду поставить dbx_mmap через апдейтер и импортом втянуть профиль с предыдущего шага

если не прокатит, то
- остановиться ещё раньше, на шаге "Когда обновление прошло до промежуточного Miranda NG 0.94.9, то история базы еще присутствует и читается.". Обновления не проверять, завершить работу программы.
- в актуальную миранду поставить dbx_mmap через апдейтер и импортом втянуть профиль с предыдущего шага

если и это не прокатит, то остаётся сложный путь:
- остановиться на шаге "Когда обновление прошло до промежуточного Miranda NG 0.94.9, то история базы еще присутствует и читается.". Обновления не проверять, завершить работу программы.
- экспортировать каким-либо образом историю поконтактно в файлы (плагин Msg_Export, либо History++). Плагины ставить требуемой разрядности вручную отсюда, через апдейтер в старую миранду плагины ставить нельзя
- пытаться втянуть полученные файлы в актуальную миранду

больше в голову ничего не приходит
« Last Edit: 14 09 2019, 18:32:10 by Apollo2k4 »
 

Offline Pinguin

  • Newbie
  • *
  • Posts: 6
спасибо за ответ
Quote
- в окне "база в старом формате и должна быть переконвертирована" отказаться от конвертации, миранда завершит работу
- в актуальную миранду поставить dbx_mmap через апдейтер и импортом втянуть профиль с предыдущего шага

если не прокатит, то
- остановиться ещё раньше, на шаге "Когда обновление прошло до промежуточного Miranda NG 0.94.9, то история базы еще присутствует и читается.". Обновления не проверять, завершить работу программы.
- в актуальную миранду поставить dbx_mmap через апдейтер и импортом втянуть профиль с предыдущего шага

попробовал два этих способа. В обоих случаях на стадии импорта появляется следующее окно:

Code: [Select]
Количество контактов в базе: 322

Невозможно создать учётную запись (null) протокола JABBER
Импорт групп.

Импорт контактов.
Пропускаем контакт, учётная запись JABBER не может быть импортирована.
Пропускаем контакт, учётная запись JABBER не может быть импортирована.
Пропускаем контакт, учётная запись JABBER не может быть импортирована.
Пропускаем контакт, учётная запись JABBER не может быть импортирована.
Пропускаем контакт, учётная запись JABBER не может быть импортирована....

В итоге ничего не импортируется.

Установил плагин History++, увидел экспорт в html, txt и пр., экспортировал ради теста нсколько контактов. Однако как импортировать данные - не нашел. Кнопки импорта нигде не увидел.
С Msg_Export вообще не разобрался, как работать. После установки появилась опция "экспортированная история". При нажатии на нее появляется окно с ошибкой, что история отсутствует в папке профиля. Т.е. должна быть кнопка экспорта. И кнопки импорта аналогично не нашел.

 

Online dartraiden

Quote
Однако как импортировать данные - не нашел. Кнопки импорта нигде не увидел.
ПКМ по контакту → Импорт (если установлен плагин Import) Контакты предварительно должны иметься, поскольку H++ экспортирует только историю, а не сами контакты.

Quote
Т.е. должна быть кнопка экспорта.
И она есть в настройках плагина.

Quote
И кнопки импорта аналогично не нашел.
Её нет, это же Msg_Export. Я не помню, умела ли та версия экспортировать в JSON... если нет, то он бесполезен.
« Last Edit: 16 09 2019, 16:56:55 by dartraiden »
 

Offline Pinguin

  • Newbie
  • *
  • Posts: 6
Quote
ПКМ по контакту → Импорт (если установлен плагин Import) Контакты предварительно должны иметься, поскольку H++ экспортирует только историю, а не сами контакты.
был невнимателен, это действие пробовал на версии Miranda NG 0.94.9, и там кнопки Импорт не было при установленном H++. В 0.95.10.3 кнопка Импорта появилась. Выгруженная история поконтактно загружается, что уже в принципе неплохо.
Спасибо за помощь.
 

Online dartraiden

Импорт никакого отношения к H++ не имеет, хоть установлен H++, хоть нет. Import это самостоятельный плагин, который несколько месяцев назад мы научили понимать файлы в формате экспорта H++, QIP и пр. (до этого он умел импортировать только базы Miranda).
 

Online dartraiden

Можно слегка ускорить процесс, воспользовавшись тем, что импорт умеет всасывать массово.

То есть, можно из старой Миранды экспортировать поконтактно через H++ историю контактов в папку, затем все эти контакты каким-либо образом завести в новой Миранде (ну, скажем, руками добавить, лишь бы они очутились в списке контактов), а потом просто сказать импорту "вон папка с историй, втяни-ка историю из каждого файла в соответствующий контакт" (главное меню → Импорт → выбрать History++ из выпадающего меню и воспользоваться кнопкой "Выбрать папку"). Он всё разом втянет и раскидает по контактам. Чуть быстрее, чем в каждый контакт втягивать вручную.
« Last Edit: 18 09 2019, 17:18:56 by dartraiden »
 

Offline Pinguin

  • Newbie
  • *
  • Posts: 6
Quote
ПКМ по контакту → Импорт (если установлен плагин Import) Контакты предварительно должны иметься, поскольку H++ экспортирует только историю, а не сами контакты.
Quote
Импорт никакого отношения к H++ не имеет, хоть установлен H++, хоть нет. Import это самостоятельный плагин, который несколько месяцев назад мы научили понимать файлы в формате экспорта H++, QIP и пр. (до этого он умел импортировать только базы Miranda).
в моем случае это выглядело, как на скриншоте, т.е. кнопка Импорт отсутствует. После обновления до версии 0.95.10.3 кнопка Импорт появилась.

Массовый импорт попробую, спасибо.
 

Online dartraiden

Логично, потому как импортировать базу в контакт это несколько странно, поэтому опции в меню контакта и не было, а ничего более старый импорт импортировать не умел.