Zdjęcia ekranu:
REXX-PP00.GIF - Czołówka z dokumentacji ROBOSAVE REXX-PP01.GIF - Folder ROBOSAVE REXX-PP02.GIF - Program IniMaint do obsługi plików INI REXX-PP03.GIF - MultiMaint to zestaw programów.

Rys.1. Czołówka z dokumentacji ROBOSAVE.
W obu definiujemy pliki podlegające archiwzacji. Nie muszą to być tylko pliki z katalogu Desktop. Można np. zarchiwizować wszystkie pliki INI występujące w naszym systemie, a więc i te pochodzące także od naszych aplikacji. Oba omawiane programy pozwalają na odzyskiwanie pojedynczych plików i tworzenie prawie dowolnej liczby generacji kopii zapasowych (kto z nas zapamięta co było w poprzednich np. 256?!). Oba można wykorzystać do przenoszenia Pulpitu na inne komputery, np. sieciowe.

Rys.2. Widok folderu RoboSave.
Odzyskiwanie Pulpitu polega zazwyczaj na uruchomieniu programu RESTORE. Odbywa się to jeszcze przed uruchomieniem programu PMSHELL.EXE. Dlatego użytkownik OS/2 musi uruchomić system tylko do poziomu znakowego. Na przykład podczys startu systemu, poprzez naciśnięcie klawiszy Alt-F1, i wybraniu opcji C (jest to zwykła procedura ratunkowa Warpa, opisana w angielskim podręczniku na stronie 204).
Pamiętajmy, że nie wszystkie tego typu programy, w tym i ROBOSAVE, pozwolą na migrację Pulpitu do innej wersji OS/2, albo i tej samej, ale za to z łatką (po zastosowaniu CSD [Corrective Service Diskette]). Nie wszystki też potrafią zachować informacje o pracujących aplikacjach, tak że po odzyskaniu Pulpitu użytkownik będzie musiał to zrobić samemu.

Rys.3. Program IniMaint do obsługi plików INI.
Najbardziej rozbudowany jest pakiet MultiMaint, który jest nadzbiorem pakietu SysMaint, a ten z kolei pakietu IniMaint. Na zdjęciu pokazany jest program IniMaint, gdyż tylko taki jest dostępny w shareware, pomimo rozprowadzania pakietów o nazwie MultiMaint (zawarte w nim programy pozostają nieaktywne do czasu rejestracji). Nas najbardziej interesuje pakiet MultiMaint. Jego podstawowe funkcje sprowadzają się do trzech zadań - edycji plików INI, edycji atrybutów rozszerzonych i wykonywanie kopii archiwizacyjnych Pulpitu.

