kategoria: Programy
[#31] Re: Pakowanie danych do kilku plików

@Don_Adan, post #30

Podglądałem skrypt Installera od Picasso96 i sporo tego tam... Muszę w wolnej chwili poszukać czegoś o wiele prostszego. Najlepiej, żeby po prostu pytał o ścieżkę instalacji, potem wyświetlał postęp instalacji i żeby wyświetlał komunikaty z prośbą o zmianę dyskietki. No i niestety też komunikaty byłyby w wielu językach...
[#32] Re: Pakowanie danych do kilku plików

@Don_Adan, post #29

To oczywiście zadziała, ale przy tej metodzie musisz mieć miejsce na dysku na:
  • części archiwum kopiowane z dyskietek
  • całe złożone archiwum
  • rozpakowane archiwum
  • ewentualnie miejsce na docelową kopię gry po instalacji, chyba, że rozpakowanie archiwum do wskazanej lokalizacji jest całą instalacją

Można to trochę ulepszyć kasując części po złożeniu archiwum, oraz kasując archiwum po rozpakowaniu go, o ile czwarty punkt z powyższej listy wchodzi w grę. Z drugiej strony ludzie teraz mają hektary dysków, więc może to nie problem.

W razie czego pomogę napisać skrypt, ale należy pamiętać, że Installer wymaga systemu 2.0+.
[#33] Re: Pakowanie danych do kilku plików

@tukinem, post #31

No i niestety też komunikaty byłyby w wielu językach...
Installer to załatwia o tyle, że sam jest zlokalizowany, więc jego standardowe teksty są przetłumaczone od razu. Tak samo prośba o zmianę dyskietki - to jest requester systemowy, więc jeżeli ktoś ma zainstalowane lokale swojego języka, to sprawa jest załatwiona. Natomiast specyficzne teksty dla konkretnego skryptu - jeżeli już je mamy przetłumaczone - można umieścić w skrypcie, Installer sam sprawdzi jakie locale są ustawione i wyświetli co trzeba, a jak nie będzie miał tekstów w tym języku, to będą angielskie.
[#34] Re: Pakowanie danych do kilku plików

@Krashan, post #32

Tak, to byl tylko przyklad. W takiej wersji jakies max 30MB wolnego HD jest potrzebne, co teraz jest niczym. W latach 90-tych to co innego. Ale oczywiscie mozna dwa razy zrobic Delete, pierwszy raz po polaczeniu archiwum i skasowac part1, part2, part3 etc, a drugi raz po rozpakowaniu gra.lha. Wtedy tylko max 20MB wolnego HD byloby potrzebne.
[#35] Re: Pakowanie danych do kilku plików

@tukinem, post #31

Szukaj jakiegos prostego przykladu z gry, a nie Picasso96. Jak chcesz samo kopiowanie z dyskietek zobaczyc to chyba w Kajko i Kokosz (wersje angielska) jakos przerabialem. O ile mnie pamiec nie myli.
[#36] Re: Pakowanie danych do kilku plików

@Don_Adan, post #35

W Kajko i Kokosz (mam polską wersję ADFów) jest instalator, ale w tooltypie ikonki mam tylko wpisane "Auto Flush".

Sprawdzałem instalator Blitz Basic i tam też nie widzę pliku ze skryptem, natomiast przy Picasso96 w tooltypie instalatora jest podane:
SCRIPT=InstallPicasso96
[#37] Re: Pakowanie danych do kilku plików

@tukinem, post #36

Na pierwszym dysku powinien byc krotki plik tekstowy, nazwy nie pamietam, i to jest skrypt instalacyjny. Chyba, ze gry pomylilem. Albo pokaz zawartosc (dir) pierwszego dysku to powiem, ktory to jest.
[#38] Re: Pakowanie danych do kilku plików

@Don_Adan, post #37

[#39] Re: Pakowanie danych do kilku plików

@tukinem, post #38

To jest plik Instaluj, o ile mnie pamiec nie myli.
Zaladuj go w CED-a i sobie ogladaj.

Ostatnia aktualizacja: 15.04.2024 23:54:45 przez Don_Adan
[#40] Re: Pakowanie danych do kilku plików

@Don_Adan, post #39

To nie będzie ten plik. Oto screenshot z załadunku tego pliku w BareED:
[#41] Re: Pakowanie danych do kilku plików

@tukinem, post #40

Masz racje. To jest plik "doinst"
[#42] Re: Pakowanie danych do kilku plików

@Don_Adan, post #41

Zgadza się.

Narazie jedno mi się nie zgadza. Z tego, co tu widzę, Installer prosi o wybranie ścieżki do instalacji i ta ścieżka ląduje w zmiennej gdzie. Natomiast wszelkie ścieżki źródłowe to gdzie1, gdzie2 itd.

Moim zdaniem to powinno wyglądać tak:
(copyfiles
   (source "KK1:")
   (dest gdzie)      ; gdzie1 to sciezka zrodlowa a nie docelowa
   (all)
)


Oto screenshot z skryptu:


Chyba że steruje nią trackon.

Ostatnia aktualizacja: 16.04.2024 10:35:47 przez tukinem
[#43] Re: Pakowanie danych do kilku plików

@tukinem, post #42

Mozesz sie bawic.
Zainstaluj sobie najpierw Kajko i Kokosz z dyskietek na HD i zobacz rezultat.
Chyba ta gra ma/tworzy podkatalogi na kazda dyskietke, ale juz nie pamietam.
To jest prosty skrypt to sie nauczysz, po paru probach.

Jedynie w swoim skrypcie lepiej nie uzywaj odwolan do df0: tylko do nazw dyskietki typu Dysk1: Dysk2: itp.
Bedzie mozna wtedy z kazdej stacji dyskietek lub RAD instalowac.

Ostatnia aktualizacja: 16.04.2024 11:14:28 przez Don_Adan
[#44] Re: Pakowanie danych do kilku plików

@tukinem, post #42

Jest wszystko ok.
Gdzie1, gdzie2, gdzie3 to będą katalogi w KK1:
Potem masz assign
[#45] Re: Pakowanie danych do kilku plików

@tukinem, post #28

O ile LhA będzie jakoś sensownie to pakować, bo jeśli nie, to bez sensu będzie ją pakować, skoro sporo plików pakuję Crunchmanią, a plik uruchamialny Stonecrackerem.
I tu, jak to mówią, się zgina dziób pingwina. Cała nasza dyskusja o LhA i multivolume traci sens. Na 99% LhA nie spakuje już bardziej tych plików i zobaczymy "Stored (0.0%)".

Ja już napisałem cały taki skrypt oparty na pomyśle DonAdana. Żeby było na czym testować, stworzyłem sobie archiwum o rozmiarze około 2,5 MB zawierające prostą strukturę podkatalogów i około 30 plików wypełnionych losowymi danymi. Pliki generowałem pod Linuksem:
head -c [rozmiar_w_bajtach] /dev/urandom >[plik_wyjściowy]
Potem przeniosłem to na Amigę i spakowałem najnowszym chyba amigowym LhA 2.15. I co? Żaden taki plik z losowymi danymi nie został skompresowany nawet o 1 bajt. Z plikami już spakowanymi jakimś przyzwoitym pakerem, będzie tak samo.

Przy okazji straciłem sporo czasu przez program JoinSplitter. Ma on z pozoru znakomity tryb "disk optimizer" - podajesz archiwum, a potem wkładasz kolejne dyskietki, które program dopycha na full kolejnymi częściami. Bo np. pierwsza dyskietka może być bootowalna i chociażby automatycznie odpalać instalację. Więc będzie trochę zajęta. Niestety ten tryb ma błąd i uszkadza dane - po połączeniu części systemowym joinem nie dostajemy tego, co na początku. Testowałem na WinUAE, więc wykluczam problem typu dyskietki są stare i się sypią, albo stacja jest zajechana.

Proponuję autorowi gry, żeby sprawdził na kilku plikach, czy LhA coś mu w ogóle jeszcze pociśnie, bo jak nie, to nie ma co sobie zawracać głowy, porozkładać pliki między dyskietkami, a w instalerze po prostu je pokopiować gdzie trzeba.
[#46] Re: Pakowanie danych do kilku plików

@Don_Adan, post #34

Ale oczywiscie mozna dwa razy zrobic Delete, pierwszy raz po polaczeniu archiwum i skasowac part1, part2, part3 etc, a drugi raz po rozpakowaniu gra.lha.
Można się jeszcze pozbyć pierwszego etapu, bo w zasadzie polecenie Join może od razu czytać pliki częściowe z dyskietek. Jeżeli podamy ścieżki z nazwami wolumenów, to przed każdą częścią zobaczymy systemowe okiekno "Insert volume ... in any drive".

Skopiowanie najpierw części na twardziela, ma jednak dwie zalety. Po pierwsze w skrypcie możemy elegancko poprosić usera o każdą dyskietkę przez 'askdisk'. Po drugie kopiowanie ma progressbara, a skopiowanie całej dyskietki trwa ponad minutę. Join progressbara nie ma, więc to niezbyt przyjazne użytkownikowi. Jak już to mamy na dysku, to wtedy Join nawet na przeciętnym kontrolerze ogarnie w kilka sekund.

Warto zauważyć, że progressbara nie mamy również przy rozpakowywaniu archiwum. To można nieco obejść przekierowując to, co wypisuje LhA, do okienka konsoli. Niestety w niektórych wersjach LhA to nie działa (np. 2.2). Działa w 2.15 i najlepiej dołączyć ją wtedy do dystrybucji.
[#47] Re: Pakowanie danych do kilku plików

@tukinem, post #42

Ciekawe po co autor skryptu się tak uczepił tej stacji wewnętrznej DF0:. Installerowi to doskonale wszystko jedno, a jak ktoś ma więcej stacji, może sobie umilić instalację.
[#48] Re: Pakowanie danych do kilku plików

@Krashan, post #45

Nie jestem autorem tej gry.
Ale dla mnie w ogole pakowanie danych dla gry, ktora dziala tylko z HD jest bez sensu przy obecnych wielkosciach HD.
Zawsze niespakowane dane sa troche szybciej wczytywane i gra ma wieksza responsywnosc (chyba takie slowo istnieje).
W przypadku gry Tukinema i podzialu jej na dyskietki, moze byc tak, ze nie da sie sensownie podzielic pilkow (ze wzgledu na wielkosc plikow) z gry na dyskietki w taki sposob, zeby uzycie miejsca na dyskietce bylo optymalne i wtedy gra zajmuje 1 lub 2 dyskietki wiecej, niz gdyby zajmowala jakby byla w formie archiwum multivolume. Kiedys 1 lub 2 dyskietki to byly koszty dla wydawcy gry.

Jesli ja bym mial robic taka gre, to pakowalbym rozpakowane pliki jako archiwum LZX albo jakims nowszym algorytmem lh z LHA 2.15.
Sprawdzilbym, ktory program lepiej je zarchiwizuje. Stare lha niczego juz spakowanego, dobrze nie spakuje.
[#49] Re: Pakowanie danych do kilku plików

@Don_Adan, post #48

Nie jestem autorem tej gry.
Nic takiego nie napisałem...
Jesli ja bym mial robic taka gre, to pakowalbym rozpakowane pliki jako archiwum LZX albo jakims nowszym algorytmem lh z LHA 2.15.
Dokładnie tak, chociaż nie robiłbym sobie nadziei nadmiernych z -lh5-, bo to urywa pojedyncze procenty.

Ostatnia aktualizacja: 16.04.2024 18:13:29 przez Krashan
[#50] Re: Pakowanie danych do kilku plików

@Krashan, post #49

lh5 to na pewno nie, ale chyba juz lhc czy lhd gdzies widzialem, te moga byc juz dobre do pakowania plikow spakowanych Crunchmania.
[#51] Re: Pakowanie danych do kilku plików

@Don_Adan, post #50

Jesteś jednakże ograniczony do tego, co obsłuży amigowa wersja LhA. Poza tym w kompresji bezstratnej nie ma cudów. Entropia źródła danych jest jak betonowa ściana i niżej nie zejdziesz. Coraz mniejsze uzyski są osiągane kosztem coraz większych mocy obliczeniowych i pamięci używanych przy kompresowaniu. Szczęśliwie dla amigowców, dekompresja zazwyczaj jest znacznie "tańsza" jeżeli chodzi o niezbędne zasoby.
[#52] Re: Pakowanie danych do kilku plików

@Krashan, post #51

LhA 2.15 to Amigowa chyba wersja jest, byc moze trzeba wybrac metode kompresji, zeby nowsze algorytmy lh byly uzyte.
Nie sprawdzalem ich, gdy jeszcze zylem.
Wiec jak bylyby dobre to wystarczy te lha 2.15 dolaczyc do dyskietek instalacyjnych z gra.
Ale tak jak juz pisalem to nie moja gra, i autor zrobi co chce.
Ale spakowanie rozpakowanych danych dobrym archiwizerem jest na pewno najlepsza opcja jesli gra ma byc na malej ilosci dyskietek instalacyjnych. I tak pewnie bym zrobil, jesli to ja bym decydowal.
[#53] Re: Pakowanie danych do kilku plików

@Krashan, post #32

Mam już gotowy (i przetestowany, po wielokroć w różnych wariantach) przykład skryptu i trzy ADF-y z "grą". Teraz tylko to wszystko opiszę i będzie tutorial... Skrypt jest na pierwszej dyskietce. Dyskietka nie jest bootowalna i zrobiłem założenie (żeby nie komplikować przykładu), że użytkownik ma zainstalowanego Installera, Lha i Join na dysku. Ewentualnie można je dorzucić na dyskietkę i ich użyć, żeby mieć pewność odpowiednio aktualnych wersji.

Ostatnia aktualizacja: 16.04.2024 21:55:52 przez Krashan
2
[#54] Re: Pakowanie danych do kilku plików

@Krashan, post #53

Ja bym raczej nie zakladal, ze uzytkownik ma te programy, a jezeli nawet, to niekoniecznie w katalogu ze sciezka dostepu. Lepiej, zeby byly na pierwszej dyskietce spakowane StoneCrackerem i skopiowane do katalogu, gdzie gra ma byc zainstalowana, a po uzyciu skasowane.
Niektore skrypty, maja jeszcze taki w miare fajny "feature", ze po wybraniu miejsca na gre, sprawdzaja czy jest tam dosc wolnego miejsca na HD np. 20MB, przed rozpoczeciem instalacji. Wolne miejsce w tym przypadku to bedzie zawartosc wszystkich dyskietek plus wielkosc rozpakowanego archiwum z gra.
[#55] Re: Pakowanie danych do kilku plików

@Don_Adan, post #54

Nie mogę dokładać do przykładu nowych ficzerów, bo a) zaciemni to przykład, b) mam na to ograniczoną ilość czasu.
[#56] Re: Pakowanie danych do kilku plików

@Krashan, post #55

I tak dalej nie rozumiem tego:
(set gdzie1 (tackon gdzie "KK1:"))


Czy to pod zmienną gdzie1 podstawia ścieżkę docelową z ewentualnymi podkatalogami do utworzenia? Tak rozumuję, ponieważ dalej przy copyfiles tam, gdzie dest mamy zmienną gdzie1.
[#57] Re: Pakowanie danych do kilku plików

@tukinem, post #56

Polecenie tackon łączy ze sobą dwa fragmenty ścieżek do pliku, wstawiając ukośnik, jeżeli jest potrzebny (i tym się różni od zwykłego połączenia stringów). Przykładowo jeżeli w gdzie mamy "Work:Gry", to
(tackon gdzie "KK1")
da w wyniku "Work:Gry/KK1".

W tym skrypcie ze screenshota jest małe zamieszanie, bo zarówno dyskietki się nazywają "KK1:", "KK2:" i "KK3:", jak i katalogi tworzone na dysku to "KK1", "KK2" i "KK3". Mało tego, do askdisk podaje się nazwę dyskietki bez dwukropka, co podnosi bałagan do kwadratu. Ty pomyliłeś się przy przepisywaniu i napisałeś z dwukropkiem, co by sugerowało dyskietkę, a tam chodzi o stworzenie ścieżki do katalogu na dysku. Następujące niżej copyfiles kopiuje z dyskietki "KK1:" do katalogu na dysku "<wskazany w askdir>/KK1"

Ostatnia aktualizacja: 17.04.2024 12:41:54 przez Krashan
[#58] Re: Pakowanie danych do kilku plików

@Krashan, post #55

Na razie daję sam przykład bazowy. Czyli archiwum z "grą" zostało pocięte na 3 części, części nagrane na dyskietki. Na pierwszej jest instalator, który:
  • Pozwala wybrać katalog docelowy (chyba że użytkownik początkujący - wtedy Installer domyślnie zakłada "Work:" a jeżeli nie ma takiej partycji, to największa partycja z zamontowanych).
  • Kopiuje tam trzy części archiwum.
  • Łączy je za pomocą Join.
  • Kasuje części.
  • Rozpakowuje archiwum tam gdzie użytkownik wskazał.
  • Kasuje archiwum.

Zgodnie z zaleceniami, dla użytkownika początkującego jest full automat - tylko zmienia dyskietki. Zaawansowany może wybrać katalog do instalacji, oraz ma możliwość pominięcia kroku skasowania archiwum, które np. można gdzieś sobie zbackupować. Ekspert wiadomo, chciał klikać, to klika we wszystko.
FakeGame1.adf
FakeGame2.adf
FakeGame3.adf

Skrypt ma teksty w dwóch językach: angielskim i polskim. Jeżeli ktoś ma w systemie polskie lokale (+ polskie lokale do Installera), to powinien mieć po polsku. Testowane na Instalerze 43.3 z Aminetu i wersji 47.19 z systemu 3.2.

Ostatnia aktualizacja: 17.04.2024 13:15:00 przez Krashan
[#59] Re: Pakowanie danych do kilku plików

@tukinem, post #56

Krashan odpisal co i jak.
Ale jak chcesz zobaczyc co robi ten skrypt, to po prostu uruchom go, z pomoca CLI z RAM:u:

ram:Installer ram:doinst

bez dyskietki w stacji
i po prostu obserwuj co jest robione przez installer.
Jakie katalogi i podkatalogi i gdzie sa zakladane, co jest gdzie kopiowane itp.
Poza tym taki doinst w ramie mozesz modyfikowac CED-em tak jak uwazasz i sprawdzac czy Twoje zmiany (typu zmiana tekstow, czy zmiana nazw podkatalogow) zadzialaja.
1
[#60] Re: Pakowanie danych do kilku plików

@tukinem, post #56

https://www.ppa.pl/programy/kurs-installera.html
Na stronie www.PPA.pl, podobnie jak na wielu innych stronach internetowych, wykorzystywane są tzw. cookies (ciasteczka). Służą ona m.in. do tego, aby zalogować się na swoje konto, czy brać udział w ankietach. Ze względu na nowe regulacje prawne jesteśmy zobowiązani do poinformowania Cię o tym w wyraźniejszy niż dotychczas sposób. Dalsze korzystanie z naszej strony bez zmiany ustawień przeglądarki internetowej będzie oznaczać, że zgadzasz się na ich wykorzystywanie.
OK, rozumiem