GeoGet

Complete geocaching solutions

User Tools

Site Tools


user:skript:gipmaker

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
user:skript:gipmaker [2012/09/04 08:19] – [Ukázky] gorduser:skript:gipmaker [2021/04/18 11:10] (current) mikrom
Line 2: Line 2:
 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. 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 instlač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člive 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.+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}}  {{:flag-english.jpg}} 
Line 17: Line 17:
  
 ===== Diskuze ===== ===== Diskuze =====
- +Diskuze o tomto skriptu je k dispozici na [[http://www.geocaching.cz/forum/viewthread.php?forum_id=20&thread_id=23936&pid=373305#post_373305|Geocaching.cz]].
-  * Diskuze o tomto skriptu je k dispozici na [[http://www.geocaching.cz/forum/viewthread.php?forum_id=20&thread_id=23936&pid=373305#post_373305|Geocaching.cz]]. +
  
 ===== Popis funkce ===== ===== Popis funkce =====
-Podle souboru GipMaker.ini vytvari plugin příslušný gip soubor nasledujícím postupem:+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 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   * plugin pak vymaže obsah pracovního adresáře
-  * vytvoří v něm adresářse 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''+  * vytvoří v něm adresář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''   * 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   * nakopíruje do pracovního adresáře všechny potřebné soubory
   * zkontroluje existenci jediného ''*.meta.ini''   * zkontroluje existenci jediného ''*.meta.ini''
-  * v zadaném souboru (proměnná ''REMOVE_DEBUGGER_FROM'') zapoznámkuje příkazz pro definci konstanty řídící podmíněný překlad ladících informací+  * 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   * 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
  
Line 39: Line 37:
   - zazipování souborů v pracovním adresáři do instalačního balíčku   - zazipování souborů v pracovním adresáři do instalačního balíčku
  
-:!: Ukázkový soubor ''GipMaker.ini_demo'' je součástí instalace.+<WRAP round info> 
 +Ukázkový soubor ''GipMaker.ini_demo'' je součástí instalace. 
 +</WRAP>
  
-===== Popis v GipMaker.ini =====+===== 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.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]'' ''[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š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á ^ Význam ^+^ Proměnná, příkaz ^ Význam ^
 | DIR_SOURCE | zdrojový adresář, odkud jsou načítány soubory (cesta relativní vůči GEOGET_SCRIPTDIR) | | 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_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) | | 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) | | 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ámkovaní řádku. Toto bude provedeno jen v souboru zařazeného do instalačního balíčku, zdrojový soubor zůstane nedotčen. (''{$define DEBUG}''obecny parametr, ''{$define DEBUG_HELPER}'' - knihovna LittleDebugHelper, ''{$define DEBUG_INFO}'' - knihovna DebigInfo, ''{$define PROFILE}'' - knihovna Profile) +| 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) |
-| FILE_COPY_<n> | kopírování souboru, cesta je vždy relativní vůči ''DIR_SOURCE''+
-| DIR_COPY_<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 namá 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 +
 | 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_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 ...// |
-| PREZIP_MESSAGE_<n> | definuje text zprávy zobrazené před vytvořením vlastního zazipovaného balíčku | 
-| POSTZIP_MESSAGE_<n> | definuje text zprávy zobrazené po vytvoření instalačního balíčku | 
 | 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 | | 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_RUN_<n> | definuje soubor (a případné parametry), který bude spuštěn před vytvořením vlastního zazipovaného balíčku |
-| POSTZIP_RUN_<n> | definuje soubor (a případné parametry), který bude spuštěn po 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 soubory zpracovány. Každý typ má své vlastní číslování počínaje **_1**.+<WRAP round important> 
 +**''_<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**. 
 +</WRAP>
  
-:!: Příkazy typu *_RUN jsou prováděny pomocí í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 ípadně v systému definované proměnné.+<WRAP round info> 
 +Každé zobrazení zprávy končí otázkou, zda pokračovat. Je tedy např. možné po vytvoření zazipovaného balíčku í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. 
 +</WRAP>
  
-===== Ukázky =====+<WRAP round info> 
 +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é. 
 +</WRAP>
  
 +==== 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:
 +
 +<code delphi>
 +function GetPluginVersion:string;
 +begin
 +  Result:=GeoGetPackageVersion(ReplaceString(GEOGET_SCRIPTFULLNAME,'.ggp.pas','.meta.ini'));
 +end;
 +</code>
 +
 +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 =====
 {{ :user:skript:gipmaker:gipmaker.png?300 |}} {{ :user:skript:gipmaker:gipmaker.png?300 |}}
  
 ===== Stažení ===== ===== Stažení =====
-<box round 95% #DEE7EC+<WRAP round download
-:!: Stáhnout aktuální verzi: ~~DOWNLOAD gipmaker-*.gip highest~~ +Stáhnout aktuální verzi: ~~DOWNLOAD gipmaker-*.gip highest~~ 
-</box>+</WRAP>
  
 ==== Seznam dostupných verzí ==== ==== Seznam dostupných verzí ====
-/* Povinná sekce */ 
 {{filelist>gipmaker:*.[zg]ip&style=table&tableheader=1&tableshowdate=1&sort=mtime}} {{filelist>gipmaker:*.[zg]ip&style=table&tableheader=1&tableshowdate=1&sort=mtime}}
- 
  
 ===== Seznam změn ===== ===== 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
  
-=== 1.0.0 (3.9.2012) ===+/*
 <hidden onHidden=":!: **Zobrazit změny ve starších verzích**" onVisible="Skrýt změny ve starších verzích"> <hidden onHidden=":!: **Zobrazit změny ve starších verzích**" onVisible="Skrýt změny ve starších verzích">
 </hidden> </hidden>
 +*/
  
 {{tag>author_Gord skript ggp uses_reltoabspath}} {{tag>author_Gord skript ggp uses_reltoabspath}}
user/skript/gipmaker.1346739561.txt.gz · Last modified: 2012/09/04 00:00 (external edit)