[Delphi] Programma gedeeltelijk met runtime packages bouwen

Pagina: 1
Acties:

  • Tomatoman
  • Registratie: November 2000
  • Laatst online: 22:26

Tomatoman

Fulltime prutser

Topicstarter
In twee samenwerkende programma's gebruik ik gedeeltelijk dezelfde packages, waaronder een aantal standaard Delphi packages zoals vcl70.bpl en vcldb70.bpl. Een aantal andere, zelfgemaakte packages is uniek voor een van beide programma's.

Wat ik nu wil is de gedeelde packages gebruiken als runtime packages en de unieke packages in mijn executable compileren. Dat beperkt bovendien het aantal runtime packages dat het setupprogramma moet installeren. Probleem: ik krijg het in Delphi alleen voor elkaar om mijn programma's met geen enkele runtime package te bouwen óf met alle beschikbare runtime packages. Doe ik iets fout?

Een goede grap mag vrienden kosten.


  • FendtVario
  • Registratie: Januari 2002
  • Laatst online: 12-05-2025

FendtVario

The leader drives Vario!

Heb dit niet uitgeprobeert, maar het lijkt me dat je in Project Options->Packages->Runtime packages het vinkje aanzet voor "Build with Runtime Packages"en in het tekstveldje de packages opgeeft die je wilt gebruiken.

www.fendt.com | Nikon D7100 | PS5


  • Tomatoman
  • Registratie: November 2000
  • Laatst online: 22:26

Tomatoman

Fulltime prutser

Topicstarter
Alleen de packages die ik daar opgeef, worden niet in de executable gecompileerd. Dat zie ik ook aan de grootte van de executable, die afneemt naarmate ik meer runtime packages opgeef.

Het probleem is alleen dat als ik daar ook maar één runtime package opgeef, de executable niet wil draaien zolang het niet alle gebruikte packages op mijn systeem kan vinden, of ze nou in de lijst met runtime packages staan of niet. Met andere woorden, ik geef aan dat het programma 1 runtime package moet gebruiken, maar in werkelijkheid gebruikt het er wel 15!

Zou het iets met onderlinge afhankelijkheden met packages te maken hebben?

Een goede grap mag vrienden kosten.


  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

Ja, runtime packages hebben ook afhankelijkheden. En aangezien deze code (gelukkig) niet meegecompileerd is in de runtime package moeten deze andere ook als runtime package beschikbaar zijn.

Je moet dus even puzellen welke je wel en niet kan en wilt gebruiken als runtime package.

Ook moet je er rekening mee houden dat als er fixes gedaan worden in de units in de packages deze niet meegenomen worden door de runtime packages tenzij ze ook gecompileerd worden. Als je alles in de EXE compileerd wordt wel de laatste wijziging van die unit meegenomen.

Runtime packages hebben vele voordelen o.a. tenopzichte van DLLs, maar dit zijn enkele van de dingen waar je rekening mee moet houden...

We adore chaos because we like to restore order - M.C. Escher


  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 26-06 10:37

OZ-Gump

terug van weggeweest

Omdat ik met hetzelfde probleem zit, schop ik deze even omhoog. (Het heeft geen zin een nieuw topic te openen).

Versie 1.4 van een pakketje dat ik gemaakt heb draait met slechts één runtime package, namelijk ABCC60.bpl.
Nu heb ik in versie 1.5 wat optimalisatie gedaan, opnieuw gecompiled en voilá, opeens heb ik rtl60.bpl, vcl60.bpl en vclx60.bpl ook nodig...

Hoe ik ook probeer bij de settings van mijn project, hij blijft de BPL's nodig hebben. Da's dus niet tof. Als ik een standaard Design Package aan en weer uit zet, komen de drie eerder besproken runtime packages bij de ABCC package te staan. Haal ik ze vervolgens handmatig weg en compileer ik het project, dan blijven ze weg.
En toch heeft de executable dan de packages nodig.

Is hier dan helemaal geen oplossing voor? En zo nee, hoe verklaar je dan dat het met de vorige versie van deze software wel gewerkt heeft? Het enige wat tussen de verschillende versies anders is, is wat tekst op een form, de locatie van sommige componenten en de volgorde waarin de code uitgevoerd wordt. Niks schokkends waarvoor je die packages nodig heb dus...

