Autor Wątek: Jak przygotować paczkę do instalatora dodatków  (Przeczytany 5841 razy)

0 Użytkowników i 1 Gość przegląda ten wątek.

Offline kwiateusz

Jak przygotować paczkę do instalatora dodatków
« dnia: Wrzesień 07, 2010, 18:54:01 pm »
Poniższy poradnik opisuje metodę tworzenia pliku dodatku .wtwExtension "na piechotę". Jakiś czas temu powstał bardzo dobry zewnętrzny programik WTW Extension Maker, który automatyzuje i znacząco przyspiesza tworzenie paczuszek.

------

Na prośbę zhvira popełniłem poniższy tutorial jak przygotowywać nowe paczuszki do instalatora dodatków wtwExtension.

Zaczynamy

Tak, więc po primo ultimo musimy (no w sumie nie musimy, ale tak będzie szybciej) sobie pobrać kuchenkę przygotowaną przez Kaworu http://minefield.k2t.eu/wtf/wtw-kitchen.7z.
Po pobraniu i rozpakowaniu naszym oczom ukaże się kilka katalogów, Najbardziej interesuje nas w kolejności Bin, Example, Example-AutoUpdate, (jeśli chcesz żeby paczkę można było uaktualnić) oraz build.cmd.

Pokrótce, co znajdziemy w tych katalogach:
- Bin ? pliczki wymagane do spakowania paczki, bo tak naprawdę plik wtwExtension to archiwum 7zip ze zwyczajnie zmienionym rozszerzeniem
- Example ? katalog na nasze pliki, można mu zmienić nazwę na dowolną, nazwą tą się posłużymy przy pakowaniu paczki za pomocą build.cmd, ale o tym później, bardzo ważny jest plik packageInfo.xml, który zawiera informacje, co, gdzie przekopiować.
- Example-AutoUpdate ? zawiera tylko 1 plik a mianowicie przykład jak ma wyglądać plik odpowiadający za aktualizacje wtyczki (tak naprawdę może być bardziej rozbudowany, ale o tym później).
- build.cmd wygenerowaniu gotowego pliku wtwExtension, który możemy puścić w świat, składnia: build.cmd Example gdzie Example to nazwa katalogu, który chcemy spakować

Więc zaczynamy zabawę. Do katalogu Example wrzucamy, co chcemy zainstalować, organizacja folderu jest dowolna, ogranicza nas tylko fantazja autora :) Po wrzuceniu tego, co chcemy zainstalować należy uzupełnić plik packageInfo.xml o podstawowe informacje.
Zaczniemy od sekcji info w przykładzie wygląda ona tak:

<info>
    <author>Kaworu, K2T.eu</author>                <!-- autor -->
    <guid>{091BD44B-E1C7-4cb0-B069-D3F012A2D37D}</guid>    <!-- GUID paczki, unikalny na paczke, jest wymagany -->
    <version>0.3.2.0</version>                <!-- wersja x.x.x.x, gdzie 0 <= x <= 65535, wymagane -->
    <name>Foobar2000 PEP Driver</name>            <!-- nazwa tego cuda, wymagane -->
    <description>Opis tego cuda</description>        <!-- opis, opcjonalne -->
    <url>http://www.k2t.eu/pepDriver/</url>            <!-- gdzie dostać, opcjonalne -->
    <updateUrl>http://wtw.sajuuk.eu/t/fooPepDriver.xml</updateUrl>        <!-- url do AU, opcjonalne -->
    <class>plugin</class>    <!-- co ta paczka zawiera, wymagane i powinno byc z listy z pliku "classes" -->
    <image>logo.png</image>            <!-- ikonka, grafika, etc - png, niewymagana, 64x96 -->
</info>

Koło każdego pola jest komentarz, więc omówię tylko 2 tagi a mianowicie guid i class. Guid to unikalny identyfikator paczki, najprościej można go sobie wygenerować online http://www.guidgenerator.com/ i wkleić tam ważne tylko żeby guid zaczynał się i kończył klamrami tj. {}. (edit: Od 0.8 RC8 jesli wtyczka ma ten sam guid co paczka, to da sie wszystko odinstalowac bez restartu wtw) Co do class to mamy ich kilka mianowicie na dzień dzisiejszy:

