Patch Extractor

Для тех, кто хочет сделать мир лучше.
Ответить
Сообщение
Автор
Аватара пользователя
maldersoft
Нович0к
Нович0к
Сообщения: 20
Зарегистрирован: 17.11.2006

#1 Сообщение 23.07.2011, 06:15

Программа предназначена для поиска и извлечения (в отдельную папку) обновленных файлов после обновления \ установки патча. (например стим обновления).
Отличается очень высокой производительностью, проверка более чем 15,000 файлов в секунду.

Использование
1) Открываем программу, выбираем корневую папку в которой будут обновляться файлы (например папку в стиме с L4D2), жмем кнопку "Сбор информации о файлах"
2) Оставляем программу открытой, обновляем свою игру\программу\итд стандартным способом(например запускаем стим)
3) Возвращаемся в программу и жмем кнопку "Сканирование патча"
4) Выбираем папку куда хотим выгрузить файлы обновления и жмем "Выгрузить".

Скачать программу
Программа
Исходник (Delphi)
Изображение
Изображение

SAS123
Лейтенант
Лейтенант
Сообщения: 143
Зарегистрирован: 02.01.2006
Благодарил (а): 3 раза
Поблагодарили: 4 раза
Контактная информация:

#2 Сообщение 23.07.2011, 09:37

Может кому пригодится, есть VBS-скрипт, который копирует файлы с датой создания позже заданной:
VBScript

Код: Выделить всё

InitialFolder = "D:\css_setti" ' каталог, откуда копируем
TargetFolder = "D:\patch" ' каталог, куда копируем
ControlDate = CDate("18.10.2010") ' контрольная дата (копируем файлы с датой создания позже этой)
'====================================================================
On Error Resume Next
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objShellApp = CreateObject("Shell.Application")
LogPath = objFSO.GetParentFolderName(WScript.ScriptFullName)
Set LogStream = objFSO.OpenTextFile(LogPath & "\CopyLog.log", 8, True)
LogStream.WriteLine "Начало копирования " & Now()

CopyFiles InitialFolder
LogStream.WriteLine "Конец копирования: " & Now()
LogStream.Close

' процедура рекурсивно перебирает файлы в каталоге
Sub CopyFiles(FolderPath)
    On Error Resume Next
    Set objFolderItems = objShellApp.NameSpace(FolderPath).Items()
    For Each objFolderItem In objFolderItems
        If objFolderItem.IsFolder And LCase(Right(objFolderItem.Name, 4)) <> ".zip" Then
            CopyFiles objFolderItem.Path
        Else
            Set objFile = objFSO.GetFile(objFolderItem.Path)
            If objFile.DateCreated > ControlDate Then
                CopyFile objFolderItem.Path
            End If
        End If
    Next
End Sub

' процедура копирует файл
Sub CopyFile(FilePath)
    On Error Resume Next
    SubPath = Mid(FilePath, Len(InitialFolder) + 1)
    TargetPath = TargetFolder & SubPath
    FolderPath = objFSO.GetParentFolderName(TargetPath)
    If Not objFSO.FolderExists(FolderPath) Then
        CreateFolder FolderPath
    End If
    ' если у файла назначения есть атрибут ReadOnly, снимаем его
    If objFSO.FileExists(TargetPath) Then
        Set objFile = objFSO.GetFile(TargetPath)
        If objFile.Attributes And 1 Then
            objFile.Attributes = objFile.Attributes - 1
        End If
    End If
    objFSO.CopyFile FilePath, TargetPath, True
    If Err.Number <> 0 Then
        LogStream.WriteLine
        LogStream.WriteLine FilePath
        LogStream.WriteLine Err.Description
        LogStream.WriteLine
        Err.Clear
    Else
        LogStream.WriteLine TargetPath
    End If
End Sub

' процедура создаёт каталог
Sub CreateFolder (FolderPath)
    On Error Resume Next
    ParentFolder = objFSO.GetParentFolderName(FolderPath)
    If Not objFSO.FolderExists(ParentFolder) Then
        CreateFolder ParentFolder
    End If
    objFSO.CreateFolder FolderPath
End Sub
Есть еще утилита FileCompare от rAzoR, сравнивает директории, создает файл-листы и т.п.
Самая интересная OneClickCacheUpdater, которая умеет сравнивать gcf-ки до и после обновления и обновленные файлы распаковывать в отдельную папку.

MOZGIII
Разработчик
Разработчик
Сообщения: 910
Зарегистрирован: 09.01.2009
Откуда: Переезжаю в /dev/null
Благодарил (а): 7 раз
Поблагодарили: 65 раз
Контактная информация:

#3 Сообщение 23.07.2011, 15:43

maldersoft
Отлично, полезная вещица, спасибо)
Кинь на форму Win32 Manifest или как-то так он называется для красивости кнопочек мб?

Аватара пользователя
NiGHt-LEshiY
Полковник
Полковник
Сообщения: 10258
Зарегистрирован: 13.06.2008
Откуда: Россия
Благодарил (а): 752 раза
Поблагодарили: 2667 раз
Контактная информация:

#4 Сообщение 23.07.2011, 15:47

Это что, diff?
Кодекс поведения участников сообщества — обязательно к прочтению.
Просьба присылать сообщения об ошибках в ЛС.

MOZGIII
Разработчик
Разработчик
Сообщения: 910
Зарегистрирован: 09.01.2009
Откуда: Переезжаю в /dev/null
Благодарил (а): 7 раз
Поблагодарили: 65 раз
Контактная информация:

#5 Сообщение 23.07.2011, 15:49

NiGHt-LEshiY
Угу, только простой как 2 пальца, такой можно и нубу дать поюзать - разберётся.

Ответить