Wstęp | Składnia | |
Komendy | Funkcje matematyczne | |
Dopuszczalne porównania | Operacje logiczne | |
Operacje bitowe | Pozostałe komendy | |
Tooltype Installera | Znaki specjalne | |
Indeks komend | Zdefiniowane zmienne |
Installer to wysoce wyspecjalizowany produkt firmy Commodore, napisany dla ułatwienia życia programistom i użytkownikom komputerów. Dotychczas dla każdego programu trzeba było pisać dodatkową procedurę instalującą go na twardym dysku. Wskutek lenistwa programistów rzadko zdarzało się, by procedura taka była niezawodna i przyjazna dla użytkownika. Najczęściej zaś nie zamieszczano jej w ogóle, a użytkownikowi pozostawało jedynie żmudne kopiowanie poszczególnych plików, na co przeważnie nie miał czasu, chęci bądź brakło mu niezbędnego obycia z systemem Amigi.
Problem ten raczyła zauważyć firma Commodore i wprowadziła coś, co uważam (zaraz po Amidze jako takiej) za najlepszy pomysł w jej historii - program nazwany Installer.
Installer w swym działaniu jest nieco zbliżony do ARexxa. Jest to właściwie interpreter prostego języka programowania, składającego się z niewielkiej liczby komend i funkcji. Również prędkość pracy Installera jest wyjątkowo niewielka. Rekompensują to jednak uzyskiwane efekty.
Skrypt dla Installera może być napisany przy użyciu dowolnego edytora tekstu (ja preferuję CygnusEdytor, a dlaczego - o tym za chwilę). Rozkazy można wpisywać dużymi lub małymi literami, stosując dowolne odstępy między poszczególnymi wyrazami. Obowiązują jednak pewne zasady, których trzeba przestrzegać:
Każda komenda Installera ma podobny format, a wygląda to mniej więcej tak:
(komenda
(parametr_1)
(parametr_2)
...
(parametr_n)
)
Niektóre z parametrów komendy są niezbędne do jej działania, inne można
pominąć. Te, które są niezbędne, będę w opisie umieszczał w nawiasach
okrągłych (), parametry zaś opcjonalne - w kwadratowych []. Musisz jednak
pamiętać, że używając ich w programie trzeba umieszczać je w nawiasach
okrągłych!
Ponieważ wiele parametrów dla poszczególnych komend ma identyczną funkcję,
ograniczę się do jednorazowego objaśnienia każdego parametru, chyba że będzie
on pełnił różne funkcje w różnych komendach. Często napotkasz umieszczone w
opisie różne znaki, mające swoje określone znaczenie:
n, n1...n99 - liczba całkowita lub ciąg liczb
A$, A$...Z$ - łańcuch tekstowy lub kilka łańcuchów (jest to ciąg
znaków ujetych w cudzysłowy "")
dysk - nazwa danego dysku lub fizycznej stacji dysków
ścieżka - ścieżka dostępu do danego pliku (razem z nazwą dysku)
plik - nazwa wybranego pliku
ścieżka/plik - nazwa wybranego pliku razem ze ścieżką dostępu do
niego
[n], [A$] - zmienna opcjonalna; nie jest konieczna do zadziałania
podanego parametru
szablon - standardowy szablon AmigaDOS, (np. #?.info)
Obowiązuje generalna zasada, że każdy łańcuch tekstowy (w tym również nazwa
pliku, ścieżka dostępu lub szablon) może być zastąpiony procedurą, wynikiem
działania której jest łańcuch tekstowy (lub w niektórych wypadkach liczba
całkowita), każda zaś liczba całkowita może być zastąpiona procedurą, której
rezultatem jest dowolna liczba.
+ dodawanie
- odejmowanie
* mnożenie
/ dzielenie
^ potęgowanie
= równy
> większy niż
< mniejszy od
>= większy lub równy
<= mniejszy lub równy
<> różny od
UWAGA! porównania >= i <= można zapisywać tylko w takiej postaci, inaczej
nie zostaną one rozpoznane (nie możesz napisać np. a =< b).
(and n1 n2) - logiczna koniunkcja. Wynikiem jest 0, jeżeli przynajmniej
jeden ze składników jest zerem.
(or n1 n2) - logiczne sumowanie. Wynik wynosi 1, gdy choć jedna ze
zmiennych jest różna od zera.
(not n) - logiczna negacja. Gdy zmienna jest zerem, to wynik wynosi 1, w
przeciwnym wypadku jest równy 0.
(xor n1 n2) - wynikiem tej operacji jest wtedy 1, gdy tylko jedna ze
zmiennych jest dodatnia.
(in n1 n2) - sprawdza stan bitu n2 zmiennej n1. Jeżeli testowany
bit zmiennej n1 jest "zapalony", to wynik tej operacji jest równy
wartości testowanego bitu.
(shiftleft n1 n2) - przesuwa bity zmiennej n1 o n2 pozycji w lewo. Jest
to odpowiednik mnożenia zmiennej n1 przez 2^n2.
(shiftright n1 n2) - jw., ale w przeciwną stronę (zmienna n1 jest
dzielona przez 2^n2).
(bitnot n) - zmienia znak zmiennej na przeciwny i dodatkowo zmniejsza
wynik o 1.
(bitand n1 n2) - przeprowadza operację AND na poszczególnych bitach
zmiennych n1 i n2, np.:
(bitand 126 23) =>
01111110 =
126
bitand
00010111 =
23
--------
00010110 =
22
(bitor n1 n2) - przeprowadza operację OR na poszczególnych bitach
zmiennych n1 i n2.
(bitxor n1 n2) - przeprowadza operację XOR na poszczególnych bitach
zmiennych n1 i n2.
n - powoduje przejście kursora do następnej linii tekstu
" - powoduje wstawienie w tym miejscu znaku "
%s - w miejscu wystąpienia tego znaku zostanie umieszczony tekst
podany jako parametr dla danego tekstu (zdaję sobie sprawę, że to
brzmi jak masło maślane, ale nie wiem, jak to zapisać jaśniej). Jeżeli
użyjesz tego symbolu kilka razy, to musisz podać też odpowiednią
liczbę parametrów, nawet gdy chodzi o identyczny tekst, np.:
("ABC = %s" "def") da wynik ABC = def
("ABC%s%s" "def" "GHI") da wynik ABCdefGHI
("ABC = %s*%s" "def" "def") da wynik ABC = def*def
%ld - to odpowiednik znaku %s w odniesieniu do zmiennych liczbowych.
Obowiązują tu takie same zasady jak poprzednio.
(abort [A$])
Przerywa realizację programu, wyświetlając komunikat o błędzie. Jeżeli podasz jako parametr tekst A$, to zostanie on podany jako przyczyna błędu, w przeciwnym wypadku Installer stwierdzi, że był to błąd "niewiadomego pochodzenia".
(askbool
(prompt A$)
(help A$)
[choices
A$
B$
]
[default n]
)
Procedura żądająca od użytkownika dokonania wyboru jednej z dwóch możliwych
czynności. Gdy użytkownik wybierze lewy przycisk, jej wynik będzie równy 1,
w przeciwnym razie wynikiem będzie 0. Parametr (prompt) powoduje
wyświetlenie tekstu A$ jako informacji dla użytkownika, czego program
właściwie od niego oczekuje. Parametr (help) definiuje tekst, jaki zostanie
wyświetlony, gdy użytkownik naciśnie przycisk "Help" Installera. Parametr
(choices) definiuje napisy na przyciskach wyboru. Gdy pominiemy ten
parametr, to program sam ustali podpisy na tych przyciskach jako "Tak"i
"Nie".
Gdy poziom doświadczenia użytkownika jest ustawiony jako "początkujący",
procedura (askbool) pomijana jest w ogóle, a program przyjmuje jako jej wynik
wartość odpowiadającą wciśnięciu prawego przycisku. Możesz to zmienić
używając parametru (default). Określa on, jaką wartość ma przyjąć program
jako wynik tej procedury.
(askchoice
(prompt A$)
(help A$)
(choices
A$
B$
.
.
.
Z$
)
[default n]
)
Przedstawia użytkownikowi listę opcji, z których ten może wybrać jedną. Wynikiem procedury jest liczba całkowita, przy czym dla pierwszej opcji będzie ona równa 0, dla drugiej 1, dla trzeciej 2 itd. Parametr (choices) definiuje teksty, jakie zostaną wyświetlone jako opcje. Możesz zdefiniować praktycznie nieograniczoną liczbę opcji. Dla poziomu Novice jako wynik procedury program standardowo przyjmuje wartość 0.
(askdir
(prompt A$)
(help A$)
(default "ścieżka")
)
Procedura prosząca użytkownika o wybranie jakiejś szuflady na dowolnym dysku, dodatkowo umożliwiająca mu stworzenie nowej szuflady. Jej wynikiem jest łańcuch tekstowy, będący ścieżką dostępu do wybranego katalogu.
(askdisk
(prompt A$)
(help A$)
(dest "dysk")
[newname A$]
)
Procedura prosząca użytkownika o włożenie określonego dysku do dowolnej
stacji dysków. Parametr (dest) określa, na jaki dysk ma czekać program.
Podając jego nazwę musisz pamiętać, żeby nie umieścić po niej znaku ":", to
znaczy, że żądając np. dysku "Workbench 3.0:" musisz wpisać:
(dest "Workbench3.0")
Parametr (newname) definiuje nową nazwę, pod jaką zostanie zapamiętany żądany
dysk po włożeniu do stacji. Np. gdy prosisz o dysk nazwany
"Inwazja_zielonych_stworów_z_kosmosu_132:" i użyjesz parametru
(newname "Inwazja")
to od tej pory żądany dysk będzie traktowany tak, jakby się nazywał
"Inwazja:". Uwaga! Obowiązuje taka sama zasada jak dla parametru (dest).
(askfile
(prompt A$)
(help A$)
(default "ścieżka")
)
Prosi użytkownika o wybranie dowolnego pliku z dowolnego dysku. Wynikiem jej działania będzie łańcuch tekstowy zawierający nazwę wybranego pliku wraz ze ścieżką dostępu do niego. Installer nie sprawdza jednak, czy użytkownik wybrał jakikolwiek plik. Musisz zadbać o to sam. Parametr (default) definiuje ścieżkę, jaka zostanie ustawiona na początku działania procedury.
(asknumber
(prompt A$)
(help A$)
[range n1 n2]
[default n]
)
Prosi użytkownika o podanie jakiejś liczby całkowitej. Wynikiem jej
działania będzie podana przez użytkownika liczba całkowita. Parametr (range)
definiuje przedział, w jakim musi się mieścić podana przez użytkownika
liczba.
Dla poziomu "Novice" program standardowo przyjmuje wartość 0 jako
wynik działania procedury.
(askoptions
(prompt A$)
(help A$)
(choices
A$
B$
.
.
.
Z$
)
[default n]
)
Procedura przedstawiająca użytkownikowi listę opcji i prosząca go o
zatwierdzenie (wybranie) dowolnej ich liczby. Wynikiem tej procedury będzie
liczba naturalna, w której zapisie binarnym ustawione bity odpowiadają
wybranym opcjom. Np.: z listy pięciu opcji wybrałeś: pierwszą, drugą i
piątą.
Parametr (choices) ma taką samą funkcję jak w procedurze (askchoice).
Dla poziomu "Novice" program standardowo przyjmuje wartość odpowiadającą
uaktywnieniu wszystkich opcji.
(askstring
(prompt A$)
(help A$)
[default A$]
)
Procedura prosząca użytkownika o podanie jakiegoś tekstu. Wynikiem jej
działania będzie łańcuch tekstowy zawierający to, co zostało wpisane przez
użytkownika.
Dla poziomu "Novice" za wynik działania procedury program standardowo
przyjmuje łańcuch pusty.
(cat
A$
B$
.
.
.
Z$
)
Procedura łącząca podane łańcuchy tekstowe w jeden tekst.
(complete n)
Funkcja wyświetlająca na belce okna Installera komunikat "n% completed", czyli "ukończone w n procentach". Program nie reaguje na wartość podanej zmiennej - można podać zarówno liczbę ujemną, jak i wykonać 1000% normy.
(copyfiles
(source "ścieżka[/plik]")
(dest "ścieżka")
[all]
[pattern "szablon"]
[choices
A$
B$
C$
.
.
.
Z$
]
[confirm]
[prompt A$]
[help A$]
[infos]
[noposition]
[nogauge]
)
Najważniejsza procedura Installera, kopiująca wskazane pliki do określonej
szuflady. Parametr (source) określa, z jakiej szuflady będą kopiowane pliki.
Jeżeli podasz także nazwę pliku, to procedura skopiuje tylko ten jeden
wybrany plik. Parametr (dest) określa, do jakiej szuflady mają być
skopiowane pliki. Jeżeli taki katalog nie istnieje, to zostanie on
automatycznie stworzony. Parametr (all) informuje program, że mają być
skopiowane wszystkie pliki z wybranego katalogu. Uwaga! Jeżeli wcześniej
użyłeś parametru (source) w postaci (source "ścieżka/plik"), to zakończy się
to zawieszeniem systemu! Po prostu program po napotkaniu parametru (all)
traktuje wskazany uprzednio plik tak, jak gdyby był on katalogiem, z którego
ma skopiować wszystkie pliki, a jak się to kończy - łatwo się przekonać.
Parametr (pattern) powoduje, że Installer skopiuje z wybranego katalogu tylko
te pliki, które odpowiadają podanemu szablonowi. Parametr (choices) zawiera
listę plików, które mają być skopiowane z podanej szuflady. Musisz mieć
jednak pewność, że dane pliki rzeczywiście znajdują się w tej szufladzie.
Inaczej otrzymasz komunikat o błędzie i program zakończy pracę.
Parametry (all), (pattern) i (choices) WYKLUCZAJĄ SIĘ WZAJEMNIE!!!
Parametr (confirm) powoduje, że program przedstawi użytkownikowi listę plików
przeznaczonych do skopiowania i poprosi go o wybranie tych, które mu
odpowiadają. Opcja ta działa tylko na poziomie "Expert". Parametry (prompt)
i (help) mają taką samą funkcję, jak w poprzednio opisanych procedurach, ale
używane są tylko w wypadku użycia opcji (confirm).
Parametr (infos) ma dwie funkcje. Po pierwsze, przy kopiowaniu plików
automatycznie kopiowane są także ich ikony, ma to znaczenie głównie przy
kopiowaniu z użyciem opcji (pattern) lub (choices). Po drugie zaś, gdy
program tworzy nową szufladę, do której będą kopiowane pliki, stworzy także
jej ikonę.
Parametr (noposition) powoduje, że przy kopiowaniu ikon lub przy tworzeniu
nowych nie będą kopiowane parametry dotyczące ustawienia ikon w oknie. Jest
to funkcja podobna do opcji "Icons/UnSnapshot" w menu Workbencha. Parametr
(nogauge) usuwa miernik obrazujący stan kopiowania. Jest to przydatne w
sytuacji, gdy w głównym oknie Installera wyświetlany jest jakiś ważny
komunikat, który mógłby być zasłonięty przez miernik.
(copylib
(source "ścieżka/plik")
(dest "ścieżka")
[confirm]
[prompt A$]
[help A$]
[infos]
[noposition]
[nogauge]
)
Procedura będąca odmianą procedury (copyfiles), ale przeznaczona do
kopiowania bibliotek. Potrafi kopiować tylko pojedyncze pliki. Jej mocną
stroną jest fakt, że przy kopiowaniu biblioteki sprawdza, czy w katalogu
docelowym nie istnieje nowsza wersja kopiowanego pliku i jeżeli tak jest, to
przerywa operację.
Opcja (confirm) działa tylko przy poziomie "Expert". Przed skopiowaniem
biblioteki informuje użytkownika, jaka jest wersja kopiowanego pliku oraz
jaka wersja znajduje się w katalogu docelowym, po czym prosi go o podjęcie
decyzji -- skopiować czy nie? Parametry (prompt) i (help) potrzebne są tylko
wtedy, gdy używa się opcji (confirm).
(delete "ścieżka:plik"
[confirm]
[prompt A$]
[help A$]
[infos]
)
Procedura kasująca wskazany plik.
Parametr (confirm) powoduje, że program pyta użytkownika o zgodę na
skasowanie danego pliku. Funkcja działa tylko na poziomie "Expert".
Parametry (prompt) i (help) potrzebne są tylko wtedy, gdy używasz opcji
(confirm).
(execute "ścieżka/plik [parametry_skryptu]"
[confirm]
[prompt A$]
[help A$]
)
Procedura ta stanowi odpowiednik komendy "Execute" AmigaDOS: wykonuje
wskazany skrypt AmigaDOS.
Parametr (confirm) powoduje, że program pyta użytkownika o zgodę na
uruchomienie skryptu. Funkcja działa tylko na poziomie "Expert". Parametry
(prompt) i (help) potrzebne są tylko wtedy, gdy używasz opcji (confirm).
(exists "ścieżka/plik")
Procedura sprawdzająca, czy wskazany plik istnieje. Jeżeli tak jest, to wynikiem jej działania będzie liczba 1, w przeciwnym wypadku wynik będzie równy 0.
(exit
[A$]
[quiet]
)
Procedura powodująca wyjście z programu, wyświetlająca jednocześnie komunikat
o zainstalowaniu danego programu w wybranym katalogu.
Jeżeli podasz jako parametr łańcuch tekstowy (A$), to zostanie on dodatkowo
dopisany do pożegnalnego komunikatu.
Parametr (quiet) powoduje natychmiastowe zakończenie pracy programu bez
żadnych dodatkowych wyjaśnień.
(expandpath "ścieżka")
Procedura określająca, jaki fizyczny katalog odpowiada podanemu katalogowi
logicznemu (katalog logiczny to np. "Fonts:", "Libs:"). Wynikiem jej
działania jest łańcuch tekstowy będący odpowiednim katalogiem fizycznym. Np.
przy testowaniu katalogu "Libs:" wynikiem procedury będzie ciąg:
"SYS:Libs"
Funkcja ta ma pewne ograniczenia: zawodzi ona całkowicie w wypadku katalogów
logicznych stworzonych procedurą (makeassign) lub komendą "Assign" z
AmigaDOS. W takim wypadku należy użyć procedury (getassign).
(fileonly "ścieżka:plik")
Procedura wydzielająca z podanego ciągu tekstowego wyłącznie nazwę pliku, pomijając ścieżkę dostępu do niego. Jej wynikiem jest ciąg tekstowy będący nazwą tego pliku.
(foreach "ścieżka" "szablon"
(
(procedura_1)
(procedura_2)
(...)
(procedura_n)
)
)
Procedura (foreach) jest formą pętli. Określa, jakie (procedury), które odpowiadają podanemu szablonowi, zostaną wykonane dla wszystkich plików ze wskazanej szuflady.
(getassign "ścieżka" ["d"])
Nieco odmienna wersja procedury (expandpath). Pozwala ona na określenie
katalogu fizycznego, który związany jest z katalogiem logicznym, utworzonym
poprzednio procedurą (makeassign) lub "Assign" z AmigaDOS. W porównaniu z
(expandpath) musisz pamiętać, że podając nazwę katalogu logicznego nie możesz
umieścić po niej dwukropka ":", to znaczy, że testując katalog "Fonts:"
używasz komendy:
(getassign "Fonts")
Parametr "d" informuje program, że chodzi o urządzenie fizyczne, takie jak
"DF1:" czy "DH0:"
(getdiskspace "dysk:")
Procedura sprawdzająca ilość wolnego miejsca na wskazanym dysku. Jako wynik swego działania zwraca liczbę całkowitą, która odpowiada ilości wolnego miejsca na wskazanym dysku (w bajtach).
(getenv "plik")
Funkcja o działaniu podobnym jak w AmigaDOS: pobiera łańcuch tekstowy z określonego pliku znajdującego się w katalogu logicznym "ENV:".
(getsize "ścieżka:plik")
Procedura sprawdza długość danego pliku. Jej wynikiem jest liczba całkowita odpowiadająca wielkości wskazanego pliku (w bajtach). Funkcja ta jest bardzo przydatna, gdyż Installer nie sprawdza przy kopiowaniu, czy kopiowany plik zmieści się na dysku docelowym.
(getversion "[ścieżka/]plik"
[resident]
)
(if warunek
(
instrukcje wykonywane, gdy warunek jest spełniony
)
[
instrukcje wykonywane, gdy warunek nie jest spełniony
]
)
Procedura będąca odpowiednikiem konstrukcji if...then...else z innych języków programowania.
(makeassign A$ ["ścieżka"]
[safe]
)
Odpowiednik komendy "Assign" z AmigaDOS. Przyporządkowuje podanemu
katalogowi logicznemu określony katalog fizyczny. Jeżeli będzie podana tylko
nazwa katalogu logicznego, to katalog ten zostanie usunięty.
Parametr (safe) powoduje zignorowanie ewentualnych błędów, jakie mogą
wystąpić przy tworzeniu lub usuwaniu danego katalogu logicznego (np. gdy
próbujesz usunąć z listy katalog będący w rzeczywistości nazwą dysku
włożonego do którejś ze stacji).
(makedir "ścieżka"
[confirm]
[prompt A$]
[help A$]
[infos]
)
Procedura zakładająca nowy katalog o określonej nazwie i na wskazanym
dysku.
Parametr (confirm) powoduje, że program pyta użytkownika o zgodę na
stworzenie nowego katalogu. Funkcja działa tylko na poziomie
"Expert".
Parametry (prompt) i (help) potrzebne są tylko wtedy, gdy używasz opcji
(confirm).
(message A$)
Procedura wyświetlająca określony komunikat i pozwalająca mu podjąć decyzję, czy chce kontynuować wykonywanie programu. Procedura ta jest pomijana przy poziomie "Novice".
(onerror
(procedura_1)
(procedura_2)
(...)
(procedura_n)
)
Procedura ta definiuje czynności, jakie ma wykonać Installer w wypadku wystąpienia błędu podczas realizacji skryptu.
(pathonly "ścieżka/plik")
Procedura wydzielająca z podanego ciągu tekstowego wyłącznie ścieżkę dostępu do danego pliku, pomijając jego nazwę. Jej wynikiem jest ciąg tekstowy będący ścieżką dostępu do wskazanego pliku.
(procedure nazwa_komendy
(procedura_1)
(procedura_2)
(...)
(procedura_n)
)
Procedura ta definiuje nową komendę Installera, tzn. ciąg instrukcji, jakie zostaną wykonane po użyciu komendy (nazwa_komendy). Musisz jednak pamiętać, że przed użyciem komendy trzeba ją najpierw zdefiniować (najrozsądniej jest umieścić definicje wszystkich nowych komend na początku programu).
(rename "ścieżka_1/plik_1" "ścieżka_2/plik_2"
[confirm]
[prompt A$]
[help A$]
[safe]
)
Procedura pełniąca taką samą funkcję jak komenda "Rename" w AmigaDOS. Jeżeli
"ścieżka_1" i "ścieżka_2" są identyczne, procedura ogranicza się do zmiany
nazwy wskazanego pliku na "plik_2". Jeżeli natomiast ścieżki dostępu są
różne, to procedura dodatkowo przenosi wskazany plik do katalogu
"ścieżka_2".
Jeżeli użyjesz parametru (confirm), to program poprosi użytkownika o
wyrażenie zgody na przeprowadzenie operacji. Parametr ten zostanie pominięty
dla poziomu innego niż "Expert".
Parametry (prompt) i (help) potrzebne są tylko wtedy, gdy używasz opcji
(confirm).
(rexx "ścieżka/plik [parametry_skryptu]"
[confirm]
[prompt A$]
[help A$]
)
Rozpoczyna wykonywanie wskazanego skryptu ARexxa.
Parametr (confirm) działa tylko przy poziomie doświadczenia
ustawionym na "Expert". Parametry (prompt) i (help) mają
zastosowanie tylko z komendą (confirm).
(run "ścieżka/plik [parametry_komendy]"
[confirm]
[prompt A$]
[help A$]
)
Procedura wywołująca wskazaną komendę AmigaDOS.
Parametry (confirm), (prompt) i (help) mają takie samo
zastosowanie jak w komendzie (rexx).
(select n
A$
B$
.
.
.
Z$
)
Procedura wybierająca n-ty łańcuch tekstowy z załączonej listy, przy czym pierwszy łańcuch nosi numer 0, drugi -- 1, trzeci -- 2 itd. Wynikiem jej działania jest wybrany łańcuch tekstowy.
(set zmienna wartość)
Procedura przyporządkowująca określoną wartość danej zmiennej. Dla zmiennej tekstowej będzie to łańcuch tekstowy, dla liczbowych - liczba całkowita. Zmienna może mieć dowolną nazwę, a nazwy dla zmiennych tekstowych nie różnią się niczym od nazw zmiennych liczbowych.
(startup A$
(prompt A$)
(help A$)
(command
A$
B$
.
.
.
Z$
)
)
Procedura ta dopisuje określony tekst do pliku
"user-startup" znajdującego się w katalogu logicznym "S:". Jeżeli
plik taki nie istnieje, to zostanie automatycznie stworzony.
Część dopisana przez Installer zostanie zaznaczona ciągiem:
;BEGIN ciąg_A$_użyty_przy_wywołaniu_komendy_(startup)
Jeżeli ciąg, który chcesz wprowadzić, już istnieje, to
procedura ta zostanie pominięta.
Parametr (command) definiuje tekst, jaki ma być dopisany do pliku
"user-startup".
(strlen A$)
Procedura sprawdzająca długość podanego łańcucha tekstowego. Wynikiem jej działania jest liczba odpowiadająca liczbie znaków w podanym łańcuchu.
(tackon A$ B$)
Procedura przeznaczona specjalnie do tworzenia nowych
ścieżek dostępu. Wynikiem jej działania jest łańcuch tekstowy o
postaci A$/B$, np.
:
(tackon "Ram:Backups" "modules") da wynik "Ram:Backups/modules"
(textfile
(dest "ścieżka/plik")
[include "ścieżka/plik"]
[append A$]
[confirm]
[prompt A$]
[help A$]
)
Procedura tworząca plik tekstowy o podanej nazwie, umieszczony we wskazanym
katalogu.
Komenda (include) powoduje dołączenie do tworzonego pliku innego, wskazanego
pliku tekstowego.
Komenda (append) dodaje do tworzonego pliku ciąg A$.
Parametr (confirm) działa tylko dla poziomu "Expert". Parametry (prompt) i
(help) mają sens tylko w połączeniu z (confirm).
W każdej procedurze (textfile) możesz użyć dowolnej liczby komend
(include) i (append).
(tooltype
(dest "ścieżka/plik")
[setstack n]
[setdefaulttool "ścieżka/plik"]
[settooltype A$ [B$]]
[noposition]
[swapcolors]
[confirm]
[prompt A$]
[help A$]
)
Procedura wprowadzająca zmiany w informacjach umieszczonych w danej ikonie
(pliku z rozszerzeniem ".info").
Parametr (dest) definiuje plik, w jakim zostaną dokonane poprawki.
Parametr (setstack) ustawia wartość w polu "Stack" na równą n.
Parametr (setdefaulttool) ma zastosowanie tylko w wypadku plików typu
"Project". Wpisuje on w pole "Default Tool" podany plik, powodując, że
będzie on uruchamiany do chwili pokazania danego projektu.
Parametr (settooltype) ma dwie funkcje. Jeżeli jako argument podasz tylko
jeden łańcuch tekstowy, to Installer poszuka w polu "Tool Types" identycznego
łańcucha i w wypadku, gdy go znajdzie, usunie go z listy. Jeżeli zaś podasz
ciągi A$ i B$, to w pole "Tool Types" zostanie wpisana nowa linia w postaci
A$=B$. Np.:
(settooltype "DONOTWAIT") usunie parametr DONOTWAIT z pola "Tool Types",
(settooltype "TIME" "15") wpisze linie "TIME=15" w pole "Tool Types".
Parametr (noposition) usuwa informacje na temat położenia danej ikony w
oknie. Odpowiada to komendzie "UnSnapshot" z menu "Icons"
Workbencha.
Twórcy systemu operacyjnego Amigi zdecydowali się zamienić kolory
Workbencha począwszy od wersji 2. Konsekwencją tego jest fakt, że
wszystkie ikony zaprojektowane dla systemu 1.3 mają dość dziwny
wygląd. Aby temu zapobiec, stworzono opcję (swapcolors).
Sprawdza ona wersję systemu Amigi, na której pracuje i, jeżeli
jest to wersja 1.3, zmienia kolory wskazanej ikony.
(trap
(procedura)
)
Procedura powodująca, że błąd, jaki może wystąpić przy realizacji danej komendy (kopiowanie nie istniejącego pliku itp.), zostanie zignorowany.
(until warunek
(
(procedura_1)
(procedura_2)
(...)
(procedura_n)
)
)
Procedura ta określa zestaw czynności, które będą wykonywane, dopóki określony warunek nie zostanie spełniony.
(user n)
Komenda ta zmienia poziom doświadczenia użytkownika.
Odpowiednie wartości to:
0 -- poziom NOVICE
1 -- poziom AVERAGE
2 -- poziom EXPERT
Najczęsciej używa się tej komendy, gdy wymagana jest jakaś
operacja, która zostałaby pominięta na poziomie niższym niż
"Expert", np. skasowanie jakiegoś ważnego pliku.
(welcome [A$])
Procedura ta wywołuje ekran, jaki standardowo zostaje przez Installer
pokazany jako pierwszy (ekran wyboru poziomu doświadczenia i pozostałych
parametrów). Jeżeli procedura taka zostanie umieszczona w programie, to
ekran wyboru parametrów zostanie wyświetlony dopiero PO jej
wykonaniu.
Jeżeli podasz łańcuch A$, to zostanie on umieszczony na początku
tekstu dostępnego pod przyciskiem "Help".
(while warunek
(
(procedura_1)
(procedura_2)
(...)
(procedura_n)
)
)
Procedura w swym działaniu zbliżona do (until), z tym że tutaj określa ona zestaw czynności, które będą wykonywane dopóki określony warunek jest spełniany.
(working A$)
Procedura wyświetlająca w głównym oknie Installera określony komunikat. Jest ona bardzo przydatna przy uruchamianiu niektórych czasochłonnych procedur, które nie mają żadnych zewnętrznych objawów swego działania (np. formatowanie dysku czy kasowanie kilkunastu plików).
Aby ułatwić życie programistom, twórcy Installera wbudowali w
niego kilkanaście gotowych tekstów, będących instrukcjami do
najczęściej używanych komend. Aby wywołać taki tekst, wystarczy
podać jego nazwę tam, gdzie wymagany jest łańcuch tekstowy.
@askchoice-help - wyjaśnia obsługę procedury (askchoice)
@askdir-help - jw. dla procedury (askdir)
@askdisk-help - jw. dla procedury (askdisk)
@askfile-help - jw. dla procedury (askfile)
@asknumber-help - jw. dla procedury (asknumber)
@askoptions-help - jw. dla procedury (askoptions)
@askstring-help - jw. dla procedury (askstring)
@copyfiles-help - jw. dla procedury (copyfiles)
@copylib-help - jw. dla procedury (copylib)
@makedir-help - jw. dla procedury (makedir)
@startup-help - jw. dla procedury (startup)
Teksty te będą wyświetlone w wybranym języku (patrz niżej), jeżeli Twoja
Amiga ma Kickstart 2.1 lub wyższy, a dodatkowo ma dostęp do pliku
"locale.library". W przeciwnym wypadku będzie to język angielski.
Zdefiniowane komunikaty najbardziej nadają się do zużytkowania jako parametr
(help) danej procedury.
Oprócz tego Installer zawiera kilka zdefiniowanych z góry zmiennych, które
niosą ze sobą nieraz bardzo potrzebne informacje.
@app-name - to łańcuch tekstowy, który Installer traktuje jako nazwę
aktualnie wykonywanego skryptu. Standardowo zawiera on tekst "App Test",
możesz to jednak zmienić odpowiednim parametrem przy uruchamianiu
Installera.
@default-dest - przyjmowany na początku działania programu katalog
docelowy dla wszelkich operacji w rodzaju kopiowania plików itd. Program
ustala go na podstawie priorytetów poszczególnych napędów przyłączonych do
Amigi.
@each-name - zawiera nazwę pliku aktualnie "obrabianego" przez
procedurę (foreach).
@ioerr - zawiera numer błędu, jaki wystąpił podczas realizacji
skryptu. Możesz za jego pomocą sprawdzić, czy w czasie wykonywania
instrukcji zabezpieczonej przez procedurę (trap) wszystko poszło
gładko.
@language - łańcuch tekstowy określający, w jakim języku ma się
komunikować Installer. Standardowo wybierany jest język angielski. Możesz
to zmienić odpowiednim parametrem przy wywołaniu Installera.
@pretend - parametr określający, czy instalacja ma być jedynie
symulowana. Jeżeli tak, to parametr zawiera wartość 1, w przeciwnym wypadku
(instalacja "naprawdę") jest równy 0.
@user-level - jest liczbą całkowitą określającą, jaki jest poziom
doświadczenia użytkownika. Tworzony jest na tej samej zasadzie jak komenda
(user).
Zwykle Installer uruchamiany jest poprzez dwukrotne kliknięcie na
ikonie skryptu instalacyjnego danego programu. Ikona taka zawiera
pole nazwane "Tool Types". Wpisując tam określone komendy możesz
w pewnym stopniu dostosować program do swych własnych potrzeb:
SCRIPT=ścieżka/plik - informuje Installer, gdzie znajduje się
skrypt, który ma być wykonany.
APPNAME=nazwa_programu - ustala nazwę instalowanego programu
(zmienia też odpowiednio zmienną @app-name). Od tej pory wszelkie
komunikaty używające nazwy instalowanego programu (ekran wyboru
parametrów i ekran pożegnalny) będą używały tej nazwy.
MINUSER=poziom - ustala, jaki minimalny poziom doświadczenia
może ustawić użytkownik w preferencjach. Jeżeli jako MINUSER
ustawisz "Expert", to ekran wyboru poziomu doświadczenia w ogóle
nie zostanie wyświetlony.
DEFUSER=poziom_początkowy - definiuje sugerowany poziom
doświadczenia użytkownika. Nie jest przydatny przy ustawieniu
MINUSER=EXPERT.
LOGFILE=ścieżka/plik - definiuje, w jakim katalogu i pod jaką
nazwą zostanie umieszczony plik kontrolny (o ile użytkownik
będzie chciał otrzymać taki plik).
LANGUAGE=język - określa, jakiego języka będzie używał Installer
w komunikacji z użytkownikiem. Standardowo wybierany jest
angielski. Użycie innego języka wymaga istnienia biblioteki
"locale.library".
PRETEND=FALSE - użycie tej opcji powoduje, że Installer
uniemożliwia wybranie instalacji "na próbę".
LOG=FALSE - funkcja ta ma zastosowanie przy poziomie "Novice".
Po jej użyciu Installer nie stworzy kontrolnego pliku instalacji.
PRINT=FALSE - ten parametr powoduje uniemożliwienie wydrukowania
pliku kontrolnego.
Artykuł pierwotnie ukazał się w Magazynie Amiga.
Podziękowania dla p. M.Pampucha za udzielenie zgody na publikację w PPA.