• Kurs Installera

20.02.2005 14:08, autor artykułu: Flash (Magazyn AMIGA)
odsłon: 4970, powiększ obrazki, wersja do wydruku,

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

Wstęp

Installer 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.

Spis treści

Składnia Installera

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ć:

  1. Każdą procedurę (pod tym pojęciem rozumiem komendę wraz z jej parametrami) należy ująć w nawiasy (). Ponieważ niektóre komendy mogą się "zagnieżdżać" jedna w drugiej, łatwo tu o błąd - dodanie lub pominięcie jakiegoś nawiasu. Jeżeli myślisz, że przesadzam, to przekonaj się sam:

    (set dest-dir (tackon (askdir
    (prompt "Where do you want to install it?")
    (help (cat @askdir-help "nChoose wisely!"))
    (default (tackon @default-dest "Utilities"))
    ) "Backup_of_your_program"))

    Installer Można się zgubić, prawda? Właśnie w takich sytuacjach nieocenioną pomoc oddaje CygnusEdytor - w menu "Special" umieszczona jest opcja FIND MATCHING BRACKET, która znajduje nawias pasujący do tego, na którym ustawiony jest kursor. Używając jej łatwo można sprawdzić, czy liczba nawiasów jest prawidłowa. Stawiając nawiasy trzeba też uważać, aby przypadkiem nie oddzielić od siebie komendy i jej parametrów. Installer traktuje bowiem dowolną liczbę komend ujętych we wspólne nawiasy jako jedną komendę. W związku z tym linia:

    (komenda (parametr_1 parametr_2))

    zostanie potraktowana jak:

    (komenda parametr)

    i otrzymasz komunikat "Too few arguments" - zbyt mało parametrów.

  2. Operacje matematyczne są w Installerze zapisywane w dość dziwaczny sposób: standardowo dowolne działanie zapisujemy jako:

    zmienna działanie operator, np. 2+5

    tymczasem w Installerze takie samo działanie wygląda tak:

    (działanie zmienna operator), np. (+ 2 5)

    Warto przy pisaniu swych własnych skryptów przestrzegać kilku dodatkowych zasad. Nie są one obowiązkowe, ale znacznie ułatwiają wprowadzanie poprawek i wpływają na przejrzystość programu (co może się przydać, gdy np. próbujesz zrozumieć, co właściwie robi program, który pisałeś trzy miesiące temu).


    • Wszystkie komendy i parametry wpisuj wyłącznie małymi literami. Duże litery zarezerwuj dla nazw procedur i (ewentualnie) zmiennych. Wydaje się to zbędne, ale porównaj sam:

      (sEt DEsT-DiR ( tAcKOn SoURcE-DiR paRAmETR))

      i

      (set DEST-DIR (tackon SOURCE-DIR parametr))

      Oczywiście jest to wyłącznie Twoja decyzja, a ta pierwsza wersja może wyda Ci się ciekawsza (sam widziałem kiedyś, jak ktoś nazywał wszystkie swoje pliki w stylu StArTuP-sEqUeNcE), ale..., a zresztą sam się przekonaj.


    • Przy pisaniu programów staraj się zachować konwencję taką, jak przy programach w Pascalu (wrrr!!) czy AMOS-ie - wyróżniaj każdą pętlę lub "zagnieżdżenie" dodatkowymi enterami. Jako przykład weźmy blok podany na samym początku. Troszeczkę go tylko "uporządkujemy":

      (set DEST-DIR
      (tackon
      (askdir
      (prompt "Where do you want to install it?")
      (help
      (cat
      @askdir-help
      "nChoose wisely!"
      )
      )
      (default
      (tackon
      @default-dest
      "Utilities"
      )
      )
      )
      "Backup_of_your_program"
      )
      )

      Z pewnością jest to kwestia przyzwyczajenia, ale mnie jest o wiele łatwiej połapać się w takim zapisie...
Spis treści

Komendy Installera

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!

Installer 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.

Spis treści

Funkcje matematyczne

+ dodawanie
- odejmowanie
* mnożenie
/ dzielenie
^ potęgowanie

