VPatch pozwala na utworzenie pliku aktualizującego (łatki), który umożliwia uaktualnienie starszej wersji twojego oprogramowania do nowszej. Narzędzie GenPat tworzy plik aktualizacyjny. Wtyczka może użyć ten plik aktualizujący do zaktualizowania pliku. Dzięki użyciu pliku aktualizującego, możesz znacznie zredukować rozmiar aktualizacji do pobrania, ponieważ w pliku tym zapisane są tylko informacje o różnicach pomiędzy plikami.
Upewnij się, że masz plik źródłowy (wersja oryginalna) oraz plik docelowy (wersja do zaktualizowania). Na przyklad, DATA.DTA (znajdujący się w systemie użytkownika) oraz DATA_20.DTA (wersja 2.0 tego pliku z danymi). Teraz, wywołaj narzędzie GenPat.exe, korzystając z linii poleceń:
GENPAT oldfile.txt newfile.txt patch.pat
Utworzony zostanie plik aktualizujący, zajmie to parę chwil.
Używając parametru /B=(Rozmiar Bloku (BlockSize)) narzędzia GenPat (wstaw po nazwie pliku), możesz użyć różnego rozmiaru bloku. Mniejszy rozmiar bloku może przyczynić się do utworzenia plików aktualizujacych o mniejszym rozmiarze, lecz ich tworzenie może potrwać nieco dłużej (domyślny rozmiar bloku równy jest 64).
Jeśli masz problemy z użyciem tego narzędzia, które pracuje w linii poleceń, możesz pobrać GUI (graficzny interfejs użytkownika) dla VPatch z poniższej strony: http://www.tibed.net/vpatch.
Użyj wtyczki VPatch, aby zaktualizować plik używając pliku aktualizującego:
vpatch::vpatchfile "patch.pat" "oldfile.txt" "temporary_newfile.txt"
Wynik operacji aktualizacji zostanie dodany na stos i może przyjąć jedną z poniższych wartości (w nawiasie podano polski przekład):
Przykład możesz znaleźć w pliku example.nsi (Examples/VPatch/example.nsi). Powinieneś sprawdzać czy łańcuch znaków na stosie zaczyna się od słowa OK, ponieważ oznacza to, że proces aktualizacji zakończył się powodzeniem i możesz zmienić nazwę plikowi temporary_newfile.txt w nazwę oldfile.txt by zastąpić plik oryginalny, jeśli chcesz.
GenPat dołącza dane aktualizatora do pliku, który wcześniej określisz. Jeśli istnieje już plik aktualizacyjny dla tego samego oryginalnego pliku, z tą samą sumą CRC, w pliku aktualizatora, plik aktualizacyjny zostanie zastąpiony. Na przykład, jeśli chcesz mieć możliwość aktualizacji wersji 1 oraz 2 do wersji 3, możesz wstawić dane aktualizacyjne pliku 1 > 3 oraz 2 > 3 do tego samego pliku.
Możesz również wstawić dane aktualizacyjne dla różnych plików w jednym pliku aktualizacyjnym, na przykład, dane aktualizacyje z pliku A w wersji 1 do pliku A w wersji 2 oraz dane aktualizacyjne z pliku B w wersji 1 do pliku B w wersji 2. Po prostu wywołaj wtyczkę wielokrotnie, z podanym tym samym plikiem aktaulizacyjnym. Prawidłowe dane aktualizacyjne zostaną automatycznie wybrane (dzięki danym CRC).
W wersji 3 dostępne są następujące kody wyjścia (znane też jako poziomy błędu, w czasach DOS), zwracane przez GenPat. GenPat zwróci kod wyjścia zależny od przebiegu procesu generowania pliku aktualizacyjnego. Poniżej znajduje się lista możliwych kodów wyjścia:
Wymienione powyżej kody wyjścia mogą być użyteczne przy tworzeniu plików aktualizacyjnych poprzez skrypty NSIS.
Kod źródłowy dostępny jest w oryginalnym pakiecie oraz w repozytorium SVN pakietu NSIS.
Kody źródłowe wtyczki NSIS można znaleźć w katalogu Source\Plugin.
Najciekawszy element VPatch, bieżący algorytm generowania plików aktualizacyjnych, można znaleźć w pliku Source\GenPat\PatchGenerator.cpp. Plik nagłówkowy tego pliku zawiera krótkie wyjaśnienie zasady działania algorytmu.
Interfejs użytkownika jest także załączony, ale plik wykonawczy GUI musisz utworzyć sam, ponieważ jest zbyt duży by go dołączyć do dystrybucji. Poza środowiskiem Borland Delphi 6 lub nowszym (możesz użyć jego darmowej wersji Personal), będziesz musiał także zainstalować komponent VirtualTreeView napisany przez Mike'a Lischke.
Napisał: Koen van de Sande
Wtyczka w języku C napisana przez Edgewize, zaktualizowana przez Koen van de Sande
Nową dokumentację oraz przykład napisali Joost Verburg oraz Koen van de Sande
Copyright (C) 2001 - 2005 Koen van de Sande / Van de Sande Productions This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages arising from the use of this software. Permission is granted to anyone to use this software for any purpose, including commercial applications, and to alter it and redistribute it freely, subject to the following restrictions: 1. The origin of this software must not be misrepresented; you must not claim that you wrote the original software. If you use this software in a product, an acknowledgment in the product documentation would be appreciated but is not required. 2. Altered versions must be plainly marked as such, and must not be misrepresented as being the original software. 3. This notice may not be removed or altered from any distribution.