- Symulator MaSzyna -
Symulator EU07 (i nie tylko) => Poszukuję, chcę zrobić => Wątek zaczęty przez: Ra w 28 Marca 2008, 00:32:10
-
Przy obecnym stanie i ilości dodatków, instalowanie paczek jest kłopotliwe. Nie będę wnikać w przyczyny, chcę poradzić sobie ze skutkami za pomocą stworzonego przeze mnie automatu.
Problemy z paczkami pojawiają się następujące:
- paczka jest niepełna (brakuje jakiś plików do kompletu, bo autor zapomniał),
- paczka bazuje na zawartości innej paczki (np. sceneria korzysta z budynków innej scenerii),
- struktura katalogów w paczce nie odpowiada strukturze Symulatora.
Może przykład. Pojawiła się sceneria wąskotorowa. Potrzebna do niej jest lokomotywa Lxd2. Załóżmy, że program ładujący (Starter) stwierdza, że tej lokomotywy nie da się zastąpić inną, ale można ją pobrać z serwera. Paczka z tą lokomotywą jest pod adresem http://mamut.mysza.eu.org/~krzysiek626/Lxd2.rar (http://mamut.mysza.eu.org/~krzysiek626/Lxd2.rar). Załóżmy że Starter pobiera sobie paczkę do podkatalogu download.
To, co dalej może zrobić, to rozpakować ją do podkatalogu tymczasowego temp programem 7-Zip, wykonując polecenie7z.exe x download\Lxd2.rar -otemp
Powstaje coś takiego:7-Zip 4.57 Copyright (c) 1999-2007 Igor Pavlov 2007-12-06
Processing archive: download\Lxd2.rar
Extracting Lxd2\kabina.t3d
Extracting Lxd2\Lxd2-2.tga
Extracting Lxd2\Lxd2.t3d
Extracting Lxd2\motor-Lxd2.wav
Extracting Lxd2\wózek4.tga
Extracting Lxd2\zderzak1.tga
Extracting Lxd2\Lxd2.mmd
Extracting Lxd2\lxd2.tga
Extracting Lxd2\Lxd2.chk
Extracting Lxd2\t.chk
Extracting Lxd2
Everything is Ok
Folders: 1
Files: 10
Size: 3388331
Compressed: 443718
No i teraz zaczyna się problem, bo coś trzeba zrobić z tymi plikami i program musi wiedzieć dokładnie co. Otóż, trzeba w podkatalogu dynamic\pkp utworzyć katalog Lxd2, do niego przekopiować wszystkie pliki, oprócz motor-Lxd2.wav, który powinien się znaleźć w sounds.
Aby program poradził sobie z tą paczką, przydało by się napisać skrypt (plik) instalacyjny. W wersji MS-DOS, wyglądał by on tak:rem Instalator paczki typu BAT
md dynamic\pkp\Lxd2
move temp\Lxd2\kabina.t3d dynamic\pkp\Lxd2
move temp\Lxd2\Lxd2-2.tga dynamic\pkp\Lxd2
move temp\Lxd2\Lxd2.t3d dynamic\pkp\Lxd2
move temp\Lxd2\motor-Lxd2.wav sounds
move temp\Lxd2\wózek4.tga dynamic\pkp\Lxd2
move temp\Lxd2\zderzak1.tga dynamic\pkp\Lxd2
move temp\Lxd2\Lxd2.mmd dynamic\pkp\Lxd2
move temp\Lxd2\lxd2.tga dynamic\pkp\Lxd2
move temp\Lxd2\Lxd2.chk dynamic\pkp\Lxd2
del temp\Lxd2\*.*
rd temp\Lxd2
Problemy w tym przypadku są następujące:
- nie jest określone, co ma się dziać w przypadku nadpisywania istniejącego pliku - program powinien o to zapytać użytkownika, albo serwer,
- nie da się określić, czy instalacja przebiegła poprawnie (tzn. zweryfikować, czy odpowiednie pliki znalazły się w odpowiednich miejscach),
- nie bardzo jest jak sprawdzić, czy lokomotywa jest kompletna (nie jest, brakuje pliku ignition-Lxd2.wav - trzeba by jakoś zaznaczyć, że trzeba go dociągnąć osobno).
Wniosek mój jest taki, że pliki BAT nie bardzo nadają się na skrypty instalacyjne. Inna metoda, to plik INI, np. taki:[VERIFY]
dynamic/PKP/Lxd2/kabina.t3d=198599,C7CD260F,2005-06-10 14:44:30
dynamic/PKP/Lxd2/Lxd2-2.tga=786450,F792CE94,2004-10-12 22:42:48
dynamic/PKP/Lxd2/Lxd2.t3d=976726,1182F075,2004-10-13 10:13:16
dynamic/PKP/Lxd2/wózek4.tga=262162,39ED61AB,2004-09-01 15:13:56
dynamic/PKP/Lxd2/zderzak1.tga=262162,915E6E51,2004-09-29 21:07:40
dynamic/PKP/Lxd2/Lxd2.mmd=4599,B2E41CBF,2005-04-01 10:57:44
dynamic/PKP/Lxd2/lxd2.tga=786450,78729DE9,2004-10-04 22:09:32
dynamic/PKP/Lxd2/Lxd2.chk=2029,3542AC81,2005-09-30 22:43:58
sounds/motor-Lxd2.wav=107114,C1DADB0A,2004-08-29 23:15:40
sounds/ignition-lxd2.wav=58510,B5600DC5,*
[ARCHIVES]
Lxd2.rar=443718,71587B90,2005-09-30 22:43:58
ignition-lxd2.wav=58510,B5600DC5,*
[DOWNLOAD]
Lxd2.rar=http://mamut.mysza.eu.org/~krzysiek626/Lxd2.rar
ignition-lxd2.wav=http://members.lycos.co.uk/drezyna/Wmc/ignition-lxd2.wav
[Lxd2.rar]
dynamic\pkp\Lxd2\kabina.t3d=Lxd2\kabina.t3d
dynamic\pkp\Lxd2\Lxd2-2.tga=Lxd2\Lxd2-2.tga
dynamic\pkp\Lxd2\Lxd2.t3d=Lxd2\Lxd2.t3d
dynamic\pkp\Lxd2\wózek4.tga=Lxd2\wózek4.tga
dynamic\pkp\Lxd2\zderzak1.tga=Lxd2\zderzak1.tga
dynamic\pkp\Lxd2\Lxd2.mmd=Lxd2\Lxd2.mmd
dynamic\pkp\Lxd2\lxd2.tga=Lxd2\lxd2.tga
dynamic\pkp\Lxd2\Lxd2.chk=Lxd2\Lxd2.chk
sounds\motor-Lxd2.wav=Lxd2\motor-Lxd2.wav
[ignition-lxd2.wav]
sounds\ignition-lxd2.wav=ignition-lxd2.wav
Jak widać daje to już większe możliwości. Jest możliwość weryfikacji poprawności istniejących plików, kompletności instalacji, wskazania powiązanych archiwów oraz linków do nich. Można by jeszcze pomyśleć, jak dodać opcje na pliki (np. w sytuacji, gdy istnieje kilka równych jakościowo dźwięków, żeby można sobie było wybrać któryś z nich).
Nie piszę na razie o XML - chciałbym unikać tego póki się da, bo jego przetwarzanie jest dużo bardziej skomplikowane, niż podzielenie pliku tekstowego na linie. Poza tym, na obecnym etapie rozwoju Instalatora, bardziej chodzi o określenie funkcjonalności takiego skryptu, niż o format jego zapisu.
Jest jeszcze taka możliwość, żeby połączyć skrypty instalacyjne ze skryptami poprawek, o których pisałem wcześniej (http://eu07.pl/forum/index.php/topic,6942.0.html). Wtedy skrypt instalacyjny po rozpakowaniu archiwów i dociągnięciu brakujących plików, byłby w stanie skorygować zauważone błędy. Jednak miałoby to pewną wadę - plik instalacyjny do paczki powinien być tylko jeden, natomiast plików poprawkowych może być wiele i mogą pełnić one różne funkcje.
Chodzi też o to, żeby autor paczki potrafił sam napisać taki plik instalacyjny.
-
Ja tam mysle ze ini, ale koniecznie kazda dodawana paczka musi byc sprawdzona/zatwierdzona nim stanie sie publicznie dostepna.
-
OK, format już jest ustalony, skrypty działają. Teraz pojawia się następująca kwestia: mają one rozszerzenie INI, a przez to nie są jakoś specjalnie rozpoznawane przez Windows. Gdyby wymyślić jakieś unikalne rozszerzenie, można by je powiązać z instalatorem. Wtedy np. po kliknięciu na link zainstaluj na stronie internetowej, otwierał by się instalator.
I tu jeszcze jedna uwaga: instalator ma charakter uniwersalny, tzn. teoretycznie można nim instalować różne inne paczki, nie tylko do MaSzyny.
Zarezerwowane rozszerzenia można sprawdzać np. pod adresem:
http://www.liutilities.com/products/winbackup/filextlibrary/ (http://www.liutilities.com/products/winbackup/filextlibrary/)
Proszę o nadsyłanie propozycji.
-
Proponuję następujące rozszerzenia:
*.maszyna
*.eu07
*.424
*.minst (maszyna installer)
*.mset (maszyna setup)
*.madd (maszyna addon)
-
*.minst lub ".madd wydają się najsensowniejsze.
-
*.mpack Maszyna PACkage (Pakiet Maszyny) wydaje się być uniwersalniejszy.
-
Myślę że *.minst, *.mset, *.madd *.424 będą najlepsze. *.eu07 odpada bo początkujący będą mylić z EU07.exe
-
RAIF
-
Ja jednak wolę trzyliterowe... Wymyśliłem R_I, które z niczym się nie kojarzy, a jest zbliżone ideologicznie do modułów pewnych formularzy... Takoż spróbuję połączyć to rozszerzenie z moim programem...