My personal website


  • Tomatoman
  • Registratie: November 2000
  • Laatst online: 22:26

Tomatoman

Fulltime prutser

Topicstarter
Het lijkt erop dat ABCC60.bpl code gelinkt heeft die in rtl60.bpl voorkomt. rtl60 is afhankelijk van vcl60 en vclx60, zodat die dependencies automatisch ook worden toegevoegd.

Een goede grap mag vrienden kosten.


  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 26-06 10:37

OZ-Gump

terug van weggeweest

Zoals ik al aangaf heeft het zonder gewerkt. Ik heb met de dependency-scanner van InstallShield mijn app doorgelopen, en daar vond hij enkel en alleen de ABCC-package.

In mijn 'oude' install is dat de enige (en dus de enige die bij de klant staat) en toen werkte het. En nu niet meer :'(

Ik wil best de package gewoon gebruiken, maar dan moet die ook naar de klant. De klant is van een zorginstelling, en die vinden software zowiezo al niet tof. Dus extra bestanden al helemaal niet...

[ Voor 3% gewijzigd door OZ-Gump op 07-03-2003 13:12 ]

My personal website


  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

Als je die rtl60 en andere depencies uit je abdcc60 package haalt zijn ze niet meer nodig. Als ze tijdens het compileren van de package weer terugkomen gebruik je toch echt ergens een unit ervan.

Jouw package geen dependicies hebt en toch geeft de applicatie aan de ie ze nodig heeft? Heb je misschien stiekemn aangegeven dat je app met die runtime packages moet draaien in de project options? Gebruik je misschien toch nog een versie (rebuild?) van je package die nog dependicies heeft?

We adore chaos because we like to restore order - M.C. Escher


  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 26-06 10:37

OZ-Gump

terug van weggeweest

:D
Jouw package geen dependicies hebt en toch geeft de applicatie aan de ie ze nodig heeft?
En dat voor iemand die normaal gezien zo welbespraakt is...

Geintje Lar....
ff ontopic maar weer, momenteel ben ik het anders aan het proberen (de ABCC-package is trouwens een third-party component dus heb ik geen mogelijkheden om hier dingen in aan te passen). Ik ga maar eens kijken of ik het niet anders opgelost krijg. Het lijkt er nou eenmaal op dat, ongeacht wat je aangeeft, toch altijd naar alle runtime-packages verwezen wordt die in code gebruikt worden, ook al mogen ze in de executable komen staan. Ik hou jullie op de hoogte...

My personal website


  • Tomatoman
  • Registratie: November 2000
  • Laatst online: 22:26

Tomatoman

Fulltime prutser

Topicstarter
[Edit] M.b.t. tot de InstallShield dependency checker: [/Edit]
Het kan zijn dat je eerst wat moet rondklikken in je app, omdat runtime packages soms pas geladen worden wanneer ze daadwerkelijk nodig zijn. In InstallShield kun je dan heel duidelijk zien dat er opeens een extra package geladen wordt.

Verder zou je kunnen kijken welke units er zijn bijgekomen in de source code. Daar staat vast een unit bij die ook in de uses clause van rtl60 voorkomt. Als je de bewuste unit hebt gelocaliseerd, kun je die tijdelijk verwijderen en kijken waar de compiler gaat klagen. Dan weet je precies welke code de boosdoener is. >:)

[ Voor 7% gewijzigd door Tomatoman op 07-03-2003 13:30 ]

Een goede grap mag vrienden kosten.


  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

OZ-Gump schreef op 07 March 2003 @ 13:26:
:D
[...]
En dat voor iemand die normaal gezien zo welbespraakt is...

Geintje Lar....
:D erm...hehe...ja, nu ik het zo nalees klopt er idd geen bal van die zin. Sorry :+

We adore chaos because we like to restore order - M.C. Escher


  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 26-06 10:37

OZ-Gump

terug van weggeweest

Nou... de kogel is door de kerk. Ik heb het (commerciele) component dat voor de ABCC-package zorgde dan maar zelf nagemaakt, maar dan in het project zelf. Het was maar een klein componentje, dus ik heb dat een beetje nagemaakt/vervangen door eigen brouwsel en het vinkje 'Build with runtime packages' uitgezet.

Klaar...

My personal website

Pagina: 1