GeoGet

Complete geocaching solutions

User Tools

Site Tools


user:skript:gipmaker

Gip Maker

Plugin slouží k automatizaci vytváření instalačních balíčků. Vše řídí definiční soubor, v kterém je určeno co všechno má který instalační balíček obsahovat. Ukázkový soubor definiční soubor je součástí instalace.

Už se vám někdy stalo, že jste do instalačního balíčku omylem dali soubor, který tam nepatří, nebo tam naopak nedali důležitý soubor? Mě se to stalo několikrát a vždy to přineslo potíže uživatelům. Předsevzetí, že budu pečlivě kontrolovat každý instalační soubor, který vytvořím, mi vydrželo vždy tak tři-čtyři instalace. Tak jsem se rozhodl s tím něco udělat. Teď už se mi to nestane. Jednou připravím definici a mám vystaráno.

flag-english.jpg

Autor

Pokud se Vám doplněk líbí, kliknutím na tlačítko Donate můžete přispět na jeho vývoj.

Nekamarádíte se s PayPalem? Napište mi email a domluvíme se na jiném způsobu, třeba převodu na účet.

Automatická instalace

Nainstalovat do GeoGetu
Instalaci doplňku spustíte kliknutím na tlačítko vlevo. Následně budete v prostředí GeoGetu provedeni instalačním procesem. Pro zajištění této funkce je třeba mít na počítači již nainstalovaný a spuštěný program GeoGet .
Kliknuli jste na tlačítko a nic se nestalo? Máte opravdu spuštěný GeoGet ? Je to potřeba! Nebo možná máte zastaralý webový prohlížeč. Nevadí, instalaci doplňku můžete jednoduše vyvolat i prostým zkopírováním (označit text → klik pravým tlačítkem → kopírovat) následujícího odkazu do schránky: https://www.geoget.cz/doku.php/user:skript:gipmaker?download

Diskuze

Diskuze o tomto skriptu je k dispozici na Geocaching.cz.

Popis funkce

Podle souboru GipMaker.ini vytváří plugin příslušný gip soubor následujícím postupem:

  • plugin nabídne uživateli seznam připravených šablon (sekcí) v GipMaker.ini, podle nichž může vytvářet instalační balíčky (*.gip soubory), uživatel si z nabídky vybere a spustí vytvoření instalačního balíčku
  • plugin pak vymaže obsah pracovního adresáře
  • vytvoří v něm adresáře jménem pluginu podle proměnné DIR_TARGET v příslušné sekci GipMaker.ini; mohou být vytvořeny i vnořené adresáře, např. lib\RelToAbsPath
  • ze zadaného meta.ini (proměnná META_INI_FILE) získá verzi a optá se uživatele, zda ji ponechat; pokud ji uživatel změní, zapíše novou verzi do zdrojového meta.ini
  • nakopíruje do pracovního adresáře všechny potřebné soubory
  • zkontroluje existenci jediného *.meta.ini
  • v zadaném souboru (proměnná REMOVE_DEBUGGER_FROM) zapoznámkuje příkaz pro definici konstanty řídící podmíněný překlad ladících informací
  • v cílovém adresáři (DIR_GIP) vytvoří *.gip zazipováním obsahu pracovního adresáře, jméno bude doplněno o příslušnou verzi pluginu

Plugin provádí příkazy v následujícím pořadí:

  1. kopírování souborů do pracovního adresáře
  2. kopírování adresářů do pracovního adresáře
  3. mazání souborů z pracovního adresáře
  4. zazipování souborů v pracovním adresáři do instalačního balíčku

Ukázkový soubor GipMaker.ini_demo je součástí instalace.

Konfigurace, popis souboru GipMaker.ini

GipMaker.ini je hlavní soubor, který řídí vytváření instalačního balíčku. Každý vytvářený balíček má vlastní sekci, jméno sekce je v hranatých závorkách tak, jak je v INI souborech běžné. Na příklad

[GipMaker]

Všechna jména sekcí jsou ze souboru načtena a nabídnuta uživateli v prvním kroku k zpracování. Další pak závisí na obsahu sekce, použitých proměnných. Jejich seznam je zde (v pořadí, jak je plugin vykonává):

