Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Автоматическая установка Windows » Наборы обновлений для Windows XP/2003/Windows 7 » Инфо - [техзадание] Распространение обновления для CHM файла

Ответить
Настройки темы
Инфо - [техзадание] Распространение обновления для CHM файла

(*.*)


Сообщения: 36498
Благодарности: 6676


Конфигурация

Профиль | Сайт | Отправить PM | Цитировать


Изменения
Автор: Vadikan
Дата: 26-09-2006
Доброго времени суток!

Возможно, тема не совсем соответствует данному форуму, но я его выбрал намеренно. Во-первых, речь все таки об обновлении, а во-вторых - здесь наиболее квалифицированная аудитория для решения подобной задачи Так что прошу модераторов отнестись с пониманием, а участиков - помочь в решении поставленной задачи. К делу!

Общая информация

Речь идет о CHM файле, в котором собраны статьи клуба переводчиков OSZone.net (ссылка в подписи). Размер файла пока невелик, но расти он будет достаточно быстро - рано или поздно возникнет ситуация, при которой посетители могут не захотеть загружать файл весом в 15-20 мб ради 5 новых статей. В сязи с этим возникла идея выпуска ежемесячных обновлений для CHM файла. Другими словами, посетитель загружает базовый файл, а впоследствии загружает только обновления небольшого размера. Безусловно, полный файл также будет предлагаться для загрузки.

Задача

Нужно претворить в жизнь следующую идею. Посетитель загружает обновление, запускает его, указывает папку, где находится базовый файл и по окончании процесса обновления получает новый CHM файл. Очень желательно использовать для решения задачи свободное или бесплатное ПО.

Примерный алгоритм действий

Очевидно, для достижения поставленной задачи необходимо следующее
  1. Декомпилировать имеющийся CHM
  2. Скопировать файлы обновления в папку, где находятся извлеченные из CHM файлы
  3. Скомпилировать CHM заново

Дополнительная информация

Безусловно, необходимо будет выполнить декомпиляцию CHM из командной строки. Это можно осуществить следующим образом:
Код: Выделить весь код
HH.EXE -decompile D:/xTemp/decompile-folder C:/xTemp/XMLconvert.chm
Компилируется файл так:
Код: Выделить весь код
hhc foobar.hhp
HTMLHelp command-line

Кроме того, нужно предусмотреть возможность возникновения ситуации, в которой пользователь укажет неверный путь к CHM файлу (а также прочие отклонения от алгоритма).

Просьба
Во-первых, нужно оценить жизнеспособность идеи. Не исключено, что она неудачна или просто неосуществима.

Во-вторых, в силу катастрофического недостатка свободного времени, я не могу уделить решению данной задачи достаточно внимания. Я буду очень признателен тем участникам конференции, которые возьмут на себя труд по реализации проекта и подготовят необходимый код (пакетные файлы, конфигурационные файлы 7-zip и т.д. и т.п.).

Я постараюсь ответить на любые вопросы, связанные с проектом. Составлением CHM файла занимается Blast, который также будет участвовать в обсуждении.

Спасибо за внимание!

-------
Канал Windows 11, etc | Чат @winsiders


Отправлено: 08:31, 26-09-2006

 


Moderator


Сообщения: 53206
Благодарности: 15442

Профиль | Отправить PM | Цитировать


Vadikan, Blast
Видимо, свободного времени мало у всех :)
У меня тоже, тем не менее есть мысли и первый результат.

Задачка разделяется на две половины.
1. Некий скрипт, который предназназначен для вас (составителей CHM-справочников). То есть, запускать его будете вы. Он анализирует папки двух проектов (старого и нового) и создает файл (архив), содержащий изменения в новом проекте по сравнению со старым.

2. Скрипт-патчер для конечных пользователей. Декомпилирует старый chm, обновляет его содержимое из diff-файлов (их список может просто браться из текущей папки скрипта по маске "diff_*.7z" с сортировкой по имени) и создает новый chm.

Первую часть сделал, можете протестировать.
http://tools.oszone.net/V4sechkin/CHM/CHM_Env_Test.7z
(размер 4,8 метров).
Это тестовая среда.
Распакуйте содержимое архива в отдельную папку. Там будут подпапки 20060901 ("старый" проект), 20061007 ("новый" проект), непосредственно сам скрипт MakeDiffCHM.cmd (ну и 7za.exe до кучи).

