Google+ Followers

čtvrtek 13. dubna 2017

Příliš dlouhé cesty

Při instalaci RAD Studia, Delphi nebo C++Builderu se můžete setkat s chybovým hlášením "Maximum Path Length Limitation". Překročení maximální délky proměnné PATH bývá zpravidla způsobeno větším počtem instalovaných aplikací. Už samo RAD Studio, Android SDK, Windows SDK a doplňkové komponenty z maximálního limitu dokáží ukrojit notnou dávku :-).

Chyba v PATH

Problém se také často objevuje při přechodu na vyšší verzi RAD Studia. Standardní odinstalace bohužel nepotřebné záznamy z PATH neodstraňuje, a tak proměnná postupně bytní:

Proměnná PATH před úpravou

Řešení

1) Odstranění nepotřebných záznamů
2) Nahrazení opakujících se sekvencí proměnnou - Cesty k souborům, které RAD Studio pro svůj běh využívá se liší až v poslední části textového řetězce. Opakující se část je tak možné jednoduše nahradit pomocnou proměnnou. Například tedy:

Domovská složka RAD Studia „C:\Program Files (x86) \Embarcadero\Studio\19.0“ = RX
Uživatelská složka „C:\Users\Public\Documents\ Embarcadero\Studio\19.0“ = RXU

Přidání pomocné proměnné

Výsledný obsah proměnné PATH tak může vypadat následovně:

Proměnná PATH po úpravě

3) Navýšení limitu pro proměnnou PATH - Windows 10 (ve verzi Anniversary Update a novějších) umožňuje povolení „dlouhých cest“ a definovat proměnnou PATH delší než 260 znaků. Ale pozor: aplikace typu Win32, které nemají ve svém manifestu nastaveno „longPathAware“ na „true“ pak nemusí být schopny cesty z proměnné PATH načíst.


Povolení dlouhých cest


Kde se PATH nastavuje?

  • Ve Windows 7: Počítač->Vlastnosti->Upřesnit nastavení systému->Upřesnit->Proměnné prostředí
  • Ve Windows 10: Klikněte pravým tlačítkem myši na ikonu Windows a z nabídky vyberte „System“. V okně, které se otevře, zvolte „Upřesnit nastavení systému“. Ve vlastnostech systému pak klikněte na tlačítko „Proměnné prostředí“. 
Nastavení PATH ve Windows 10

O proměnné PATH

Windows API definuje umožňuje nastavit maximální délku pro proměnnou PATH parametrem MAX_PATH. Z důvodu zpětné kompatibility pro Win32 aplikace je nastavena na 260 znaků. Délka 260 znaků je dána strukturou proměnné. Jedná se o písmenné označení úložiště, dvojtečku, zpětné lomítko, 256 znaků dlouhý řetězec a ukončovací "null" znak použité kódové stránky. Jedná se tedy 1+2+256+1=260 znaků, a to je vzhledem k možnosti používat dlouhá jména složek a souborů limit relativně snadno překročitelný.