2010-01-26 14 views
6

Sytuacja wygląda następująco. Zazwyczaj używam RAD Studio 2010 do programowania Delphi. Mam kilka elementów, które chciałbym redystrybuować w formie binarnej (* .bpl bez źródła). Ale chciałbym, aby ludzie mogli z nich korzystać pomimo swojej wersji Delphi. Ale na przykład pliki dcu mogą być używane tylko przez wersję kompilatora, który je wygenerował. Niemal ta sama sytuacja dotyczy plików bpl, jakie znam. Każdy plik bpl będzie wymagał odpowiedniej biblioteki VCLXX.bpl w zależności od wersji Delphi. Jak mogę utworzyć moje bpls, skompilowane w 2010 roku, aby móc je wykorzystać w Delphi7, 2007 itd.?Kompiluj pakiet komponentów Delphi (bpl) dla różnych wersji Delphi

Czy jedynym rozwiązaniem jest zainstalowanie WSZYSTKICH wersji Delphi i kompilacja plików bpl oddzielnie?

+0

potencjalne pytanie "bonusowe": czy "pełne" wersje Delphi (bez aktualizacji) są wymagane do zbudowania tych plików BPL? Na przykład, po aktualizacji z Delphi 7 do Delphi 2010, czy licencja zezwala na dystrybucję BPL utworzonych z oryginalnymi wersjami Delphi 7 * i * utworzonymi przy aktualizacji Delphi 2010? – mjn

+1

Tak, @mjustin, to dozwolone. Ludzie robią to cały czas. Mam wrażenie, że robią to wszyscy dostawcy komponentów. –

+3

Większość twórców Delphi odmawia użycia komponentów rozproszonych bez źródeł - dokładnie dlatego, że nie możesz użyć nowszej wersji Delphi, dopóki nie pojawią się zaktualizowane pakiety, a jeśli te pakiety staną się niezmienne, masz problem. –

Odpowiedz

7

Tak, to jedyne rozwiązanie. Każdy kompilator tworzy jednostki DCU i BPL specyficzne dla swojej własnej wersji. Jedynym wyjątkiem, o którym wiem, jest to, że Delphi 2006 i 2007 mają ten sam format.

+1

Aby to rozwinąć, dostawcy komponentów, którzy dostarczają tylko pliki binarne, pakują je do instalatora, który zawiera WSZYSTKIE obsługiwane pliki binarne, a następnie instaluje te, które wybiera użytkownik. –

2

Aby rozpowszechniać skompilowany kod, który może być używany przez wiele wersji kompilatora, należy rozpowszechniać zwykłą bibliotekę DLL, a nie BPL. Pakiety i jednostki zależą od wersji.

Umożliwia tworzenie autonomicznych funkcji eksportowanych w stylu C lub tworzenie obiektów COM zarejestrowanych w systemie operacyjnym.

Nie musi to jednak zmienić całej strategii rozwoju; może to być DLL, który używa BPL, więc możesz zachować całą pracę, którą już umieściłeś w paczce.

+0

Niestety, będzie to wymagało zastosowania mojego użytkownika do dołączenia moich bibliotek dll. Nie sądzę, że zwykły użytkownik będzie zadowolony z ich redystrybucji. –

+0

To musieliby zrobić, gdyby pierwotny plan - BPL - był wykonalny. Nie ma różnicy w tym względzie. (Chociaż słyszę, że istnieją sposoby na spakowanie biblioteki DLL w pliku EXE, dla tych, którzy naprawdę dbają o to, ile dystrybuują plików.) –

+0

Delphi może pobrać kod z BPL i zintegrować go z docelowym plikiem EXE. Nie ma potrzeby redystrybucji BPL osobno. –

0

Mogę utworzyć instalator, który zainstaluje zainstalowane wersje Delphi na komputerze. Wybierz dla czarodzieja Delphi, który chcesz utworzyć de bpl i wywołaj odpowiedniego Dcc z linii poleceń, aby wygenerować korespondentów bpl i zainstalować w Delphi. Możesz zajrzeć do instalatora JVCL, aby uzyskać przykład.

Att.

+0

@SaCi, JVCL redystrybuuje w formie źródłowej i jest kompilowany do pliku binarnego na docelowym komputerze programisty. To nie jest moja sprawa. –

0

Można utworzyć plik obj w C++ builder i link, który w Delphi, rozpowszechnia mały plik pas (nagłówek). Format C++ buildera nie zmienił się z delphi 7 na 2009 (mogę potwierdzić rok 2010, ale myślę, że będzie taki sam).

Należy jednak przetestować, czy jest to możliwe w przypadku komponentów wizualnych/designtime.