Запускать так:
MakeDiffCHM.cmd 20060901 20061007
или наоборот:
MakeDiffCHM.cmd 20061007 20060901

Первый вариант более нормальный (проект 20061007 содержит несколько "новых" статей, которых нет в 20060901). Но второй тоже попробуйте, чтобы прочувствовать разницу (имитация удаления статей).

После выполнения создается файл типа Diff_20060901_20061007.7z (или Diff_20061007_20060901.7z).
В архиве в папке Files могут содержаться новые файлы и папки, обновленные файлы (не путайте новые с обновленными), а также списки удаленных папок (DelDirs.lst) и файлов (DelFiles.lst), если таковые имеются.

Осталось дело за малым, реализовать подзадачу номер два (патчер для пользователя). Это будет не сложнее, чем первая.
Жду вашей реакции, если вы еще не потеряли к этому интерес.

-------
«Компьютеру стало совсем худо, и он решил прекратить свои страдания».

Msgina.dll, диалог 2210

Это сообщение посчитали полезным следующие участники:

Отправлено: 13:23, 07-10-2006 | #21



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.



Moderator


Сообщения: 53206
Благодарности: 15442

Профиль | Отправить PM | Цитировать


Vadikan, Blast
В продолжение к предыдущему посту, часть вторая.

Тестовая среда номер 2:
http://tools.oszone.net/V4sechkin/CHM/CHM_Patch_Test.7z
(размер 5,9 метров).

Исходный патчер состоит из папки Bin (содержащей 7za.exe, hhc.exe, hha.dll) и скрипта UpdateCHM.cmd.
Дальше все просто - в папку со скриптом копируется "старый" chm-файл (предположим, club0.9.chm) и обновление (одно или несколько, сортироваться будут по имени).
Запускается скрипт. В ходе работы он создает папку New, если все пройдет удачно, в ней окажется "новый" chm-файл.

Проверяйте.

-------
«Компьютеру стало совсем худо, и он решил прекратить свои страдания».

Msgina.dll, диалог 2210

Это сообщение посчитали полезным следующие участники:

Отправлено: 20:56, 07-10-2006 | #22



Moderator


Сообщения: 53206
Благодарности: 15442

Профиль | Отправить PM | Цитировать


Vadikan, Blast
Продолжаю монолог :) Вернее, заканчиваю.

В первой подзадаче (см. пост 21) мне не совсем понравилось, что файлы сравниваются по дате. Это не всегда надежно, поэтому переделал скрипт. Теперь файлы сравниваются по содержимому (FC /B).
http://tools.oszone.net/V4sechkin/CHM/MakeDiffCHM.cmd

P. S. Забыл сказать, в полных путях не должно быть русских букв и спецсимволов (типа восклицательного знака). Скрипт MakeDiffCHM.cmd должен находиться на одном уровне с папками проектов, т. е. именно так, как сделано в архиве CHM_Env_Test.7z.

-------
«Компьютеру стало совсем худо, и он решил прекратить свои страдания».

Msgina.dll, диалог 2210

Это сообщение посчитали полезным следующие участники:

Отправлено: 11:41, 08-10-2006 | #23



Administrator


Сообщения: 25152
Благодарности: 3798

Профиль | Сайт | Отправить PM | Цитировать


Petya V4sechkin
Нет слов... серьезно, это даже больше чем я хотел изначально!
Спасибо огромное за проделанную работу, я даже почти разобрался что к чему, осталось подготовить обновленную версию chm (я хочу упростить структуру каталогов) и буду выпускать в мир.
Еще раз спасибо.
"Я тебя поцелую.. потом.. если захочешь" ©

-------
FAQ по Windows 10 .::. Настройка Центра обновления в Windows 10 .::. Чистая установка Windows 10 – пошаговая инструкция


Отправлено: 14:52, 08-10-2006 | #24

NRG NRG вне форума

Аватара для NRG

Ветеран


Автор проектов


Сообщения: 1453
Благодарности: 208

Профиль | Отправить PM | Цитировать


Petya V4sechkin

PROFESSIONAL ептить...

-------
Если я вам помог нажмите "Полезное сообщение":)


Отправлено: 18:57, 08-10-2006 | #25



Moderator


Сообщения: 53206
Благодарности: 15442

Профиль | Отправить PM | Цитировать


Blast
Еще одно ограничение - полагаю, скрипты выполняются только в более-менее современных операционках: Win 2000, XP или старше. Там расширенный синтаксис используется, на 98-х скорее всего не прокатит (надо проверять).

И еще один момент :)
У некоторых "особо продвинутых" людей настолько потвиканная и пропатченая (под Висту) система, что cmd-скрипты выполняются частично :) Я с такими примерами сталкивался (слава богу, нечасто).

Конечно, standalone exe-шник был бы предпочтительнее (вместо cmd), но на данном этапе (жизни) мне больше нравятся именно скрипты. За последнее время привык.

P. S. И спасибо на добром слове :)

-------
«Компьютеру стало совсем худо, и он решил прекратить свои страдания».

Msgina.dll, диалог 2210


Отправлено: 19:16, 08-10-2006 | #26



Administrator


Сообщения: 25152
Благодарности: 3798

Профиль | Сайт | Отправить PM | Цитировать


Petya V4sechkin
ок, спасибо за упреждение, в принципе несложно будет указать, что апдейт работает только на NT-системах от 2k начиная
ну.. неработоспособность чего бы то ни было у "особо продвинутых" людей это больше проблема этих самых "особо продвинутых" :) - опять же несложно указать, что при невозможности применения апдейта по тем или иным причинам всегда можно скачать полную свежую версию ;)
Цитата:
И спасибо на добром слове
да нет, это тебе спасибо за работу

-------
FAQ по Windows 10 .::. Настройка Центра обновления в Windows 10 .::. Чистая установка Windows 10 – пошаговая инструкция


Отправлено: 19:22, 08-10-2006 | #27


(*.*)


Сообщения: 36498
Благодарности: 6676

Профиль | Сайт | Отправить PM | Цитировать


Слетела подписка на тему почему-то...

Petya V4sechkin
Большое спасибо!
Цитата:
Видимо, свободного времени мало у всех
Я не сомневался, что ты можешь это реализовать, но надеялся на помощь остальных участников ;-) Я протестирую это дело на учебнике - возможно к его обновлениям тоже такую схему применим.

Отправлено: 11:11, 09-10-2006 | #28



Administrator


Сообщения: 25152
Благодарности: 3798

Профиль | Сайт | Отправить PM | Цитировать


Цитата Vadikan:
Слетела подписка на тему почему-то...
после применения быстрого редактирования слетает

-------
FAQ по Windows 10 .::. Настройка Центра обновления в Windows 10 .::. Чистая установка Windows 10 – пошаговая инструкция


Отправлено: 11:41, 09-10-2006 | #29



Moderator


Сообщения: 53206
Благодарности: 15442

Профиль | Отправить PM | Цитировать


Petya V4sechkin
Цитата:
Забыл сказать, в полных путях не должно быть русских букв и спецсимволов (типа восклицательного знака).
Как показал тест, это ограничение только для MakeDiffCHM.cmd
Скрипт для конечного пользователя UpdateCHM.cmd этой проблеме не подвержен (проверьте сами, на всякий случай).

Vadikan, Blast
Наверное, я щас глупую весчь скажу :)
Конечно, вы уже посмотрели содержимое скриптов и обратили внимание, например, на то, что MakeDiffCHM.cmd в ходе работы создает временную папку Diff в текущей папке. А перед тем, как создать, удаляет ее без вопросов (если она существовала).
Аналогичная ситуация с UpdateCHM.cmd и папкой New (куда в итоге помещается новый chm-файл).

-------
«Компьютеру стало совсем худо, и он решил прекратить свои страдания».

Msgina.dll, диалог 2210


Отправлено: 21:04, 09-10-2006 | #30



Компьютерный форум OSzone.net » Автоматическая установка Windows » Наборы обновлений для Windows XP/2003/Windows 7 » Инфо - [техзадание] Распространение обновления для CHM файла

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Распространение файла реестра на компьютеры в домене admiForever Microsoft Windows NT/2000/2003 15 19-12-2009 11:39
Доступ - Отображение CHM-файла с сетевого диска Gangabass Microsoft Windows Vista 3 30-06-2008 07:40
Проблема копирования файла addremov.chm после интеграции SP2 -Fred- Автоматическая установка Windows 2000/XP/2003 3 20-02-2007 16:25
кодировка файла CHM WChek Программирование и базы данных 1 25-01-2007 21:33
Открытие CHM-файла в полноэкранном режиме Dj_Fly Программное обеспечение Windows 15 09-12-2006 09:21




 
Переход