Spis treści

Dopuszczalne porównania

= 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).

Spis treści

Operacje logiczne

(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.

Spis treści

Operacje bitowe

(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.

Spis treści

Znaki specjalne używane przy wyświetlaniu tekstu

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.

Spis treści

Pozostałe komendy

Indeks komend

abort askbool askchoices askdir askdisk askfile
asknumber askoptions askstring cat complete copyfiles
copylib delete execute exists exit expandpath
fileonly foreach getassign getdiskspace getenv getsize
getversion if makeassign makedir message onerror
pathonly procedure rename rexx run select
set startup strlen tackon textfile tooltype
trap until user welcome while working

Abort

(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".

Indeks Spis treści

Askbool

(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.

Indeks Spis treści

Askchoices

(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.

Indeks Spis treści

Askdir

(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.

Indeks Spis treści

Askdisk

(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).

Indeks Spis treści

Askfile

(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.

Indeks Spis treści

Asknumber

(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.

Indeks Spis treści

Askoptions

(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.

Indeks Spis treści

Askstring

(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.

Indeks Spis treści

Cat

(cat
A$
B$
.
.
.
Z$
)

Procedura łącząca podane łańcuchy tekstowe w jeden tekst.

Indeks Spis treści

Complete

(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.

Indeks Spis treści

Copyfiles

(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.

Indeks Spis treści

Copylib

(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).

Indeks Spis treści

Delete

(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).

Indeks Spis treści

Execute

(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).

Indeks Spis treści

Exists

(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.

Indeks Spis treści

Exit

(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ń.

Indeks Spis treści

Expandpath

(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).

Indeks Spis treści

Fileonly

(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.

Indeks Spis treści

Foreach

(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.

Indeks Spis treści

Getassign

(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:"

Indeks Spis treści

Getdiskspace

(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).

Indeks Spis treści

Getenv

(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:".

Indeks Spis treści

Getsize

(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.

Indeks Spis treści

Getversion

(getversion "[ścieżka/]plik"
[resident]
)

Procedura sprawdza wersję podanego pliku. Ponieważ jednak Installer nie potrafi operować na liczbach innych niż całkowite, wynikiem operacji jest wersja danego pliku przemnożona przez 65536. Np. biblioteka "exec.library", wersja 37.175 zostanie określona jako 2436300.

Parametr (resident) informuje program, że sprawdzana biblioteka znajduje się w ROM-ie Amigi.

Jeżeli wywołasz komendę (getversion) bez żadnych parametrów, to jej wynikiem będzie liczba odpowiadająca wersji aktualnego systemu operacyjnego.

Indeks Spis treści

If

(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.

Indeks Spis treści

Makeassign

(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).

Indeks Spis treści

Makedir

(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).

Indeks Spis treści

Message

(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".

Indeks Spis treści

Onerror

(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.

Indeks Spis treści

Pathonly

(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.

Indeks Spis treści

Procedure

(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).

Indeks Spis treści

Rename

(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).

Indeks Spis treści

Rexx

(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).

Indeks Spis treści

Run

(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).

Indeks Spis treści

Select

(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.

Indeks Spis treści

Set

(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.

Indeks Spis treści

Startup

(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".

Indeks Spis treści

Strlen

(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.

Indeks Spis treści

Tackon

(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"

Indeks Spis treści

Textfile

(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).

Indeks Spis treści

Tooltype

(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.

Indeks Spis treści

Trap

(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.

Indeks Spis treści

Until

(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.

Indeks Spis treści

User

(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.

Indeks Spis treści

Welcome

(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".

Indeks Spis treści

While

(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.

Indeks Spis treści

Working

(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).

Indeks Spis treści

Zdefiniowane zmienne i łańcuchy tekstowe

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).

Spis treści

"Tool Types" Installera

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.

Spis treści

Artykuł pierwotnie ukazał się w Magazynie Amiga.
Podziękowania dla p. M.Pampucha za udzielenie zgody na publikację w PPA.

    
dodaj komentarz
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