GeoGet

Complete geocaching solutions

User Tools

Site Tools


user:skript:mtptoollib

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
Last revisionBoth sides next revision
user:skript:mtptoollib [2019/01/11 13:26] – [Automatická instalace] gorduser:skript:mtptoollib [2019/06/15 16:02] – [Známé potíže] gord
Line 1: Line 1:
 ====== MtpToolLib ====== ====== MtpToolLib ======
-Knihovna zajišťuje podporu pro přístup k MTP zařízením z pluginů Geogetu.+Knihovna zajišťuje podporu pro přístup k MTP zařízením z pluginů GeoGetu.
  
 ===== Autor ===== ===== Autor =====
Line 125: Line 125:
   * pokud najde více zařízení podle požadavku ''sType'', nechá uživatele vybrat jedno z nich a vrací to vybrané   * pokud najde více zařízení podle požadavku ''sType'', nechá uživatele vybrat jedno z nich a vrací to vybrané
   * ''sType'' je požadavek, co má funkce hledat   * ''sType'' je požadavek, co má funkce hledat
-    * GARMIN - hledá jen GPS garmin připojenou jako standardní disk+    * GARMIN - hledá jen GPS Garmin připojenou jako standardní disk
     * ADRAKE_INST - hledá zařízení (disk i MTP) s instalovaným a:Drake a vrací cestu k instalovaným souborům (''aDrake.ini'')     * ADRAKE_INST - hledá zařízení (disk i MTP) s instalovaným a:Drake a vrací cestu k instalovaným souborům (''aDrake.ini'')
     * ADRAKE_DB - hledá zařízení (disk i MTP) s instalovaným a:Drake a vrací cestu a jméno databázového souboru, který aplikace používá     * ADRAKE_DB - hledá zařízení (disk i MTP) s instalovaným a:Drake a vrací cestu a jméno databázového souboru, který aplikace používá
Line 133: Line 133:
  
   * vrácený string obsahuje na jméno zařízení, dvojtečku, cestu a v hranatých závorkách typ, např.:   * vrácený string obsahuje na jméno zařízení, dvojtečku, cestu a v hranatých závorkách typ, např.:
-    * ''K: [GARMIN]'' - GPS garmin připojená přes USB jako Mass Storage+    * ''K: [GARMIN]'' - GPS Garmin připojená přes USB jako Mass Storage
     * ''K:\adrake [ADRAKE_INST]'' - telefon se starším Androidem připojený přes USB jako Mass Storage, a:Drake instalovaný v rootu (telefonu nebo karty, to se nepozná)     * ''K:\adrake [ADRAKE_INST]'' - telefon se starším Androidem připojený přes USB jako Mass Storage, a:Drake instalovaný v rootu (telefonu nebo karty, to se nepozná)
     * ''K:\Tmp\geoget.db3 [ADRAKE_DB]'' - telefon se starším Androidem připojený přes USB, instalovaný a:Drake používá tento databázový soubor     * ''K:\Tmp\geoget.db3 [ADRAKE_DB]'' - telefon se starším Androidem připojený přes USB, instalovaný a:Drake používá tento databázový soubor
Line 228: Line 228:
     * ''ALL_APPS'' - hledá všechny výše jmenované možnosti a ve vráceném stringu je na každém řádku vždy typ a nalezená cesta     * ''ALL_APPS'' - hledá všechny výše jmenované možnosti a ve vráceném stringu je na každém řádku vždy typ a nalezená cesta
   * druhý parametr umožňuje zobrazit uživateli nalezený seznam a nechat jej vybrat požadovanou volbu, která je pak funkcí vrácena   * druhý parametr umožňuje zobrazit uživateli nalezený seznam a nechat jej vybrat požadovanou volbu, která je pak funkcí vrácena
-    * při hodnotě ''false'' je uživateli výběr k volbě zobrazen jen v tom případě, že je nalezeno více požadavku odpovídajících položek (např. a:Drake na více současně připojených telefonecech a funkce nemůže ruzhodnout, který z telefonů si uživatel přeje použít) +    * při hodnotě ''false'' je uživateli výběr k volbě zobrazen jen v tom případě, že je nalezeno více požadavku odpovídajících položek (např. a:Drake na více současně připojených telefonech a funkce nemůže rozhodnout, který z telefonů si uživatel přeje použít) 
-    * při hodnotě ''true'' je výběr uživateli zobrazen vždy, i v případě, kdy by funkce rozodnout mohla, protože bylo nalezeno jen jediné zařízení+    * při hodnotě ''true'' je výběr uživateli zobrazen vždy, i v případě, kdy by funkce rozhodnout mohla, protože bylo nalezeno jen jediné zařízení
 ===== Ukázka použití knihovny ===== ===== Ukázka použití knihovny =====
  
