Цитата Nordek:
Вот и получилось что файл unins000.dat версии 5.2.9 был дополнен инсталлятором 5.5.1 - от того и сообщение Внутренняя ошибка: Cannot find utCompiledCode record for this version of the unistaller. »
|
Nordek, причем тут старая/новая версия компилятора? Установщик, собранный в последней версии компилятора, спокойно будет писать в лог деинсталлятора установщика, собранного в более ранней версии. Тут просто деинсталлятор unins000.exe собран в Unicode, а лог unins000.dat - в ANSI (или наоборот). Лог деинсталлятора состоит из заголовка и последовательности структур различных типов. utCompiledCode - это маркер одной из структур, где хранятся данные из секции Code (utRun - данные секции Run, utDeleteDirOrFiles - данные секции Dirs или программные папки и т.д.), после маркера utCompiledCode (тип Word) идет версия компилятора (тип LongWord), на нее-то и ругается деинсталлятор, встретив вражеский лог. Если, к примеру, версию 5.5.1 ANSI-компилятор запишет как $05050100, то Unicode-компилятор установит 25-ый бит и та же версия будет выглядеть как $85050100. Эти 2 числа не равны, поэтому Unicode-деинсталлятор, ожидая прочитать из лога число $85050100 и получив дулю в виде числа $05050100, страшно выругается.