Witam,
Muszę ostatni pogrzebać w projekcie napisanym w Delphi XE2 i napotkałem na dziwny problem.
Ogólnie dzieje się tak w głownej apce, ale i także w stworzonej na prędce do testów.
Chodzi o to, że głowna apka jest kompilowana w Runtime Package, ale żeby było ciekawiej, to te Runtime Package też są inne i zawierają w sobie inne paczki.
Np.xxSystem.bpl zawiera w sobie rtl, vcl itd itp, xxTMS.bpl zawiera paczki TMS UI, xxSDAC zawiera paczki SDACa i tak dalej i tak dalej.
Problem jest taki, że gdy głowna aplikacja jest kompilowana to jest ok, ale gdy zostaje zbuildowana to te bplki "magicznie" zmieniają się na pliki exe. Oczywiście to nie są exe tylko bplki, ale mają takie rozszerzenie a apka głowna wymaga tych z rozszerzeniem exe. Niby działa, ale jakoś to nie jest za eleganckie.
Zeby odtworzyć to wystarczy stworzyć aplikacje VCL dla Windows z samą pustą formą. Ustawić w parametrach projektu Packages->Runtime Packages-> Link with runtime packages na TRUE, a w Runtime packages wpisać xxSystem.
Utworzyć projekt package xxSystem.bpl, wywalić wszystko z requires, dodać unit, w którym wpisać uses vcl.forms; i zbudować paczkę. Wywali błędem żeby dodać rtl i vcl, ale robimy cancel. I paczka jest zbudowana.
Teraz wchodzimy w pierwszą apkę i KOMPILUJEMY ją. Robi się wszystko poprawnie i apka działa też poprawnie (tak samo po przeniesieniu na maszynę bez delphi).
Natomiast gdy zrobimy BUILD apka się buduje, buduje się też paczka xxSystem, ale tworzy się także xxSystem.exe. I od tego momentu apka głowna wymaga tego xxSystem.exe.
xxSystem.exe i xxSystem.bpl to te same pliki tylko generowane z inną nazwą.
Pytanie, czy ja coś źle robię? Czy to odkryty po latach (przynajmniej przeze mnie) błąd/przypadłość XE2.
Czy ktoś się z tym spotkał i wie jak temu zaradzić? Rozdzielanie projektów i kompilacja/budowanie osobno nic nie daje. Zawsze zbudowanie apki podstawowej daje ten sam efekt.
Od razu mówie, sprawdziłem na używanym do dzisiaj XE7 - problem ten nie występuje - zawsze jest plik BPL.
Sprawdziłem też na 11 i tam tak samo - zawsze jest plik BPL.
Nie mam na tyle cierpliwości żeby pobierać XE3 i sprawdzać jak to tam wygląda.
pozdrawiam,
Przemek O.