Autor Téma: D XE2 - Runtime Packages  (Přečteno 601 krát)

Offline leonell

  • Mladík
  • **
  • Příspěvků: 99
  • Karma: 3
D XE2 - Runtime Packages
« kdy: 10-01-2019, 15:18:20 »
Ahoj,
následující se týká Delphi XE2 Professional.
Léta používám "fat" exe build. Teď potřebuji začlenit jednu komerční knihovnu, která se distribuuje jen jako BPL.
Mým cílem, který se mi nedaří dosáhnout, je distribuovat s mojí EXE dát jen a pouze ten jeden BPL, aniž bych k tomu musel dávat rtl160.bpl, vcl160.bpl a dalších hafo bpl souborů.
Naivně jsem si myslel, že když zaškrtnu "Link with runtime packages" a v "Runtime Packages" nechám tam jenom onu koupenou BPL, tak že to vše ostatní přilinkuje do EXE. Ať dělám co dělám, tak se mi nedaří dosáhnout kýženého výsledku. On to asi i přilinkuje, protože EXE soubor je podstatně větší než byl když v "RuntimePackages" byly desítky balíků, ale na "čistém" počítači mně stejně hned po spuštění napíše, že nemá "rtl160.bpl".
Jde dosáhnout toho co chci nebo to mám zrovna zabalit a distribuovat celou sadu BPL?

Díky.
L.

Offline KarelHorky

  • Plnoletý
  • ***
  • Příspěvků: 184
  • Karma: 8
    • Verze Delphi: 7, XE6
Re:D XE2 - Runtime Packages
« Odpověď #1 kdy: 11-01-2019, 08:32:31 »
Neposkytuje dodavatel knihovny nějaký návod, jak knihovnu začlenit do programu? Měl by také poskytnout zdroje. Pak by šla vytvořit přinejhorším klasická DLL knihovna, kterou jde dynamicky natahovat do velkého EXE. Nejlépe je začlenit zdroje do projektu a zkompilovat jeden EXE.
BPL runtime knihovny jsme používali dříve, ale teď již máme zase "všechno v jednom". Rozhodně bych se k jednotlivým BPL již nevracel.
K.

Offline leonell

  • Mladík
  • **
  • Příspěvků: 99
  • Karma: 3
Re:D XE2 - Runtime Packages
« Odpověď #2 kdy: 11-01-2019, 09:21:09 »
Mně se taky do BPLek nechce, už proto že je tam deset staticky linkovaných služeb a dát tam jednu "runtimovou" je jaksi antikoncepční.
Jinak s autorem té knihovny jsme se teď ráno domluvili že po nákupu, když budeme chtít, dodá DCU, čímž je asi problém vyřešen.
Tedy primární problém, stejně by mě zajímalo, proč nejde říci co má linker do EXE linkovat staticky a co dynamicky. Nebo přesněji co dělám špatně.
Každopádně děkuji za odpověď a přeji hezký den,
L.

Offline JaroB

  • Guru
  • *****
  • Příspěvků: 942
  • Karma: 26
    • Verze Delphi: XE8, Seattle
Re:D XE2 - Runtime Packages
« Odpověď #3 kdy: 11-01-2019, 09:21:12 »
Jestliže se zaškrtnou balíčky v projektu, tak se aplikace rozpadne na vlastní exe a hafo bpl balíků a ty od embt tam prostě být musí. Je sice možné vyjmout některé vlastní balíky ze seznamu, čímž se přilinkují zpět do exe, ale úspora to není. Naposledy jsem toto použil v Delphi 3 a od té doby to už neriskoval (a velikost bpl se taky podstatně zvětšila).
Takže shrnuto a podtrženo, já zůstal u monolitického exe (s tu a tam pár DLL pro plug-ins).
Ale asi se to vyplatí, pokud distribuujete v jednom balíku třeba dvacet exe :)

Offline leonell

  • Mladík
  • **
  • Příspěvků: 99
  • Karma: 3
Re:D XE2 - Runtime Packages
« Odpověď #4 kdy: 11-01-2019, 09:24:16 »
Excellent
Rated 1 time
Copak to distribuujeme (dvacet exe) ale já mám lepší pocit, když si odpovědnost nese EXE v sobě. Nechci mít ještě problémy, že čtrnáctý EXE přejde na nový Fastreport (a nové BPL) a první až třináctý EXE přestanou fungovat :)

Offline JaroB

  • Guru
  • *****
  • Příspěvků: 942
  • Karma: 26
    • Verze Delphi: XE8, Seattle
Re:D XE2 - Runtime Packages
« Odpověď #5 kdy: 11-01-2019, 09:51:33 »
No, když jsem to dělal já, tak jsem musel stále kontrolovat versioninfo všech modulů (v .net to byla taky nezbytnost) po spuštění. Ale já používal spíš plug-in systém, i když u dll je verzování stejné jako u bpl.