Moduł 1 /*--------------------------------------------------------*/ classname = 'WPLaunchPad' location = '<MY_LAUNCHPADS_FOLDER>' base_setup =, 'CCVIEW=NO;' ||, 'HELPPANEL=#2253;' ||, 'LPACTIONSTYLE=OFF;' ||, 'LPCLOSEDRAWER=YES;' ||, 'LPDRAWERTEXT=NO;' ||, 'LPFLOAT=NO;' ||, 'LPHIDECTRLS=YES;' ||, 'LPSMALLICONS=NO;' ||, 'LPTEXT=NO;' ||, 'LPVERTICAL=NO;' ||, 'NOPRINT=YES;' do i=1 to 10 setup = 'ICONFILE='icpath || icfile.i';' ||, base_setup ||, 'FPOBJECTS=<WP_SHRED>;' ||, 'OBJECTID=<My_LaunchPad_'title.i>;' res=SysCreateObject(classname, title.i, location, setup,, option) If res <> 1 Then signal CleanUp end /*--------------------------------------------------------*/Dopiero w drugim module nadawane są wyrzutniom nowe obiekty. W opisanym przykładzie wyrzutni o identyfikatorze <My_LaunchPad_Editors>, przeznaczonej dla edytorów (wyrzutnie są pogrupowane tematycznie), nadawane są obiekty edytorów i innych programów z nimi stowarzyszonych. MyLaunchPad_05 nie jest niczym innym, jak zmienną zawierającą zbiór ustawień nadawanych wyrzutni <My_LaunchPad_Editors>. Stąd polecenie SysSetObjectData (Ustaw Dane Obiektu), a nie SysCreateObject (Utwórz Obiekt). Proszę zwrócić uwagę na bardzo częste wykorzystywanie identyfikatorów obiektów (napisy zawarte pomiędzy nawiasami <>). Na przykład <WP_EPM> oznacza edytor Enhanced Editor (szerzej znany jako EPM). <WP_SEEK> to z kolei identyfikator programu do wyszukiwania i przeszukiwania plików (Seek and Scan Files, fizycznie pmseek.exe). Itd.
Moduł 2 /*--------------------------------------------------------*/ MyLaunchPad_05 =, 'DRAWEROBJECTS=00,' ||, '<WP_EPM>,' ||, '<WP_SYSED>,' ||, '<WP_SEEK>,' ||, '<WP_TEMPS>,' ||, '<MY_MANYCLIP>,' ||, '<MY_PMDIFF>,' ||, '<MY_FONTFOLDER>,' ||, '<MY_GFC>,' ||, '<MY_MAKEIPF>,' ||, '<MY_HEXEDIT>,' ||, ';' /*------------------------*/ call SysSetObjectData <My_LaunchPad_Editors>', MyLaunchPad_05 /*--------------------------------------------------------*/Trzeci z przykładów pokazuje uniwersalny moduł tworzący na Pulpicie odnośnik do programu, tutaj programu antywirusowego OS2SCAN.EXE firmy McAfee, nie stowarzyszonego z żadną z wyrzutni (tak też można ;-D ). Dodam tylko, że po wykonaniu programu okno pozostaje na Pulpicie nie zamknięte, po to by móc odczytać rezultat jego działania. Odpowiada za to parametr NOAUTOCLOSE=YES. Natomiast parametr /ADL znajdujący się w linii PARAMETERS służy do poinformowania programu OS2SCAN.EXE aby przeszukał wszystkie dyski twarde w systemie.
Moduł 3 /*--------------------------------------------------------*/ title = 'OS2 Virus Scan' setup = 'EXENAME=E:\TOOLS\MCAFEE\OS2SCAN.EXE;' ||, 'STARTUPDIR=E:\TOOLS\MCAFEE;' ||, 'PARAMETERS=/ADL;' ||, 'PROGTYPE=WINDOWABLEVIO;' ||, 'MAXIMIZED=YES;' ||, 'NOAUTOCLOSE=YES;' ||, 'OBJECTID=<MY_MCAFEE>;' ||, 'ICONFILE='icpath || icfile.15';' res = SysCreateObject(classname, title, location, setup,, option) If res <> 1 Then signal CleanUp /*--------------------------------------------------------*/
(....) STRINGTABLE REPLACEMODE BEGIN "PM_InstallObject" "Nowhere;WPFolder;?:\" "OBJECTID=<WP_NOWHERE>" "PM_InstallObject" "Information;WPFolder;<WP_DESKTOP>;UPDATE" "HELPPANEL=13092;ICONRESOURCE=60 PMWP;ICONPOS=8 52; ICONVIEWPOS=10 30 69 50;OBJECTID=<WP_INFO>" "PM_InstallObject" "OS/2 System;WPFolder;<WP_DESKTOP>;UPDATE" "HELPPANEL=4002;NODELETE=YES;ICONRESOURCE=61 PMWP; ICONNRESOURCE=1,35,PMWP;ICONPOS=8 65; ICONVIEWPOS=18 45 70 38;OBJECTID=<WP_OS2SYS>" "PM_InstallObject" "Productivity;WPFolder;<WP_OS2SYS>" "HELPPANEL=13090;OBJECTID=<WP_TOOLS>" "PM_InstallObject" "View;WPProgram;<WP_NOWHERE>;UPDATE" "EXENAME=?:\OS2\VIEW.EXE;ASSOCFILTER=*.INF;NOTVISIBLE=YES; OBJECTID=<WP_VIEWINF>" "PM_InstallObject" "Templates;WPTemplates;<WP_DESKTOP>" "HELPPANEL=15680;NODELETE=YES;ICONPOS=8 8;OBJECTID=<WP_TEMPS>" "PM_InstallObject" "Minimized^Window Viewer;WPMinWinViewer; <WP_OS2SYS>" "ALWAYSSORT=YES;OBJECTID=<WP_VIEWER>" "PM_InstallObject" "Shredder;WPShredder;<WP_OS2SYS>" "OBJECTID=<WP_SHRED>" (....)Są w nim takie same polcenia jakie stosujemy do obsługi obiektów w języku REXX. Przeanalizujmy z naszego fragmentu np. linię 3 od góry, po słowie BEGIN, polecenie utworzenia folderu OS/2 System.
"PM_InstallObject" - polecnie tworzenia obiektu, "OS/2 System; - nazwa nowego obiektu WPFolder; - przynależność do klasy (jest folderem) <WP_DESKTOP>; - identyfikator obiektu przyjmującego nowy folder, tutaj - Pulpit UPDATE" - polecenie w razie natrafienia na taki obiekt "HELPPANEL=4002; - numer panelu pomocy NODELETE=YES; - nie można go usunąć (proszę sprawdzić!) ICONRESOURCE=61 PMWP; - ikona folderu zamkniętego i jej numer w bibliotece PMWP.DLL ICONNRESOURCE=1,35,PMWP; - ikona folderu otwartego i jej numer w bibliotece PMWP.DLL ICONPOS=8 65; - miejsce ikony na Pulpicie x=8%, y=65% wymiarów ekranu ICONVIEWPOS=18 45 70 383 - 18% ekranu z lewa, 45% ekranu od dołu, szer.okna 70% szer.ekranu, wys. okna = 38% całkowitej wysokośc) ekranu OBJECTID=<WP_OS2SYS>" - identyfikator tego folderuPodobnie tworzy się odnośniki do programów. Rozpatrzmy przykład gry Mahjongg (pogrupowane zgodnie z cudzysłowem):
"PM_InstallObject" "Mahjongg; - nazwa obiektu (napis pod ikoną) WPProgram; - klasa obiektu <MAH_FOLDER>; - miejsce przeznaczenia (ten folder został już wcześniej utworzony, stąd jego identyfikator!) UPDATE" - popraw gdyby obiekt istniał "EXENAME=?:\OS2\APPS\MAHJONGG.EXE; - nazwa pliku programu wraz ze ścieżką PROGTYPE=PM; - typ programu PM = Presentation Manager ASSOCFILTER=*.MAH; - skojarzone z nim pliki (filtr) ICONFILE=\OS2\APPS\MAHJONGG.ICO; - plik ikony nowego obiektu STARTUPDIR=\OS2\APPS; - katalog bieżący podczas uruchomienia HELPPANEL=32219; - numer panelu pomocy OBJECTID=<MAH_EXE>" - identyfikator obiektuPrzeglądając plik INI.RC zauważymy, że nie wszystkie obiekty zawierają panele pomocy czy inne szczegółowe parametry. Pamiętajmy tylko o tym, by użycie jakiegoś identyfikatora obiektu <...>, było poprzedzone jego utworzeniem. Przed przystąpieniem do eksperymentów powinniśmy wykonać kopię Pulpitu, korzystając z jakiegoś opisanego wcześniej programu. Następnie wykonać kopię pliku INI.RC, np. INI.OLD. Dopiero potem można wprowadzić swoje dane do INI.RC i wykonać procedurę ratunkową, korzystającą z pliku MAKEINI.EXE i pliku INI.RC (opis w Podręczniku Użytkownika na str. 210, podrozdział Recovering the User INI File).
| <-Powrót |