Proměnná, příkaz Význam
DIR_SOURCE zdrojový adresář, odkud jsou načítány soubory (cesta relativní vůči GEOGET_SCRIPTDIR)
DIR_TARGET cílový adresář, do kterého bude prováděna automatická instalace balíčku (cesta relativní vůči GEOGET_SCRIPTDIR)
DIR_GIP cílový adresář, do kterého bude zkopírován vytvořený instalační balíček (cesta relativní vůči GEOGET_DATADIR)
META_INI_FILE soubor, který řídí instalaci instalačního balíčku (cesta relativní vůči DIR_SOURCE)
REMOVE_DEBUGGER_FROM definuje soubor, v kterém bude hledán příkaz pro vložení ladicí knihovny, provedením tohoto příkazu dojde k zapoznámkování řádku. Toto bude provedeno jen v souboru zařazeného do instalačního balíčku, zdrojový soubor zůstane nedotčen. ({$define DEBUG} - obecný parametr, {$define DEBUG_HELPER} - knihovna LittleDebugHelper, {$define DEBUG_INFO} - knihovna DebigInfo, {$define PROFILE} - knihovna Profile)
PRECOPY_MESSAGE_<n> definuje text zprávy zobrazené před zahájením kopírování souborů. Příkladem může být Nezapomeňte vymazat přístupová hesla ze souboru …
PRECOPY_RUN_<n> definuje soubor (a případné parametry), který bude spuštěn před zahájením kopírování do pracovního adresáře. To se hodí třeba pro spuštění dávky, která vytváří jazykové mutace pluginu
COPY_FILE_<n> kopírování souboru, cesta je vždy relativní vůči DIR_SOURCE
COPY_DIR_<n> kopírování adresáře včetně všech podadresářů, cesta je vždy relativní vůči DIR_SOURCE
DEL_FILE_<n> z pracovního adresáře vymaže soubor. To je vhodné např. při zkopírování mnoha souborů v adresáři, kdy jeden soubor z adresáře nemá v instalačním balíčku být. Cesta je relativní vůči DIR_SOURCE, tedy jakoby byl soubor kopírován do pracovního adresáře
DEL_DIR_<n> z pracovního adresáře vymaže zadaný adresář. To je vhodné např. při zkopírování mnoha souborů v adresáři, kdy jeden podadresář v zkopírovaném adresáři nemá v instalačním balíčku být. Cesta je relativní vůči DIR_SOURCE
PREZIP_RUN_<n> definuje soubor (a případné parametry), který bude spuštěn před vytvořením vlastního zazipovaného balíčku
PREZIP_MESSAGE_<n> definuje text zprávy zobrazené před vytvořením vlastního zazipovaného balíčku
PRE_POSTZIPRUN_MESSAGE_<n> definuje text zprávy zobrazené po zazipování, ale před spuštěním příkazů v POSTZIP_RUN_<n>
POSTZIP_RUN_<n> definuje soubor (a případné parametry), který bude spuštěn po vytvoření zazipovaného balíčku
POSTZIP_MESSAGE_<n> definuje text zprávy zobrazené po vytvoření instalačního balíčku a spuštění všech příkazů, tedy něco jako “Všechno je hotovo”

_<n> je vždy pořadové číslo jak budou příkazy stejného typu zpracovány. Každý typ má své vlastní číslování počínaje _1.

Každé zobrazení zprávy končí otázkou, zda pokračovat. Je tedy např. možné po vytvoření zazipovaného balíčku příkazem PRE_POSTZIPRUN_MESSAGE zobrazit dotaz ještě před tím, než bude spuštěn příkaz POSTZIP_RUN, který tak je možné přeskočit (např. závěrečné zkopírování vytvořeného *.gip souboru na FTP server.

Příkazy typu *_RUN jsou prováděny pomocí příkazu RunShell, takže je možné spouštět jakýkoli soubor, který je obsluhován systémem (*.exe, *_*.bat, *.html, ). Cesty jsou absolutní nebo relativní vůči GEOGET_DATADIR, je možné používat i proměnné %GG_DATADIR%, %GG_SCRIPTDIR%, %GG_PROGPATH% a případně v systému definované proměnné.

Verze vytvářeného pluginu

V řídícím INI souboru je příkaz META_INI_FILE, který definuje meta.ini soubor. Tento soubor obsahuje verzi pluginu a GipMaker načte v něm uvedenou verzi předloží ji uživateli k úpravě. Upravená verze je zapsána do zdrojového souboru, do souboru, který bude součástí instalačního balíčku, i do jména vytvářeného balíčku (gip souboru). Tento postup má výhodu v tom, že údržba verze je jednotná a jednoduchá. Při správném použití není třeba nikde v ostatních souborech pluginu číslo verze používat a tedy ani měnit. Já používám v každém pluginu relativně univerzální funkci, která mi vrátí číslo verze pluginu zjištěné právě z meta.ini souboru:

function GetPluginVersion:string;
begin
  Result:=GeoGetPackageVersion(ReplaceString(GEOGET_SCRIPTFULLNAME,'.ggp.pas','.meta.ini'));
end;

Místo použití konstanty pak všude používám volání této funkce a nemusím v různých částech zdrojového kódu upravovat další texty či definice konstant.

Potlačení ladicích informací

Příkaz REMOVE_DEBUGGER_FROM kromě funkce popsané v tabulce příkazů plní ještě jakousi vedlejší funkci, resp. ona vedlejší funkce je vedlejším efektem funkce popsané. Jde o to, že GeoGet udržuje datum a čas změny hlavního souboru pluginu (*.ggp.pas), který by měl obsahovat funkce vracející text pro menu a pro hint (tooltip). Může se stát, že úpravy pluginu vedoucí k vydání nové verze jsou takového charakteru, že nevyžadují změnu tohoto hlavního souboru (změna formuláře, změna překladových textů či změna v jiných zdrojových souborech). Pokud je součástí textů pro menu nebo pro hint i verze pluginu, GeoGet by změnu nezobrazil. Jelikož použitím příkazu REMOVE_DEBUGGER_FROM dojde k aktualizaci data a času hlavního souboru, bude GeoGet nucen si aktualizovat text vracený těmito funkcemi.

Ukázky

Stažení

Stáhnout aktuální verzi: gipmaker-1.0.1.gip

Seznam dostupných verzí

FilenameFilesizeLast modified
gipmaker-1.0.1.gip7.7 KiB2012/09/17 00:00

Seznam změn

1.0.1 (17.9.2012)

  • změna: vypuštěno zpětné lomítko za GEOGET_PROGPATH
  • oprava: chybné nastavení nové verze vytvářeného pluginu

1.0.0 (3.9.2012, staženo: 3 x)

  • Úvodní verze
user/skript/gipmaker.txt · Last modified: 2021/04/18 11:10 by mikrom