Line 284: Line 284:
  
 ===== Známé potíže ===== ===== Známé potíže =====
-  * **zaseknutí** +* **Could not call proc** 
-    * občas se "MTP" na chvíli (třeba i minutu) zasekne a jakoby nic nedělá, ale pak se normálně rozjede. Podobné chování ale pozoruji i při propojeni přes Total Commander nebo i Windowsím průzkumníkem. Tak to asi budu chápat jako vlastnost +  * pokud pri spuštění napíše GeoGet něco takovéhoto:  
-    * smazání souboru někdy trvá neúměrně dlouho, netuším proč, možná to souvisí s předchozím bodem, možná je to proto, že se prověřuje, zda soubor nepoužívá nějaká aplikace a přes MTP driver to trvá dlouho (ale pak je divné, proč je to někdy rychle) +<code> 
-  * **jméno souboru nebo adresáře** +[Script Runtime Error]: GgDrake.ggp.pas 
-    * zdá se, že žádný soubor v MTP nemá nastaven příznak umožnující přepis atributů souboru +Could not call proc 
-    * proto se <wrap hi>nepodaří</wrap> nikdy soubor <wrap hi>přejmenovat</wrap> (ale smazat jej většinou možné je!) +Routine: BUTREFRESHONCLICK''</code> 
-    * proto při zápisu souboru do MTP zařízení, pokud soubor existuje, <wrap hi>není možné soubor jednoduše přepsat</wrap>, ale soubor stejného jména je napřed vymazán a pak zkopírován jako nový soubor (má tedy jiné ID než původní soubor) +  * může být problém v chybějících systémových knihovnách. Prosím zkuste doinstalovat 
-    * ačkoli telefon vrací vždy všechny texty v ''unicode'' kódování, nastane pravděpodobně problém v případě, kdy Windows a telefon nebudou obsahovat stejnou lokalizaci nebo znakovou sadu. Např. v případě, kdy Windows budou anglické, težko knihovně sdělíte, že potřebujete soubor z/do ''Interní úložiště'', jak je v telefonu s českou lokalizací nazvané paměť v telefonu mimo výměnnou SD kartu +    * [[https://www.microsoft.com/en-us/download/details.aspx?id=8328|Microsoft Visual C++ 2010 SP1 Redistributable Package (x86)]] případně 
-  * **datum, čas** +    * [[https://www.microsoft.com/en-us/download/details.aspx?id=13523|Microsoft Visual C++ 2010 SP1 Redistributable Package (x64)]] 
-    * při kopírování souborů nebo adresářů do MTP zařízení sice nastavuji datum vytvoření a aktualizace souboru nebo adresáře, ale zdá se, že MTP driver v zařízeních některých výrobců má vlastní hlavu a vždy nastavují aktuální datum a čas bez ohledu na atributy nastavené při vytváření. Díky předcházejícímu bodu ani není možné později nastavit tato časová razítka správně a případné synchronizace souborů je přinejmenším sporná +* **zaseknutí** 
-  * **aktualizace DLL knihovny** +  * občas se "MTP" na chvíli (třeba i minutu) zasekne a jakoby nic nedělá, ale pak se normálně rozjede. Podobné chování ale pozoruji i při propojeni přes Total Commander nebo i Windowsím průzkumníkem. Tak to asi budu chápat jako vlastnost 
-    * při použití pluginu je do paměti zavedena DLL knihovna ''MtpLib.dll'', která dál používá několik systémových DLL knihoven. Po ukončení pluginu však nedojde k uvolnění systémových knihoven z paměti, proto je knihovna ''MtpLib.dll'' uzamčena proti manipulaci a <wrap hi>není tedy možné plugin aktualizovat</wrap> - knihovnu se nepodaří přepsat novou verzí. Je nutné napřed **restartovat Geoget**, tím dojde k odblokování knihovny a aktualizace pluginu proběhne správně+  * smazání souboru někdy trvá neúměrně dlouho, netuším proč, možná to souvisí s předchozím bodem, možná je to proto, že se prověřuje, zda soubor nepoužívá nějaká aplikace a přes MTP driver to trvá dlouho (ale pak je divné, proč je to někdy rychle) 
 +* **jméno souboru nebo adresáře** 
 +  * zdá se, že žádný soubor v MTP nemá nastaven příznak umožnující přepis atributů souboru 
 +  * proto se <wrap hi>nepodaří</wrap> nikdy soubor <wrap hi>přejmenovat</wrap> (ale smazat jej většinou možné je!) 
 +  * proto při zápisu souboru do MTP zařízení, pokud soubor existuje, <wrap hi>není možné soubor jednoduše přepsat</wrap>, ale soubor stejného jména je napřed vymazán a pak zkopírován jako nový soubor (má tedy jiné ID než původní soubor) 
 +  * ačkoli telefon vrací vždy všechny texty v ''unicode'' kódování, nastane pravděpodobně problém v případě, kdy Windows a telefon nebudou obsahovat stejnou lokalizaci nebo znakovou sadu. Např. v případě, kdy Windows budou anglické, težko knihovně sdělíte, že potřebujete soubor z/do ''Interní úložiště'', jak je v telefonu s českou lokalizací nazvané paměť v telefonu mimo výměnnou SD kartu 
 +* **datum, čas** 
 +  * při kopírování souborů nebo adresářů do MTP zařízení sice nastavuji datum vytvoření a aktualizace souboru nebo adresáře, ale zdá se, že MTP driver v zařízeních některých výrobců má vlastní hlavu a vždy nastavují aktuální datum a čas bez ohledu na atributy nastavené při vytváření. Díky předcházejícímu bodu ani není možné později nastavit tato časová razítka správně a případné synchronizace souborů je přinejmenším sporná 
 +* **aktualizace DLL knihovny** 
 +  * při použití pluginu je do paměti zavedena DLL knihovna ''MtpLib.dll'', která dál používá několik systémových DLL knihoven. Po ukončení pluginu však nedojde k uvolnění systémových knihoven z paměti, proto je knihovna ''MtpLib.dll'' uzamčena proti manipulaci a <wrap hi>není tedy možné plugin aktualizovat</wrap> - knihovnu se nepodaří přepsat novou verzí. Je nutné napřed **restartovat GeoGet**, tím dojde k odblokování knihovny a aktualizace pluginu proběhne správně
  
 ===== Seznam skriptů, které používají tuto knihovnu ===== ===== Seznam skriptů, které používají tuto knihovnu =====
Line 310: Line 319:
 {{filelist>mtptoollib:*.[gz]ip&style=table&tableheader=1&tableshowdate=1&sort=mtime}} {{filelist>mtptoollib:*.[gz]ip&style=table&tableheader=1&tableshowdate=1&sort=mtime}}
  
-Zde uvedená verze **Combine** je rozšířená o funkce pro MTP zařízení. Jde rovněž o betaverzi, proto není dostupná na stránce pluginu Combine, ale jen zde. Součástí instalace je ukázková dávka pro "bezpečné" zkopírování databáze do a:Drake. Při kopírování dávka vyhledá připojené zařízení s instalací a:Drake, podle jeho INI souboru najde adresář a databázi, kterou a:Drake používá, zkontroluje, zda kopírovaná databáze z GG má stejné jméno, databázi zkopíruje a vymaže žurnálový soubor.+Zde uvedená verze **Combine** je rozšířená o funkce pro MTP zařízení. Jde rovněž o betaverzi, proto není dostupná na stránce pluginu Combine, ale jen zde. Součástí instalace je ukázková dávka pro "bezpečné" zkopírování databáze do a:Drake. Při kopírování dávka vyhledá připojené zařízení s instalací a:Drake, podle jeho INI souboru najde adresář a databázi, kterou a:Drake používá, zkontroluje, zda kopírovaná databáze z GeoGetu má stejné jméno, databázi zkopíruje a vymaže žurnálový soubor.
 ===== Seznam změn ===== ===== Seznam změn =====
 ** 1.0.1 (6.4.2018) ** ** 1.0.1 (6.4.2018) **
Line 329: Line 338:
   * ''MtpCmd.exe, MtpLib.dll, TestDllUse.ggp.pas''   * ''MtpCmd.exe, MtpLib.dll, TestDllUse.ggp.pas''
     * nový: při kopírování je zobrazen postup kopírování s procenty a odhadovaným časem do konce     * nový: při kopírování je zobrazen postup kopírování s procenty a odhadovaným časem do konce
-    * změna: všechy stringy jsou ''unicode''+    * změna: všechny stringy jsou ''unicode''
     * změna: u funkčních objektů určených pro ukládání dat je doplněn výčet vlastností o jim specifické     * změna: u funkčních objektů určených pro ukládání dat je doplněn výčet vlastností o jim specifické
  
user/skript/mtptoollib.txt · Last modified: 2021/05/02 19:06 by mikrom