Cytuj
plugin - wtyczka
theme-icons-protocol - Ikonki Protokołów
theme-icons - Ikonki
theme-chat - Styl chata
theme-muc - Styl multichata (MUC)
sounds - Dźwięki
emots - Emotki
theme ? Styl
dictionary - Słownik

oczywiście wybieramy adekwatny do tego, co paczkujemy.

Teraz czas na sekcje files, która jest trochę bardziej skomplikowana. Sekcja ta zawiera dowolną ilość, tagów file, które określają gdzie i które pliki należy zainstalować.
Przykładowy wpis file wygląda tak

<file
    arch="x86"
    source="payload\x86\utlFooPEPDriver.plug"
    target="%plugins-x86%\utlFooPEPDriver.plug"
    noInstall="0"
/>

Tak wiec po kolei:
arch określa architekturę może przyjmować x86 dla 32bit, x64 dla 64 i * dla dowolnego systemu (ilość bit stosuje się w sumie tylko we wtyczkach dla reszty dodatków używać *)
source określa gdzie plik jest w archiwum, ścieżki są względne od katalogu macierzystego tj. Example, więc jeśli coś jest w Example\test\obrazek.gif to, jako Source podajemy test\obrazek.gif
target wskazuje gdzie plik ma wtw skopiować, w przykładzie jest %plugin-x86% jest to jedna z 3 zmiennych określająca katalog docelowy pozostałe to %plugin-x64% i %theme% które wskazują na

Cytuj
%plugins-x64% - "profil\Plugins64"
%plugins-x86% - "profil\Plugins32"
%theme% - "profil\userTheme"
%lang% - folder na pliki lokalizacji,"I18N" ("profil\I18N")
%libs-x86% i %libs-x64% - biblioteki dla wtyczek
%dic% - słowniki do sprawdzania pisowni "profil\Dictionary"

Oczywiście można tworzyć podkatalogi i tam coś wrzucać np. %theme%\setTlen\ikonka.png

Ostatni parametr noInstall ustawiony na 1 informuje tylko i wyłącznie deinstalator (nie kopiuje tego pliku nigdzie), że wyżej podany plik mógł zostać utworzony po instalacji np., jako konfiguracja wtyczki i należałoby go przy odinstalowywaniu usunąć.

Po dodaniu sekcji file dla wszystkich plików zostaje nam teraz spakować paczkę. Do tego służy jak wcześniej wspomniałem build.cmd (można ręcznie to skompresować za pomocą 7zip i zmienić rozszerzenie, jak komu wygodniej). Ten pliczek wsadowy obsługuje się banalnie mianowicie z linii poleceń wydajemy komendę, build.cmd Example gdzie Example to katalog z plikiem packageInfo.xml i naszymi plikami i po chwili otrzymujemy plik o tej samej nazwie, co poprzedni katalog tj. Example.wtwExtension.

Jeśli nasz katalog nazywałby się ikonki to wydajemy polecenie build.cms ikonki i otrzymujemy z tego ikonki.wtwExtension.

Co do AutoUpdate, załączony przykładowy pliczek jest bardzo biedny, bo może jeszcze zawierać sekcje changelog, która będzie się pokazywała w okienku auto update przy aktualizacji wtyczki, więc zamieszczę tu szablon, z którego ja korzystam.

<?xml version="1.0" encoding="UTF-8"?>
<metanode>
     <updateInfo arch="*" fileBase="http://wtw.kwiateusz.pl/kwNotify/" version="0.0.0.1">
        <file lzFile="kwNotify.wtwExtension"/>
    </updateInfo>
    <changelog name="kwNotify">
           <group name="0.0.0.1">
            <entry>jakis wpis</entry>
        </group>
    </changelog>
</metanode>

To jest szkielet, od którego należy zacząć, arch to już wiecie, do czego służy, ale w przypadku AU należy zawsze dawać, * bo jeśli to wtyczka to powinna zawierać obie wersje wtyczki, a jeśli to inny dodatek to architektura też jest obojętna.

fileBase wskazuje adres gdzie aktualizator będzie szukał plików
version oczywiście wskazuje wersje dodatku, jeśli ta w xmlu jest większa niż posiadana przez użytkownika to wtw ściągnie i zainstaluje plik, który jest podany w file
file określa gdzie jak się nazywa plik, który ma ewentualnie pobrać, jeśli jest nowszy niż zainstalowany

