Мы сталкиваемся с проблемой внутреннего развёртывания Firefox 2.0.0.3, которая заключается в том, что инсталятор программы не может определить, какая версия новее: Firefox 1.5.0.11 или 2.0.0.3. В то же время кто-то просил меня создать список файлов для Firefox, который мог бы использоваться в качестве «сигнатуры файлов» (файл сигнатуры — это файл дистрибутива с уникальным размером, который может использоваться для идентификации отдельных версий дистрибутива).
Как результат проделанной работы я выкладываю эту таблицу:
Давайте сначала поговорим о проблеме “сигнатур файла”. К сожалению, я быстро обнаружил, что существуют несколько версий в которых размер файла firefox.exe был полностью идентичен. В частности:
* 1.0.3 и 1.0.4
* 1.0.5 и 1.0.6
* 1.5.0.5 и 1.5.0.6
* 1.5.0.10 и 1.5.0.11
* 2.0.0.2 и 2.0.0.3
Я продолжил исследования и обнаружил, что сравнение только занимаемого на диске места не даёт абсолютно никакого ответа о различии версий. Было решено узнать, не используют ли другие продукты, кроме наших, размер файла для определения сигнатуры. В таком случае имело бы смысл завести в Firefox маленький файл сигнатуры, который бы увеличивался в размере на один байт с каждым выпуском. Это дало бы нам файл, с помощью которого мы могли бы проследить порядок выхода версий по размеру файла.
Вторая проблема гораздо более серьёзна. Оказалось, что несмотря на исправление ошибки 286825, основная проблема с файлом контроля версий Firefox осталась. В частности, взгляните на версию файла (это не версия программы) Firefox 1.5.0.11 и Firefox 2.0.0.3. Вы можете заметить, что для Firefox 1.5.0.11 это 1.8.20070.31202, а для Firefox 2.0.0.3 — 1.8.20070.30919. Итак, если приложение использует версию файла для определения того, какой из них является последней версией программы, то получится что Firefox 1.5.0.11 новее чем Firefox 2.0.0.3. Это и есть та причина, которая вызывает проблемы при установке программы.
Мы можем обойти эту проблему со своей стороны, но всё равно нам необходима другая система назначения правильных версий файлов Firefox. В противном случае мы получаем ещё одно препятствие для широкого использования Firefox.
Источник
Перевод выполнялся под строгим контролем Infant'a и Merlyel'а
==
Посвящается памяти самого мега-спамера, уехавшего в газенвагене с платформы 9¾
F.I.R.E.F.O.X.: Fearsome, Intimidating, Redhead-Eating Fiend from the Ominous Xenopolis
Скиньтесь мне на новый MacBook Pro! Кто сколько может!
Отсутствует
Modex
А нельзя просто прописывать в обычном текстовом файле версию Firefox'а? При установке, версия устанавливаемой версии будет сравниваься с версией из этого файла.
Wake up in the morning...Get into bed
Closing my eyes...I rest my head.
Отсутствует
лучше хранить в самом экзешнике дополнительно официальный номер версии, по которому и определять кто новее или в отдельном текстовом файле. в крайнем случае, можно использовать не размеры файлов firefox.exe, а его md5-суммы
Самый простой и наиболее эффективный, это идентификация по штамму времени (сам использую его в своих программах). Любой компилятор, при компиляции записывает 4 байта кодированной даты+время с точностью до секунды в PE заголовок.
Самый простой и наиболее эффективный, это идентификация по штамму времени (сам использую его в своих программах). Любой компилятор, при компиляции записывает 4 байта кодированной даты+время с точностью до секунды в PE заголовок.
А как декодировать ети 4 байта в нормальное представление даты????
А почему нету инфо о MineField?
Юникс, Линукс, Mac OS X! Все против Хриндоус XP и Хриндоус Виста!
Как и linux'оиды, я тоже в кедах потому что пользуюсь BSD (Mac OS X) , а BSD создана на основе Unix'а , а Linux тоже создан на основе Unix'а
Отсутствует
unixman
А зачем она? сравнивают-то релизы... обычные пользователи Minefield не используют.
F.I.R.E.F.O.X.: Fearsome, Intimidating, Redhead-Eating Fiend from the Ominous Xenopolis
Скиньтесь мне на новый MacBook Pro! Кто сколько может!
Отсутствует
Бред,
все исследование целиком.
1. сто лет назад придумали md5
2. а если у нас екзешник самособраный, или это линух...
3. вообще вопрос для кого исследование может быть полезно ? если для тех кто инсталер собирает, то они сами разберутся, а если для тех кто екстеншены пишет, то вносит еще большую путаницу, насколько я понимаю есть тип продукта (id) и его версия, думаю две функции, которые можно вызвать из динамически слинкованой либы установленого файрфокса.
Отсутствует
Честно говоря, с моей делитанской точки зрения, звучит всё это как-то по-детски. Даже я сразу понял что столбец «Size on disk» ничего не даст, т.к. он у всех будет разный, так или иначе. Автор же тут делает далекоидущие выводы:
Я продолжил исследования и обнаружил, что сравнение только занимаемого на диске места не даёт абсолютно никакого ответа о различии версий.
Вообще, статья результатов исследования как-то путано написана (подмена понятий?), особенно в начале (возможно это вина переводчиков — оригинал я поленился посмотреть).
Мда… Видимо сие произведение всё-таки придётся отправить прямиком в доменную печь, т.к. я из распирающего меня любопытства, которое переплюнуло лень, сходил по ссылке и всё оказалось ещё хуже:
NOTE: I’ve updated this table to include a new field, Size on disk. This field is obtained from the General Properties page for FIREFOX.EXE. I got my original file sizes by looking at the file system from a command line and they correspond to Size, NOT Size on disk. I have no idea why, but I wanted to post both values here for posterity.
Ууууу… My applouse here.