Показать полную графическую версию : [техзадание] Распространение обновления для CHM файла
Petya V4sechkin
16-10-2006, 17:30
Душераздирающая история:
http://forum.oszone.net/post-498610.html#post498504
Упростил UpdateCHM.cmd, убрав внешнюю команду XCopy (других внешних команд в скрипте нет).
http://tools.oszone.net/V4sechkin/CHM/UpdateCHM.cmd
Vadikan
А если пойти по другому пути?
0. Индекс
1. Первый Базовый файл. Например лимит в 3 мега.
2. Второй Базовый файл.
3. Третий Базовый файл.
х. текущий файл обновления.
Идея втом, что мы заменяем индекс и добавляем статьи как новые так и измененные в новый файл.
При добавлении все просто, просто - замена в индексе, при изменении статьи сложнее, нужно будет зарубить ссылку на старую версиию, и перенаправить на новую. Еще одна проблемка, это ссылки из других статей на изменяемую.
P.S. сильно не пинай если что, возможностей chm не знаю, просто идею генерирую.
P.P.S. 2 ALL
Народ, вы чето углубились в дебри. Я конечно понимаю, что большинство unattended сборшиков в некоторой степени программеры, но не настолько же.... :(
Хотя я и сам программер, но скачивать и чего то там декомпилировать/компилировать нехочу... По работе этого хватает...
Если для Автоматизации установки, я еще пойду на такую жертву, то для других док, не хочу.
А то что если удасться решить эту проблему элегантным способом, она будет растирожирована по всему сайту, я не сомневаюсь.
Кстати, а кто нибудь проверял как ведет себя комплект когда есть русские буквы в %Temp%?
Я проверял, давно правда, ещё 11 ноября.
Работал в папке с содержательным названием с пробелами и на кирилике [D:\Н A Д O\Обновление]. Нормально работает. Но совсем не так, как хотелось бы лично мне для обновления "Клуба переводчиков". :(
В том плане, что в простенький CHM - вполне можно впихать обновление.
Но вот ни Индексирование ни Поиск этим способом - не получится.
Дал вагон и маленькую тележку замечаний в почту Vadikan-у, но так на этом пока всё и закончилось. :)
А если пойти по другому пути?
0. Индекс
1. Первый Базовый файл. Например лимит в 3 мега.
2. Второй Базовый файл.
3. Третий Базовый файл.
х. текущий файл обновления.Я рассматривал такой вариант, но я вижу большое удобство CHM-файла в наличии полнотекстового поиска. В системе из нескольких файлов вроде искать сразу по всем не удастся.
Но вот ни Индексирование ни Поиск этим способом - не получится.Индекс не работает, если он формируется из спецтегов в страницах - при распаковке они не сохраняются. Но я переделал индекс - теперь он в виде отдельного файла. Поиск у меня тоже работает, кстати. Вообще, у меня все работает, как надо (кроме кириллицы в путях, конечно). Народ, вы чето углубились в дебри. Я конечно понимаю, что большинство unattended сборшиков в некоторой степени программеры, но не настолько же.... :(Да на самом деле, все очень просто. Для конечного пользователя все сводится к:
1. Загрузке Update Kit. Постоянный набор файлов для произведения всех операций достаточно загрузить один раз. Размер чуть больше 500 кб.
2. Загрузке обновления. В зависимости от количества картинок размер будет варьироваться, конечно. Текст-то жмется хорошо.
3. Запуску пакетного файла из Update Kit (при условии, что файлы пп. 1 и 2 в одной папке с имеющимся chm.
В принципе, все. Не сложнее аддона ;) Специалист же делал :)Кстати, а кто нибудь проверял как ведет себя комплект когда есть русские буквы в %Temp%?А Temp там и не участвует - только текущая папка CHM.
Petya V4sechkin
А можно в MakeDiffCHM.cmd условие добавить, чтобы при сравнении старой и новой версии игнорировался файл unattended.oszone.net.chm? Просто в index.hhp путь к результирующему CHM-файлу прописан относительно расположения index.hhp - создается в той же папке -> мешает при сравнивании. Мне кроме IF EXIST ... COPY трудно придумать что-то. Спасибо!
APOSTOL
Загрузи, плиз, текущую версию учебника когда время будет, я тебе на тестирование пришлю все файлы текущего обновления (само оно 33 кб в архиве).
P. S. В этом сообщении я говорю применительно к учебнику по автоустановке, а не к статьями клуба переводчиков.
говорю применительно к учебнику..., а не к статьями... :up:
Vadikan, завтра стащу, встречно задвигая Клуб на ФТП. Шлите апельсины бочками ©
1. Загрузке Update Kit.
А там будут 7za.exe, hhc.exe и hha.dll ?
Что-то на дефолтовой Винде я такого не нашёл, а то, что натаскал "слева" обладает интересным свойством: очень значительной разницей в размерах одноимённо-натасканных файлов. Есть надежда, что именно поэтому я потерял Поиск. Хотелось бы, чтоб ВСЕ работали с одними и теми же файлами Kit.
Вот куда нить поклали-бы его до кучи прям щас... Или я что-то здесь пропустил :spy: ?
А насчёт
когда есть русские буквы в %Temp%?
Сомнительно, что у интересующегося унаттендой, вплоть до желания самостоятельно обновляться, до сих пор эта папка не вЫровнена до корня :)
Petya V4sechkin
08-01-2007, 15:07
Vadikan
А можно в MakeDiffCHM.cmd условие добавить, чтобы при сравнении старой и новой версии игнорировался файл unattended.oszone.net.chm? Просто в index.hhp путь к результирующему CHM-файлу прописан относительно расположения index.hhp - создается в той же папке -> мешает при сравнивании.Готово:
http://tools.oszone.net/V4sechkin/CHM/MakeDiffCHM.cmd
Для универсальности игнорируются все файлы с расширением .chm, ведь вряд ли они могут быть внутри проекта?
P. S. Чего-то команда fc /b перестала мне нравиться - если файлы слишком разные и большие по размеру, сравнение жестко тормозит за счет того, что оно пытается вывести все различия в stdout (или в >nul, не важно). Может, накропаю программку для сравнения, более быстро работающую..
P. P. S. UpdateCHM.cmd тоже чуток обновлен - теперь удаление папки New остается на совести пользователя (чтобы скрипт, не дай бог, не удалил чего-нибудь нужного).
Petya V4sechkin
08-01-2007, 15:44
APOSTOL
Вроде бы все достаточно доходчиво описано на 3-ей странице:
http://forum.oszone.net/post-494875-22.html
Update Kit я пока не выкладывал отдельно (только в составе тестовой среды), поскольку сабж не внедрялся.
Если надо - пожалуйста (http://tools.oszone.net/V4sechkin/CHM/UpdateCHM.7z) (размер 535 кило).
P. S. Кстати говоря, если где-то существуют файлы hhc.exe, hha.dll версий более свежих, чем 4.74.8702 (из HTML Help Workshop), киньте ссылочку.
Petya V4sechkin, всё доходчиво. :) Vadikan использует меня в качестве тупого ламера для наступания на такие грабли, которые остальные просто не заметят.
Update Kit в составе тестовой среды
Представляешь, как я обрадовался, когда скачал 6 Метров по модему и обнаружил внутри 5.5-Метровый Клуб версии 0.9 :haha:
Хотя изначально в теме речь шла о статьях клуба переводчиков, я учебник держал в уме в любом случае. Теперь, когда статьи клуба разбиты на три файла идею vserd надо обдумать, но именно для удобства доступа сразу ко всем файлам из одного индекса. Насчет обновлений я пока не уверен... Слишком много мелких обновлений для разных файлов тоже могут запутать :) Учебник же, по крайней мере, один :)
APOSTOLПредставляешь, как я обрадовался, когда скачал 6 Метров по модему и обнаружил внутри 5.5-Метровый Клуб версии Именно поэтому я и сказал, что выложу сам :)
Vadikan использует меня в качестве тупого ламера для наступания на такие грабли, которые остальные просто не заметят.Эээ... я никогда не думал о такой форумулировке, однако проблемы неопытных пользователей тебе почему-то понятнее, чем мне :)
Сомнительно, что у интересующегося унаттендой, вплоть до желания самостоятельно обновляться, до сих пор эта папка не вЫровнена до корняЯ, например, не меняю значение этой переменной :)
Petya V4sechkin
Готово:
http://tools.oszone.net/V4sechkin/CHM/MakeDiffCHM.cmd
Для универсальности игнорируются все файлы с расширением .chm, ведь вряд ли они могут быть внутри проекта?Спасибо! Я протестирую попозже. Конечно, там в проекте .chm файлов быть не должно.
. Чего-то команда fc /b перестала мне нравиться - если файлы слишком разные и большие по размеру, сравнение жестко тормозит за счет того, что оно пытается вывести все различия в stdout (или в >nul, не важно). Может, накропаю программку для сравнения, более быстро работающую..Думаю, что в этом нет особой нбх. Типичные изменения в учебнике помимо файлов нбх для компиляции затрагивают несколько html-файлов - лог обновлений и главная страница всегда, плюс несколько других страниц. Размер файлов не очень большой.
- Хуже, чем просто наступить на грабли - это наступить на детские грабли...
до сих пор эта папка не вЫровнена до корня
Я, например, не меняю значение этой переменной
Дык у тебя и нет там в пути русских букв :P
В общем так: на сейчас ОЧЕНЬ важно, утановлен ли в системе этот самый HTML Help Workshop...
У вас у всех он установлен :haha:
Винды проверял две: русская и английская, обе SP2. Естественно, обе - левые. На английской HTML Help Workshop никогда не ставился.
При его отсутствии ни фига нормально не работает, наверняка потому, что
Компиляция:
HHC6003: Error: The file Itircl.dll has not been registered correctly.
Microsoft HTML Help Compiler 4.74.8702
Попытки регистрации regsvr32 Itircl.dll проходит успешно (в Винде есть такая в System32), но результат - не меняется. Пытался подсунуть саму эту DLL во все папки поближе - по барабану.
В результате файл таки-ДА, пересобирается, но Поиск отсутствует, а в Индексе не суммируются совпадающие статьи и он не складывается по алфавиту.
При установке HTML Help Workshop - всё работает просто замечательно. Работает ВСЁ и правильно. В папке с любым количеством пробелов и русских букв.
При деинсталляции HTML Help Workshop получаем обратно первый вариант, один-в-один. :(
Во-вторых: в пакете от Petya V4sechkin, который "размер 535 кило", файлы с размерами
7za.exe - 466
hha.dll - 819
hhc.exe - 51
у меня есть такие же файлы, тех же версий (в свойствах файла), с датой создания на час позже, но размеры
7za.exe - 461
hha.dll - 420
hhc.exe - 27
правда, плющатся в 7-zip гораздо хуже, 598 получается. Работают - одинаково. Где тут фишка - не понял.
APOSTOLДык у тебя и нет там в пути русских букв :PТеперь есть, я в русской Висте работаю ;) Хотя нет, имя пользователя все равно латиницей. И тут вообще другая папка по умолчанию - C:\Users\<Username>\Appdata\Local\TempВ общем так: на сейчас ОЧЕНЬ важно, утановлен ли в системе этот самый HTML Help Workshop...Хороший и главное своевременный вопрос :) Я как-то на работе его ставил (по дефолту в Program Files), копировал папку в другое место, корректно удалял приложение, и после этого он из другого места работать правильно не хотел. Библиотеку ту я тоже регистрировал и подсовывал ему в папку - ничего не получалось, не в ней дело видимо. Копирование папки обратно в Program Files восстанавливало нормальную работу. В результате файл таки-ДА, пересобирается, но Поиск отсутствует, а в Индексе не суммируются совпадающие статьи и он не складывается по алфавиту.Помнишь мы с тобой разбирались, почему у меня файл меньше твоего был? Поиск не компилировался у меня вот после тех ^^ экспериментов. Сейчас я повторил эксперимент - при отсутствии Workshop в Program Files компиляция идет с ошибкой и файл создается без поиска (индекс кстати работает, но это наверное потому, что спецтеги до сих пор в теле страниц прописаны).
Process Monitor'ом сходу ничего не вычислил...
копировал папку в другое место
Это я очень давно пробовал - нельзя ли его НЕ инсталлировать, он работать отказался. Плюнул.
Вот htm2chm 3.0 - портабелен, примерно как WinRAR - только один раз запустить, чтоб прописался в Системе.
Process Monitor'ом сходу
Ну, тут я естчё меньше понимаю. И на кого теперича взвалим данный пункт ?
Petya V4sechkin
09-01-2007, 13:08
А я почему-то думал, что hha.dll достаточно :( Почему я так думал, сам не знаю..
Ладно, гугль нам поможет (http://www.google.com/search?q=HHC6003). Как оказалось, itircl.dll вообще ни при чем, дело в itcc.dll.
Вот новый вариант:
http://tools.oszone.net/V4sechkin/CHM/UpdateCHM.7z
(перед компиляцией скрипт копирует itcc.dll в system32 и регистрирует).
Petya V4sechkin, теперь всё работает как надо. Спасибо :)
Petya, а нельзя чуть-чуть доделать MakeDiffCHM.cmd так, чтобы он, используя тот-же набор из такой же своей папки , сам мог разбирать CHM-ы ?
В смысле:
Я беру папку проекта, в которой есть [Bin] и MakeDiffCHM.cmd (ой, да, и ещё MakeDiffCHM.bat), запёхиваю туда только ДВА *.chm и один *.hhp - а MakeDiffCHM.cmd бы в лоб сравнивал эти два CHM, в порядке, указанном в MakeDiffCHM.bat, с выводом разницы в 7-zip.
[b]Vad мне предложил самостоятельно вставить какую-то магическую формулуHH.EXE -decompile D:/xTemp/decompile-folder C:/xTemp/XMLconvert.chmно произвести какие-либо действия сложнее, чем выпучить глаза - я не смог... Я в программинге - ни ПномПень
Petya V4sechkin
27-01-2007, 19:53
APOSTOL
Конечно, можно. А надо это кому-нибудь? Вроде бы "заказчиками" изначально выступали Vadikan и Blast.
И вот это:
а MakeDiffCHM.cmd бы в лоб сравнивал эти два CHM, в порядке, указанном в MakeDiffCHM.batнепонятно.
А надо это кому-нибудь?
(задумчиво чеша репу) наверное только мне - это я сейчас веду CHM Клуба переводчиков... :( - Vadikan не даст соврать.
а MakeDiffCHM.cmd бы в лоб сравнивал эти два CHM, в порядке, указанном в MakeDiffCHM.bat
вот сейчас форма запуска MakeDiffCHM.cmd <папка_старого_проекта> <папка_нового_проекта>, то есть сравниваются ПАПКИ.
Так как у меня в наличии есть и "старый" CHM и "новый" CHM, в которых заведомо нет лишних файлов (а в Папках, из которых я их делаю, какой только лишней фигни не лежит) - я просто пихал оба CHM в Проект, и (гы, врукопашную) разваливал в ПАПКИ. Затем в "новую" подсовывал "новый" *.hhp. Дальше - получалась разница между этими папками. Очень удобно, учитывая что я на этот момент вряд-ли бы уже вспомнил, в каких именно файлах (или рисунках - я некоторые конвертировал для уменьшения размера) старого CHM были произведены изменения.
Вот и спрашиваю: а можно эту рукопашную всунуть внутрь утилиты, потому как сам я это сделать - :patsak: ?
Petya V4sechkin
27-01-2007, 21:17
APOSTOL
(задумчиво чеша репу) наверное только мне - это я сейчас веду CHM Клуба переводчиков...Так бы сразу и сказал :)
Как такой вариант?
MakeDiffCHM2.cmd <старый_chm> <новый_chm> <новый_hhp>
Petya V4sechkin
27-01-2007, 21:43
А как тогда задать имя Diff-файла?
MakeDiffCHM.bat с содержанием
MakeDiffCHM2.cmd <старый_chm> <новый_chm>- Да. При разборке CHM и должны получится те-же папки <папка_старого_проекта> и <папка_нового_проекта>.
<новый_hhp>- не знаю, а надо-ли ? Лучше схватить тот, который рядом с CHM-файлами в Проекте лежит (с той же проверкой: "а где файл ?" и "а хрен-ли он не один ?"), и перепихнуть его в папку, получившуюся из указанного <новый_chm> - <папка_нового_проекта>.
Имя Diff-файла - из старого принципа - Diff_<старый>_<новый>, которые указаны в MakeDiffCHM.bat (в смысле, с которыми параметрами запускается утилита).
Да, и ещё: а зачем там внутри листинги отличий ? Вроде при обратной сборке UpdateCHM.cmd они участия не принимают ?
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC