Время создания файла
Вот получаю структуру:
HINTERNET hDir = NULL;
TWin32FindDat File;
SYSTEMTIME stTime;
.....
hDir = FtpFindFirstFile(hConnect, "test.exe", &File, 0, 0);
FileTimeToSystemTime(&File.ftCreationTime, &stTime);
и чего-то не получается определить время создания файла, что-то не так делаю?
причем File.cFileName показывает test.exe. А время показывает: год, месяц, ... 1601, 1, 1, 1, 5, 0, 0, 0
не получается определить время создания файла, что-то не так делаю?
причем File.cFileName показывает test.exe. А время показывает: год, месяц, ... 1601, 1, 1, 1, 5, 0, 0, 0
Вот что написано в MSDN:
Вот что написано в MSDN:
как мне узнать время модификации? может скинешь примерчик или где почитать?
как мне узнать время модификации? может скинешь примерчик или где почитать?
Время модификации - член ftLastWriteTime в структуре WIN32_FIND_DATA.
Кстати, нет гарантии, что это поле будет корректным при поиске на ftp, по той же причине, что и описано выше - из-за ограничений протокола FTP.
На мой взгляд, полезнейшее чтиво - MSDN. Сходи на базар, где дисками торгуют, наверняка найдётся :)
Время модификации - член ftLastWriteTime в структуре WIN32_FIND_DATA.
Кстати, нет гарантии, что это поле будет корректным при поиске на ftp, по той же причине, что и описано выше - из-за ограничений протокола FTP.
На мой взгляд, полезнейшее чтиво - MSDN. Сходи на базар, где дисками торгуют, наверняка найдётся :)
т.е. мне по ftp никак не узнать время создания/модификации файла?
т.е. мне по ftp никак не узнать время создания/модификации файла?
Как-то узнать можно, мне кажется. Ведь ftp-клиенты показывают список файлов с временами. Только вот как? Экспериментируй, и сообщай о результатах. Что-нибудь да придумаем :)
Добавление:
Описание протокола FTP лежит здесь: http://www.ysn.ru/docs/cie/RFC/959/index.htm
Ещё одно добавление: :)
Как насчёт команды FTP-протокола LIST? Мне кажется, что в ответ на ней сервер возвращает имя файла, атрибуты, размер и дату последнего изменения этого файла на FTP-сервере. По крайней мере, тест на "настоящем" ftp-клиенте именно так и показывает.
Ещё одно добавление: :)
Как насчёт команды FTP-протокола LIST? Мне кажется, что в ответ на ней сервер возвращает имя файла, атрибуты, размер и дату последнего изменения этого файла на FTP-сервере. По крайней мере, тест на "настоящем" ftp-клиенте именно так и показывает.
компонент NMFTP как раз list'ом вытаскивает эту дату.
Если кто-нибудь найдет решение дайте знать...
всем спасибо.
Забью я на эту дату создания и вообще на дату, столько времени потерять на такую фигню! :x
Если кто-нибудь найдет решение дайте знать...
всем спасибо.
Зря отказываешься, ведь решение почти найдено.
Если не хочешь продолжать ковырять дату, то подумай о включении номера версии в имя файла.
Зря отказываешься, ведь решение почти найдено.
Если не хочешь продолжать ковырять дату, то подумай о включении номера версии в имя файла.
включение номера версии в название файла, как-то не эстетично, а насчет отказываюсь, так в WinInet list то нет! а в компоненте NMFTP я знаю, как это сделать.
Забью я на эту дату создания и вообще на дату, столько времени потерять на такую фигню!
Если кто-нибудь найдет решение дайте знать...
всем спасибо.
Я делаю по-простому - в папку обновлений кладу INI-файл в котором просто написано какие файлы качать. Клиент (обновляемая программа) открывает этот файл смотрит список и качает по списку. Кроме отсутствия возни с версиями и датами это позволяет подсунуть обратно старый в файл, если в новый я случайно встрою слишком много новых багов :) Простенькая GUI-программа позволяет по быстрому мышкой накидать файлы в этот список.
Я делаю по-простому - в папку обновлений кладу INI-файл в котором просто написано какие файлы качать. Клиент (обновляемая программа) открывает этот файл смотрит список и качает по списку. Кроме отсутствия возни с версиями и датами это позволяет подсунуть обратно старый в файл, если в новый я случайно встрою слишком много новых багов :) Простенькая GUI-программа позволяет по быстрому мышкой накидать файлы в этот список.
это понятно, я тоже до этого додумался :D.
вопрос не по теме: Как клиент (обновляемая программа) обновление производит, т.е. как сама себя заменяет, как это реализовано?
это понятно, я тоже до этого додумался :D.
вопрос не по теме: Как клиент (обновляемая программа) обновление производит, т.е. как сама себя заменяет, как это реализовано?
Например, копирует новый екзешник куда-нибудь, запускает его, сама завершается. Новый процесс копирует свой файл поверх старого, запускает его и завершается. Новый (обновлённый) процесс уже ничего не делает.
Реализовать это можно путём передачи вновь запускаемому процессу какого-нибудь ключика командной строки. Например ключик /update:имя_файла - копировать свой файл поверх имя_файла, запустить его и выйти.
Добавление:
включение номера версии в название файла, как-то не эстетично, а насчет отказываюсь, так в WinInet list то нет! а в компоненте NMFTP я знаю, как это сделать.
Линуксоиды не представляют своей жизни без включения номеров версий в имена пакетов :) :) :)
Например, копирует новый екзешник куда-нибудь, запускает его, сама завершается. Новый процесс копирует свой файл поверх старого, запускает его и завершается. Новый (обновлённый) процесс уже ничего не делает.
Реализовать это можно путём передачи вновь запускаемому процессу какого-нибудь ключика командной строки. Например ключик /update:имя_файла - копировать свой файл поверх имя_файла, запустить его и выйти.
Почти так - прорамма проверяет обновления, если есть, то запускает другую мелкую программу и завершается, мелкая копирует обновления и снова запускает основную программу. Причем мелкая работает универсально - ей передаются параметры: что скопировать и что потом запустить:
updater.exe "\\UPDATE_SERVER\updates\my_program\update.ini" "MainProgram.exe"
Добавление:
Линуксоиды не представляют своей жизни без включения номеров версий в имена пакетов :) :) :)
ну я под винды пишу , так что "линуксоиды" для меня не показатель :) задачу решил маркерными файлами.
а с обновлением у меня ситуация такая: обновлять мое приложение будет инсталятор, ну чтоб и в уст/удал. программ и в реестре записи, вообщем вот так хочу.
обновлять мое приложение будет инсталятор, ну чтоб и в уст/удал. программ и в реестре записи, вообщем вот так хочу.
Инсталятор хорошо, но его ручками самому запускать надо
Инсталятор хорошо, но его ручками самому запускать надо
почему его самому запускать надо? приложение мое его запустит и пущай работает.