changelog natomiast pozwala do każdej wersji przyporządkować jakiś komunikat np. zmieniono ikonki na różowe itp. Name w changelog w sumie nie wiem, po co jest, ja to nazwałem jak moja wtyczka :P co do group to 1 taka sekcja odpowiada 1 wersji, którą podajemy w name. Entry może być dowolnie wiele, w zależności ile oddzielnych komunikatów chcemy przekazać, każdy entry w okienku AU to oddzielna linia. Po uzupełnieniu pliku wrzucamy go gdzieś na serwer a link podajemy w  updateUrl pliku packageInfo.xml.

Dołączam tez przykładowe archiwum zrobione dla ikonek, tak żeby nie wszystko toczyło się wokół wtyczek ;)

Mam nadzieje że przyda się i jest w miarę zrozumiałe, w razie czego chętnie przeredaguje niezrozumiałe momenty.

p.s. jak ktoś nie ma naprawdę gdzie hostować dodatków to mogę udzielić trochę miejsca mam serwer 10gb powierzchni na 3000GB transferu m-c wiec myślę że coś się da zrobić ;) ew każdy kto chce to niech sobie zakłada na http://www.1and1.pl ponoc firma światowa
« Ostatnia zmiana: Styczeń 22, 2011, 21:24:57 pm wysłana przez zhvir »

Offline suhy

  • Stylista
  • Młodzież
  • *
Re: Jak przygotować paczkę do instalatora dodatków
« Odpowiedź #1 dnia: Wrzesień 25, 2010, 14:30:06 pm »
Trzeba po kolei każdy plik wpisywac? Bo fajnie by było jak napisze tak:
<file
    arch="*"
    source="htmlChat\*"
    target="%theme%\*"
    noInstall="0"
/>
i będzie zapisywać z takimi samymi nazwami jakimi zostały skopiowane. Albo zrobic osobny tag np <folder> czy cus

Offline mocznik

  • Młodzież
  • **
    • deviantart
Re: Jak przygotować paczkę do instalatora dodatków
« Odpowiedź #2 dnia: Wrzesień 25, 2010, 15:48:12 pm »
Mały poradnik jak sobie ułatwić życie z paczkowaniem styli.

1. Wszystkie pliki wrzucamy do katalogu Example (dobrze, jeśli struktura folderów będzie taka sama)
2. Uruchamiamy wiersz poleceń (win+r i wpisać cmd)
3. przechodzimy do katalogu Example(komenda cd - jeśli jesteśmy c:\documents and settings\admin\ wpisujemy cd pulpit)
4. wpisujemy dir /b /a-d >> pliki.txt (utworzy to nam plik pliki.txt z wszystkimi plikami z aktualnego katalogu)
5. otwieramy pliki.txt w notepad++ i klikamy ctrl+h. zaznaczymy wyrażenia regularne.
6. w pole "szukany tekst" wpisujemy ^(.*\....)$
7. w pole "zamień na" <file arch="*" source="\1" target="%theme%\@\1" noInstall="0" /> (zamiast małpy można wpisać cokolwiek, po prostu "\\1" nie jest traktowana jako zmienna, więc to małe obejście
8. teraz w szukany tekst "@" a w zamień na nic i pozbywamy się małp.

punkty 4-8 wykonujemy analogicznie dla kazdego podfolderu.
Wszystko co umieszczam na forum jest na licencji CC-BY-NC-ND 3.0

Offline kwiateusz

Re: Jak przygotować paczkę do instalatora dodatków
« Odpowiedź #3 dnia: Wrzesień 25, 2010, 18:52:51 pm »
Trzeba po kolei każdy plik wpisywac? Bo fajnie by było jak napisze tak:
<file
    arch="*"
    source="htmlChat\*"
    target="%theme%\*"
    noInstall="0"
/>
i będzie zapisywać z takimi samymi nazwami jakimi zostały skopiowane. Albo zrobic osobny tag np <folder> czy cus

trzebaby o to kawa pomęczyć, acz pewnie nie, bo wtedy nie wiadomo co usunac z danego folderu przy deinstalacji