NSIS не распаковывает, если новее

Продукт, над которым я работал, использовал инсталлятор, отличный от NSIS. В настоящее время все еще есть клиенты, у которых есть версия продукта, которая использовалась до того, как мы использовали NSIS.

Сейчас они пытаются установить новую версию нашего программного обеспечения, использующую установщик NSIS. Проблема в том, что при попытке установить поверх любой версии, которая была до установки NSIS, некоторые файлы не извлекаются, что приводит к сбою нашего продукта.

Я попытался найти и понять, как NSIS проверяет наличие «ifnewer», но, похоже, ничто не объясняет подробно, что я могу исправить проблему.

Следует отметить, что переход от одной установленной версии NSIS к другой работает нормально. Так что это прямой результат попытки установки поверх версии нашего продукта, которая не была установлена ​​с помощью NSIS.

Спасибо


person Nedloh    schedule 09.07.2010    source источник


Ответы (1)


Может быть проблема с датой последнего изменения в старом установщике? (В будущем и т. Д.)

person Anders    schedule 09.07.2010
comment
Я только что снова установил старый установщик. Дата и время последнего изменения совпадали с временем установки. Используется новый установщик NSIS, последнее изменение осталось прежним, и единственное, что нужно изменить, - это время последнего доступа. Вот почему мне было интересно, как NSIS обрабатывает свою проверку на наличие ifnewer, если он проходит по последнему изменению, не должно быть проблем. - person Nedloh; 09.07.2010
comment
Он использует функцию CompareFileTime для WIN32_FIND_DATA.ftLastWriteTime существующего файла (поэтому новый файл должен быть новее, чем этот) - person Anders; 10.07.2010
comment
@Anders: Разве в новом файле не всегда будет LastWriteTime текущего времени? Или он сохраняет LastWriteTime файла перед компиляцией NSIS и использует его для сравнения? - person Nedloh; 10.07.2010
comment
На самом деле, теперь, когда я думаю об этом, это действительно не объясняет проблему, почему тогда установка поверх копии нашего продукта, которая использовала установщик NSIS, работала нормально. Если предположить, что этот файл изменяется в разное время, когда пользователь его использует, тогда старый файл может быть новее, чем новый, даже при установке NSIS. - person Nedloh; 10.07.2010