Každopádně balíky se vyměňovaly vždycky všechny :)

Offline Radek Červinka

  • Administrátoři
  • Padawan
  • *****
  • Příspěvků: 2277
  • Karma: 101
    • Verze Delphi: D5,D2007, DXE, DXE2 + 2 poslední (Tokyo)
    • O Delphi v češtině
Re:D XE2 - Runtime Packages
« Odpověď #6 kdy: 11-01-2019, 14:23:08 »
Mně se taky do BPLek nechce, už proto že je tam deset staticky linkovaných služeb a dát tam jednu "runtimovou" je jaksi antikoncepční.
Jinak s autorem té knihovny jsme se teď ráno domluvili že po nákupu, když budeme chtít, dodá DCU, čímž je asi problém vyřešen.
Tedy primární problém, stejně by mě zajímalo, proč nejde říci co má linker do EXE linkovat staticky a co dynamicky. Nebo přesněji co dělám špatně.
Každopádně děkuji za odpověď a přeji hezký den,
L.

Ja to chapu tak, ze EXE zavislost na rtl160.bpl nema, ale ten balicek je asi prelozen s zavislosti na rtl160.bpl, ale to tak spise tipuji. Zkus si v exe treba pres total commander vyhledat rtl160.bpl a pak to same zkus v tom bpl. Podle mne ho najdes jen v tom bpl.
Embarcadero MVP - Czech republic

Offline Radek Červinka

  • Administrátoři
  • Padawan
  • *****
  • Příspěvků: 2277
  • Karma: 101
    • Verze Delphi: D5,D2007, DXE, DXE2 + 2 poslední (Tokyo)
    • O Delphi v češtině
Re:D XE2 - Runtime Packages
« Odpověď #7 kdy: 11-01-2019, 14:26:19 »
Copak to distribuujeme (dvacet exe) ale já mám lepší pocit, když si odpovědnost nese EXE v sobě. Nechci mít ještě problémy, že čtrnáctý EXE přejde na nový Fastreport (a nové BPL) a první až třináctý EXE přestanou fungovat :)


To je přece nesmysl. Pokud se mění binární kompatibilita, tak se mění i název balíčku, tj. prvních 13 EXE zůstane závislé na balíčku A, kdežto 14 bude záviset na balíčku A.1.bpl

Embarcadero MVP - Czech republic

Offline leonell

  • Mladík
  • **
  • Příspěvků: 99
  • Karma: 3
Re:D XE2 - Runtime Packages
« Odpověď #8 kdy: 11-01-2019, 14:34:15 »
Ad závislost toho jediného balíčku - Bingo!
Je tam závislost na rtl160.bpl, ale i Indy. Proto to po mne chtělo spoustu knihoven jenom ne informixové (a já mylně předpokládal, že je má někde v cestě proto je to nechce).
Díky za objasnění.


Ad verzování BPL - nevím, ale co se kouknu tak třeba zrovna ta knihovna o níž je řeč má název SimplexOpcUa.bpl a žádnou verzi v názvu nemá, čili aktualizace tento BPL přepíše. A i ostatní knihovny co znám, mají většinou v názvu jen 16 nebo 160, což ale není jejich verze ale znamení že jsou pro XE2.
Takže si ten popsaný problém dovedu představit. Ale zkušenost s tím nemám, jen obrazotvornost :)

L.

Offline JaroB

  • Guru
  • *****
  • Příspěvků: 942
  • Karma: 26
    • Verze Delphi: XE8, Seattle
Re:D XE2 - Runtime Packages
« Odpověď #9 kdy: 11-01-2019, 14:46:44 »
u externích balíků nemusela být verze zrovna v názvu ale mohla být uvnitř v připojeném verzioninfo (jako u normálního dll)

Offline leonell

  • Mladík
  • **
  • Příspěvků: 99
  • Karma: 3
Re:D XE2 - Runtime Packages
« Odpověď #10 kdy: 11-01-2019, 14:54:40 »
Jasný, to jo. Pokud je ten "adresář" pod správou více skupin a tyto nemají jasná pravidla (v podstatě - změna BPL = překlad a deploy všeho, s novými BPL) tak problém IMHO může nastat.
Toto prostě u fat-EXE nenastane.

Offline JaroB

  • Guru
  • *****
  • Příspěvků: 942
  • Karma: 26
    • Verze Delphi: XE8, Seattle
Re:D XE2 - Runtime Packages
« Odpověď #11 kdy: 11-01-2019, 15:06:06 »
No, právě proto si má každá aplikace "svoje" dll/bpl okontrolovat na správné/povolené verze hned po spuštění (zvlášť u sdílených), a pokud tomu pravidlu nějaká knihovna nevyhovuje, tak aplikaci zastavit. Je to uživatelsky tvrdé, ale je to lepší než něco zbořit.