Commandline building using msbuild does not seem to perform the remobjects steps

I am creating releases using commandline builds but remobjects does not seem to get performed correctly

after call rsvars.bat I perform
msbuild /t:rebuild OffServer.dproj

but this gives me compiler errors about unknown RO types
In another instance I get an error about a RO file in c:\program files (x86) which is perfectly fine
You can find some logs attacheddelphimsbuildremobjectszerrors.txt (40.8 KB) delphimsbuildremobjectszerrors2.txt (1.6 KB)

Hi,

we donā€™t update rsvars.bat & dcc*.cfg (like dcc32.cfg, etc) inside Delphi bin folder.

if you want to use command line compiler, you should specify units and include folders manually like

dcc32 ā€œ-IC:\Program Files (x86)\RemObjects Software\RemObjects SDK for Delphi\Sourceā€ ā€œ-uC:\Program Files (x86)\RemObjects Software\RemObjects SDK for Delphi\Sourceā€ myproject.dpr

Hi,

1.I donā€™t think (know if) rsvars.bat needs to update
2.I cannot specify the commandline dcc32 because it is too long for cmd.exe
3.When I compare the msbuild output and the dcc32 from the IDE I see the commandline is very similar. The commandline version has some more include search paths. You can see this in the attached file. I donā€™t expect these extra paths on the commandline be the cause of the issue. What do you think & how can it be solved?
4. Note: On 1 of the 3 development machines I tested I do not have an issue (but not sure if the build is performed or he just uses some intermediate files from the IDE)comparesomemsbuildcommandlines.txt (29.3 KB)

you can:

  • update dcc32.cfg and specify extra -U"path" and -I"path" in that file.
  • use train system. it is set of javascript files. see examples of .train in C:\Program Files (x86)\RemObjects Software\Build folder
  • create batch file like
delphi21_win32.cmd
@setlocal
@set RO_ROOT=%ProgramFiles(x86)%\RemObjects Software
@set RO_SDK=%RO_ROOT%\RemObjects SDK for Delphi\source
@set DA_SDK=%RO_ROOT%\Data Abstract for Delphi\source
@set RO_SDK_ALL=%RO_SDK%;%RO_SDK%\Codegen;%RO_SDK%\IDE;%RO_SDK%\DataSnap;%RO_SDK%\Synapse;%RO_SDK%\Zlib;%RO_SDK%\RODEC
@set DA_SDK_ALL=%DA_SDK%;%DA_SDK%\Server;%DA_SDK%\Drivers;%DA_SDK%\Legacy;%DA_SDK%\IDE
@set NS_VCL=-NS"VCL;System;Data;Winapi;Data.Win;Vcl.Imaging;Vcl.Samples;System.Win;XML"
@set DCC_OPTIONS=-B -Q -W-SYMBOL_DEPRECATED -W-UNIT_DEPRECATED
@set dcc_root=C:\Program Files (x86)\Embarcadero\Studio\21.0
"%dcc_root%\bin\dcc32.exe" -Q -I"%RO_SDK%;%DA_SDK%" "-U%dcc_root%\lib\win32\release;%RO_SDK_ALL%;%DA_SDK_ALL%"  -R"%RO_SDK%" %NS_VCL% %DCC_OPTIONS% %1 %2 %3 %4 %5 %6 %7 %8 %9
@endlocal
  1. As mentioned before: looking at my msbuild output I donā€™t need extra paths, I need less
  2. Your delphi21_win32.cmd sample does not contain train, am I missing something?
  3. I thought msbuild was the advised way of building projects. It looks clean and very usefull to me.
    It saves me from the tedious job of creating a commandline of 15000 characters.
  4. Does train.exe replace msbuild? I donā€™t see any .train scripts in the path you specified and the commandline help is too cryptic

I provided possible workarounds (one per line)


train scripts in that folder are

  • c_DA.train
  • c_EW.train
  • c_HY.train
  • c_RO.train

simplified example:

  • a.cmd
train a.train

a.train

function build(_version) {
	idelphi.build("a.dpr", {delphi : _version});
}

build('27');	//Delphi 10.4

others api is descibed at Api

I am really disappointed that something as widely supported as msbuild is not supported by remobjects.
I have to change my build scripts, take into account other possible return values of your train.exe.
I also have to create a train file for each dproj.

So I would appreciate if you woud reconsider supporting msbuild so that a commandline like
ā€œ%FrameworkDir%\MSBuild.exeā€ /t:rebuild /p:Config=%BUILDCONFIG% OffServer.dproj
works or have some simple extra prebuild steps to be used in combination with this.

Meanwhile I have made an attempt at getting train.exe to work but failed.
This is my commandline/input file and output
-------------------- Commandline -----------------
pushd ā€¦\OffServer
ā€œC:\Program Files (x86)\RemObjects Software\Build\Train.exeā€ ā€¦\package\OffServer.Train
---------------------- OffServer.Train -------------
function build(_version) {
idelphi.build(ā€œOffServer.dprā€,{delphi : _version});
}
build(ā€˜27ā€™); // Delphi 10.4
-------------- OUTPUT -------------

DELPHIPATH c:\program files (x86)\embarcadero\studio\21.0
RemObjects Train - JavaScript-based build automation
Copyright 2013-2018 RemObjects Software, LLC. All rights reserved.
Considering ini file C:\Program Files (x86)\RemObjects Software\Build\Train.W10DEVELFV2.ini
Considering ini file C:\Program Files (x86)\RemObjects Software\Build\Train.Windows.ini
Considering ini file C:\Program Files (x86)\RemObjects Software\Build\Train.ini
No config file found.
script(ā€¦\package\OffServer.Train) {
function build(27) {
ReferenceError: idelphi is not defined
} function build
Error while running script ā€¦\package\OffServer.Train (2:3): ReferenceError: ā€¦
} script

Hi,

sorry, itā€™s typo.
should be delphi.build()

api for delphi is declared at Delphi

Still an error

DELPHIPATH c:\program files (x86)\embarcadero\studio\21.0
RemObjects Train - JavaScript-based build automation
Copyright 2013-2018 RemObjects Software, LLC. All rights reserved.
Considering ini file C:\Program Files (x86)\RemObjects Software\Build\Train.W10DEVELFV2.ini
Considering ini file C:\Program Files (x86)\RemObjects Software\Build\Train.Windows.ini
Considering ini file C:\Program Files (x86)\RemObjects Software\Build\Train.ini
No config file found.
script(ā€¦\package\OffServer.Train) {
function build(27) {
delphi.build(OffServer.dpr, [object Object]) {
Building: E:\p4\fvc\Officinall\package\OffServer.dpr
Running: C:\Program Files (x86)\Embarcadero\Studio\21.0\Bin\dcc32.exe "E:\p4ā€¦
Embarcadero Delphi for Win32 compiler version 34.0
Copyright (c) 1983,2021 Eā€¦
Delphi failed
} delphi.build
} function build
} script

try to add logging to file with

"-t=dataabstract_log.html"

or

"-x=dataabstract_log.xml"

or both like

@%train%  "-vWin32=27" "-vFMX=27" %other% "%app_build%\c_DA.train" "-t=%app_build%\dataabstract_log.html" "-x=%app_build%\dataabstract_log.xml"

and review full error in log file
after reviewing error you may need to specify paths to library, default namespase, etc

we use this method for detecting std paths:

function defaultDelphiSearchDir(_version, _platform, _isindy9)
{
    if (_version <= 7)  return '$(DELPHI)/Lib;$(DELPHI)/Bin;';
    if (_version <= 11) return (_isindy9) ? '$(BDS)/Lib;$(BDS)/Bin;$(BDS)/lib/Indy9;' : '$(BDS)/Lib;$(BDS)/Bin;$(BDS)/lib/Indy10;';
    if (_version < 15)  return '$(BDS)/Lib;$(BDS)/Bin;$(BDS)/lib/Indy10;';
    if (_version >=15)  return '$(BDSLIB)/$(Platform)/Release;$(BDSLIB)/$(Platform)/Debug;$(BDS)/Bin;';
}

usage:

function buildDADelphiPackage(_version, _package, _conditionalDefines, _Namespaces, _platform)
{
..
	var searchPath = defaultDelphiSearchDir(_version, _platform, false)+RO_DCU+';';
..
	delphi.build(myPackage, {
...
		unitSearchPath : searchPath+...,
...
	});

The error was because he takes the dpr from the .train path and not from the CWD.

When I move the .train file I get an error for a .inc file.
However when I read your comment it appears I have to add all the information from the .dproj into the javascript manually.
This is not efficient and also not very maintainable since our many dproj search paths change now and then.

I am looking for a solution where I donā€™t need to redundantly copy all the information in the .dproj.
FYI: My build tools generate version strings in the .dproj. what version number will be generated when using train?

command line compiler (dcc32.exe) accepts only .pas,.dpk and .dpr and doesnā€™t .dproj ā€¦

it can be specified as variable or can be read from file ā€¦

@set EWVersion=4.7.0.880
var everwoodVersion = env["EWVersion"];
..
	delphi.build("$(Everwood)/Source/Delphi/RemObjects_Everwood_D"+_version+".dpk", 
    {
..
		updateVersionInfo: {
			version : everwoodVersion,
			fileVersion: everwoodVersion,
..
		}
	});

I have tried to revive the commandline build effort but with the latest RO SDK it is not better.

Is it still required to copy all the search paths (100+) from our dprojā€™s (10+) to each train file?
And maintain these in both files?

I find it especially regrettable since I could use
ā€œ%FrameworkDir%\MSBuild.exeā€ /p:Config=%BUILDCONFIG% OffServer.dproj
with an older version of RO (probably RO files werenā€™t regenerated but the build works)

In case we use train for a commandline deployment script we have the extra disadvantage we will be releasing a build which was not what we tested during the development phase.

Any way of getting rid of the redundancy by supporting .dproj?
Our scripts that set our version numbers in the .dproj would then also still work.

Thanks,
Frederic

Hi,

I see this workaround: create a method that will read .dproj as xml file and return library paths as a string.
it will solve this issue.
later, you can put this method to shared file (.train) and use it in other scripts.

I tried this but the search paths arenā€™t recognized.

Can you tell me whatā€™s wrong with my script

function build(_version) {
delphi.build(ā€œOffServer.dprā€,
{
delphi : _version,
unitSearchPath : ā€˜ā€¦/Base Unitsā€™
});
}
build(ā€˜27ā€™); // Delphi 10.4

I get error output:
S:\p4\fvcfix\Officinall\OffServer
Ī» ā€œC:\Program Files (x86)\RemObjects Software\Build\Train.exeā€ -t=dataabstract_log.html OffServer.Train
RemObjects Train - JavaScript-based build automation
Copyright 2013-2018 RemObjects Software, LLC. All rights reserved.
script(OffServer.Train) {
function build(27) {
delphi.build(OffServer.dpr, [object Object]) {
Building: S:\p4\fvcfix\Officinall\OffServer\OffServer.dpr
Running: C:\Program Files (x86)\Embarcadero\Studio\21.0\Bin\dcc32.exe ā€œS:\p4\fvcfix\Officinall\OffServer\OffServer.dprā€ -Q -ā€¦
OffServer.dpr(6) Fatal: F1026 File not found: ā€˜detectdelphiversion.incā€™
Embarcadero Delphi for Win32 compiler version 34.0
Copyright (c) 1983,2020 Embarcadero Technologies, Inc.
OffServer.dpr(6)ā€¦
Delphi failed
} delphi.build
} function build
} script

Hi,

you havenā€™t specified includeSearchPath parameter.

delphi.build(project, options) build a delphi project;

where

options: {
  dcc: string; // overrides any version
  delphi: string;
  platform: string;
  aliases: string;
  conditionalDefines: array of string;
  destinationFolder: string;
  dcuDestinationFolder: string;
  includeSearchPath: string;
  unitSearchPath:string;
  namespaces: string
  otherParameters: string;
  updateIcon: string
  updateVersionInfo: {
    codePage: UInt16;
    resLang: UInt16;
    isDll: Boolean;
    version: String;
    fileVersion: String;
    company: String;
    description: String;
    legalCopyright: String;
    legalTrademarks: String;
    productName: String;
    title: String;
    extraFields: EcmaScriptObject;
    }

OK, step by step I get a bit further.
It looks like I need to add a lot of .train code to support Remobects/DataAbstract
It is also not always clear what I should do
For example I am at a phase where I get error
c:\Program Files (x86)\RemObjects Software\Data Abstract for Delphi\Source\DataAbstract.inc(1) Fatal: F1026 File not found: ā€˜eDefines.incā€™
I realise I can add includeSearchPaths but which order should I use. I find many eDefines.inc and my code uses RO + DA + Hydra.
Ī» dir c:\edefines.inc /s/b
c:\Program Files (x86)\RemObjects Software\Data Abstract for Delphi\Source\eDefines.inc
c:\Program Files (x86)\RemObjects Software\Everwood\Source\Delphi\eDefines.inc
c:\Program Files (x86)\RemObjects Software\Hydra for Delphi\Source\eDefines.inc
c:\Program Files (x86)\RemObjects Software\RemObjects SDK for Delphi\Source\eDefines.inc
c:\Users\Public\Documents\RemObjects Samples\Hydra for Delphi\RO Client\eDefines.inc
c:\Users\Public\Documents\RemObjects Samples\RemObjects SDK for Delphi\FPC Server\eDefines.inc

FYI: Your sample code above contains RO_DCU but this is undefined for me. I guess we should define this ourselves?

FYI: I am stuck on the konopka raize controls
I have copied all the machine wide library paths from the RAD IDE to my unitSearchPath but it refuses to find the RzButton. hpp/dcu/pas

Any tips on getting this to work?

Train script:

function getROSDKPath()
{
  var ROSDK='c:/Program Files (x86)/RemObjects Software/RemObjects SDK for Delphi';
  return ROSDK;
}
function getDASDKPath()
{
  return 'c:/Program Files (x86)/RemObjects Software/Data Abstract for Delphi';
}

function defaultDelphiSearchDir(_version, _platform, _isindy9)
{
  var path;
  if (_version <= 7) path='$(DELPHI)/Lib;$(DELPHI)/Bin;';
  else if (_version <= 11) path=(_isindy9) ? '$(BDS)/Lib;$(BDS)/Bin;$(BDS)/lib/Indy9;' : '$(BDS)/Lib;$(BDS)/Bin;$(BDS)/lib/Indy10;';
  else if (_version < 15) path='$(BDS)/Lib;$(BDS)/Bin;$(BDS)/lib/Indy10;';
  else if (_version >=15) path='$(BDSLIB)/$(Platform)/Release;$(BDSLIB)/$(Platform)/Debug;$(BDS)/Bin;';
  var BDSCatalogRepositoryAllUsers='c:/Users/Public/Documents/Embarcadero/Studio/21.0/CatalogRepository';
  path=path+'$(BDSUSERDIR)/Imports;$(BDS)/Imports;$(BDSCOMMONDIR)/Dcp/$(BDS)/include;$(BDSCatalogRepositoryAllUsers)/KonopkaControls-270-6.2.3/Lib/RX10.4/Win32;C:/Program Files (x86)/Devart/SDAC for RAD Studio 10.4/Lib/Win32;C:/Program Files (x86)/Devart/SDAC for RAD Studio 10.4/Bin/Win32;C:/Program Files (x86)/Devart/SecureBridge for RAD Studio 10.4/Lib/Win32;C:/Program Files (x86)/Devart/SecureBridge for RAD Studio 10.4/Bin/Win32;C:/Program Files (x86)/RemObjects Software/RemObjects SDK for Delphi/Dcu/D27/Win32;C:/Program Files (x86)/RemObjects Software/RemObjects SDK for Delphi/Source;C:/Program Files (x86)/RemObjects Software/RemObjects SDK for Delphi/Source/DataSnap;C:/Program Files (x86)/RemObjects Software/RemObjects SDK for Delphi/Source/Grijjy;C:/Program Files (x86)/RemObjects Software/RemObjects SDK for Delphi/Source/RODEC;C:/Program Files (x86)/RemObjects Software/RemObjects SDK for Delphi/Source/Synapse;C:/Program Files (x86)/RemObjects Software/RemObjects SDK for Delphi/Source/ZLib;$(Everwood)/Bin;C:/Program Files (x86)/RemObjects Software/Data Abstract for Delphi/Dcu/D27/Win32;C:/Program Files (x86)/RemObjects Software/Data Abstract for Delphi/Source;C:/Program Files (x86)/RemObjects Software/Data Abstract for Delphi/Source/Drivers;C:/Program Files (x86)/RemObjects Software/Data Abstract for Delphi/Source/Server;C:/Program Files (x86)/RemObjects Software/Data Abstract for Delphi/Source/Legacy;C:/Program Files (x86)/RemObjects Software/Hydra for Delphi/Dcu/D27/win32;C:/Program Files (x86)/RemObjects Software/Hydra for Delphi/Source;C:/Users/fvancrae/Documents/tmssoftware/TMS Async/;C:/Users/fvancrae/Documents/tmssoftware/TMS Async/Delphi104Sydney/Win32/Release;C:/Users/fvancrae/Documents/tmssoftware/TMS Scripter/packages/dsydney/./Win32/Release;C:/Users/fvancrae/Documents/tmssoftware/TMS Scripter/source/imports/extra;C:/Users/fvancrae/Documents/tmssoftware/TMS VCL UI Pack/;C:/Users/fvancrae/Documents/tmssoftware/TMS VCL UI Pack/Delphi104Sydney/Win32/Release;C:/Users/fvancrae/Documents/tmssoftware/TMS VCL UI Pack/xlsAdapter;C:/Users/fvancrae/Documents/tmssoftware/TMS VCL WebGMaps/;C:/Users/fvancrae/Documents/tmssoftware/TMS VCL WebGMaps/Delphi104Sydney/Win32/Release;C:/Users/fvancrae/Documents/tmssoftware/TMS Cryptography Pack/;C:/Users/fvancrae/Documents/tmssoftware/TMS Cryptography Pack/Delphi104Sydney/Win32/Release;C:/Program Files (x86)/madCollection/madBasic/BDS21/win32;C:/Program Files (x86)/madCollection/madDisAsm/BDS21/win32;C:/Program Files (x86)/madCollection/madExcept/BDS21/win32;C:/Program Files (x86)/madCollection/madExcept/../Plugins/win32;C:/Program Files (x86)/madCollection/madKernel/BDS21/win32;C:/Program Files (x86)/madCollection/madSecurity/BDS21/win32;C:/Program Files (x86)/madCollection/madShell/BDS21/win32;$(DXVCL)/Library/RS27;$(DXVCL)/ExpressCore Library/Sources;$(DXVCL)/ExpressCommon Library/Sources;$(DXVCL)/ExpressGDI+ Library/Sources;$(DXVCL)/ExpressLibrary/Sources;$(DXVCL)/XP Theme Manager/Sources;$(DXVCL)/ExpressLayout Control/Sources;$(DXVCL)/ExpressPageControl/Sources;$(DXVCL)/ExpressEditors Library/Sources;$(DXVCL)/ExpressDocking Library/Sources;$(DXVCL)/ExpressBars/Sources;$(DXVCL)/ExpressOfficeCore Library/Sources;$(DXVCL)/ExpressSpreadSheet Core/Sources;$(DXVCL)/ExpressTile Control/Sources;$(DXVCL)/ExpressWizard Control/Sources;$(DXVCL)/ExpressSpreadSheet/Sources;$(DXVCL)/ExpressExport Library/Sources;$(DXVCL)/ExpressQuantumTreeList/Sources;$(DXVCL)/ExpressVerticalGrid/Sources;$(DXVCL)/ExpressMemData/Sources;$(DXVCL)/ExpressSpellChecker/Sources;$(DXVCL)/ExpressDataController/Sources;$(DXVCL)/ExpressNavBar/Sources;$(DXVCL)/ExpressSkins Library/Sources;$(DXVCL)/ExpressPrinting System/Sources;$(DXVCL)/ExpressPivotGrid/Sources;$(DXVCL)/ExpressDBTree Suite/Sources;$(DXVCL)/ExpressOrgChart/Sources;$(DXVCL)/ExpressFlowChart/Sources;$(DXVCL)/ExpressMap Control/Sources;$(DXVCL)/ExpressQuantumGrid/Sources;$(DXVCL)/ExpressScheduler/Sources;$(DXVCL)/ExpressRichEdit Control/Sources;$(DXVCL)/ExpressGauge Control/Sources;$(DXVCL)/ExpressPDFViewer/Sources;$(DXVCL)/ExpressEntityMapping Framework/Sources;$(BDS)/RBuilder/Lib/Win32';
  path=path+BDSCatalogRepositoryAllUsers+'/KonopkaControls-270-6.2.3/Source';
  return path;
}
function buildDADelphiPackage(_version,_package,_searchpath,_conditionalDefines,_namespaces,_platform)
{
  var RO_DCU=getROSDKPath()+'/Source;'+getROSDKPath()+'/Source/RODEC;'+getROSDKPath()+'/Source/ZLib;'+getDASDKPath()+'/Source;'+getDASDKPath()+'/Source/Server';
  var RO_INCLUDE=getROSDKPath()+'/Source'+';'+getDASDKPath()+'/Source';
  var delphisearchPath = defaultDelphiSearchDir(_version, _platform, false)+RO_DCU+';';
  delphi.build(_package,
    {
	  delphi : _version,
	  platform: _platform,
	  namespaces: _namespaces,
	  unitSearchPath : delphisearchPath+_searchpath,
	  includeSearchPath: RO_INCLUDE+';'+_searchpath
	});
}

var delphiversion='27';
var platform='Win32';
var namespace='Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;System;Xml;Data;Datasnap;Web;Soap;DUnitX.MemoryLeakMonitor;Winapi;System.Win;Xml.Win;';
var offserverdefines='RemObjects_INDY10;RELEASE';
var offserversearchpath='../OffClient/DataObjects;../Base Units;../OffClient/Barcodes;../Components/FastMM;../Components/FastMM/Demos/Usage Tracker;../Components/Synapse/source/lib;../Components/tmssoftware/TMS Async;../Components/TMSCryptoWinXPcompat';
buildDADelphiPackage(delphiversion,"OffServer.dpr",offserversearchpath,offserverdefines,namespace,platform); // Delphi 10.4

Train output:

Ī» "C:\Program Files (x86)\RemObjects Software\Build\Train.exe" -t=dataabstract_log.html OffServer.Train
RemObjects Train - JavaScript-based build automation
Copyright 2013-2018 RemObjects Software, LLC. All rights reserved.
script(OffServer.Train) {
  function buildDADelphiPackage(27, OffServer.dpr, ../OffClient/DataObjects;../Base Units;../OffClien..., RemObjects_INDY10;RELEASE, Vcl;Vcl.Imaging;Vcl.To...) {
    function getROSDKPath() { } : c:/Program Files (x86)/RemObjects Software/RemO...
    function getROSDKPath() { } : c:/Program Files (x86)/RemObjects Software/RemO...
    function getROSDKPath() { } : c:/Program Files (x86)/RemObjects Software/RemO...
    function getDASDKPath() { } : c:/Program Files (x86)/RemObjects Software/Data...
    function getDASDKPath() { } : c:/Program Files (x86)/RemObjects Software/Data...
    function getROSDKPath() { } : c:/Program Files (x86)/RemObjects Software/RemO...
    function getDASDKPath() { } : c:/Program Files (x86)/RemObjects Software/Data...
    function defaultDelphiSearchDir(27, Win32, False) { } : $(BDSLIB)/$(Platform)/Release;$(BDSLIB)/$(Platf...
    delphi.build(OffServer.dpr, [object Object]) {
      Building: S:\p4\fvcfix\Officinall\OffServer\OffServer.dpr
      Running: C:\Program Files (x86)\Embarcadero\Studio\21.0\Bin\dcc32.exe "S:\p4\fvcfix\Officinall\OffServer\OffServer.dpr" -Q -B -NS"Vcl;Vcl.Imaging;Vcl.Touch;Vc...
      fServerForm.pas(18) Fatal: F2613 Unit 'RzButton' not found.
      Embarcadero Delphi for Win32 compiler version 34.0
Copyright (c) 1983,2020 Embarcadero Technologies, Inc.
fServerForm.pas(18) Fatal: F2613 Unit 'RzButton' n...
      Delphi failed
    } delphi.build
  } function buildDADelphiPackage
} script

Filesystem:

Ī» dir c:\rzbutt*.* /s/b
c:\Users\Public\Documents\Embarcadero\Studio\21.0\CatalogRepository\KonopkaControls-270-6.2.3\Lib\RX10.4\Win32\RzButton.dcu
c:\Users\Public\Documents\Embarcadero\Studio\21.0\CatalogRepository\KonopkaControls-270-6.2.3\Lib\RX10.4\Win32\RzButton.hpp
c:\Users\Public\Documents\Embarcadero\Studio\21.0\CatalogRepository\KonopkaControls-270-6.2.3\Lib\RX10.4\Win32\RzButtonEditor.dcu
c:\Users\Public\Documents\Embarcadero\Studio\21.0\CatalogRepository\KonopkaControls-270-6.2.3\Lib\RX10.4\Win32\RzButtonEditor.dfm
c:\Users\Public\Documents\Embarcadero\Studio\21.0\CatalogRepository\KonopkaControls-270-6.2.3\Lib\RX10.4\Win32\RzButtonEditor.hpp
c:\Users\Public\Documents\Embarcadero\Studio\21.0\CatalogRepository\KonopkaControls-270-6.2.3\Lib\RX10.4\Win64\RzButton.dcu
c:\Users\Public\Documents\Embarcadero\Studio\21.0\CatalogRepository\KonopkaControls-270-6.2.3\Lib\RX10.4\Win64\RzButton.hpp
c:\Users\Public\Documents\Embarcadero\Studio\21.0\CatalogRepository\KonopkaControls-270-6.2.3\Lib\RX10.4\Win64\RzButtonEditor.dfm
c:\Users\Public\Documents\Embarcadero\Studio\21.0\CatalogRepository\KonopkaControls-270-6.2.3\Source\RzButton.pas
c:\Users\Public\Documents\Embarcadero\Studio\21.0\CatalogRepository\KonopkaControls-270-6.2.3\Source\RzButtonEditor.dfm
c:\Users\Public\Documents\Embarcadero\Studio\21.0\CatalogRepository\KonopkaControls-270-6.2.3\Source\RzButtonEditor.pas

Hi,

all eDefines.inc should be the same. When we create setup, we copy Everwood version to all other places.

try to add ; at the end of each path line, like

  path=path+'$(BDSUSERDIR)/Imports;$(BDS)/Imports;$(BDSCOMMONDIR)/Dcp/$(BDS)/include;$(BDSCatalogRepositoryAllUsers)/KonopkaControls-270-6.2.3/Lib/RX10.4/Win32;C:/Program Files (x86)/Devart/SDAC for RAD Studio 10.4/Lib/Win32;C:/Program Files (x86)/Devart/SDAC for RAD Studio 10.4/Bin/Win32;C:/Program Files (x86)/Devart/SecureBridge for RAD Studio 10.4/Lib/Win32;C:/Program Files (x86)/Devart/SecureBridge for RAD Studio 10.4/Bin/Win32;C:/Program Files (x86)/RemObjects Software/RemObjects SDK for Delphi/Dcu/D27/Win32;C:/Program Files (x86)/RemObjects Software/RemObjects SDK for Delphi/Source;C:/Program Files (x86)/RemObjects Software/RemObjects SDK for Delphi/Source/DataSnap;C:/Program Files (x86)/RemObjects Software/RemObjects SDK for Delphi/Source/Grijjy;C:/Program Files (x86)/RemObjects Software/RemObjects SDK for Delphi/Source/RODEC;C:/Program Files (x86)/RemObjects Software/RemObjects SDK for Delphi/Source/Synapse;C:/Program Files (x86)/RemObjects Software/RemObjects SDK for Delphi/Source/ZLib;$(Everwood)/Bin;C:/Program Files (x86)/RemObjects Software/Data Abstract for Delphi/Dcu/D27/Win32;C:/Program Files (x86)/RemObjects Software/Data Abstract for Delphi/Source;C:/Program Files (x86)/RemObjects Software/Data Abstract for Delphi/Source/Drivers;C:/Program Files (x86)/RemObjects Software/Data Abstract for Delphi/Source/Server;C:/Program Files (x86)/RemObjects Software/Data Abstract for Delphi/Source/Legacy;C:/Program Files (x86)/RemObjects Software/Hydra for Delphi/Dcu/D27/win32;C:/Program Files (x86)/RemObjects Software/Hydra for Delphi/Source;C:/Users/fvancrae/Documents/tmssoftware/TMS Async/;C:/Users/fvancrae/Documents/tmssoftware/TMS Async/Delphi104Sydney/Win32/Release;C:/Users/fvancrae/Documents/tmssoftware/TMS Scripter/packages/dsydney/./Win32/Release;C:/Users/fvancrae/Documents/tmssoftware/TMS Scripter/source/imports/extra;C:/Users/fvancrae/Documents/tmssoftware/TMS VCL UI Pack/;C:/Users/fvancrae/Documents/tmssoftware/TMS VCL UI Pack/Delphi104Sydney/Win32/Release;C:/Users/fvancrae/Documents/tmssoftware/TMS VCL UI Pack/xlsAdapter;C:/Users/fvancrae/Documents/tmssoftware/TMS VCL WebGMaps/;C:/Users/fvancrae/Documents/tmssoftware/TMS VCL WebGMaps/Delphi104Sydney/Win32/Release;C:/Users/fvancrae/Documents/tmssoftware/TMS Cryptography Pack/;C:/Users/fvancrae/Documents/tmssoftware/TMS Cryptography Pack/Delphi104Sydney/Win32/Release;C:/Program Files (x86)/madCollection/madBasic/BDS21/win32;C:/Program Files (x86)/madCollection/madDisAsm/BDS21/win32;C:/Program Files (x86)/madCollection/madExcept/BDS21/win32;C:/Program Files (x86)/madCollection/madExcept/../Plugins/win32;C:/Program Files (x86)/madCollection/madKernel/BDS21/win32;C:/Program Files (x86)/madCollection/madSecurity/BDS21/win32;C:/Program Files (x86)/madCollection/madShell/BDS21/win32;$(DXVCL)/Library/RS27;$(DXVCL)/ExpressCore Library/Sources;$(DXVCL)/ExpressCommon Library/Sources;$(DXVCL)/ExpressGDI+ Library/Sources;$(DXVCL)/ExpressLibrary/Sources;$(DXVCL)/XP Theme Manager/Sources;$(DXVCL)/ExpressLayout Control/Sources;$(DXVCL)/ExpressPageControl/Sources;$(DXVCL)/ExpressEditors Library/Sources;$(DXVCL)/ExpressDocking Library/Sources;$(DXVCL)/ExpressBars/Sources;$(DXVCL)/ExpressOfficeCore Library/Sources;$(DXVCL)/ExpressSpreadSheet Core/Sources;$(DXVCL)/ExpressTile Control/Sources;$(DXVCL)/ExpressWizard Control/Sources;$(DXVCL)/ExpressSpreadSheet/Sources;$(DXVCL)/ExpressExport Library/Sources;$(DXVCL)/ExpressQuantumTreeList/Sources;$(DXVCL)/ExpressVerticalGrid/Sources;$(DXVCL)/ExpressMemData/Sources;$(DXVCL)/ExpressSpellChecker/Sources;$(DXVCL)/ExpressDataController/Sources;$(DXVCL)/ExpressNavBar/Sources;$(DXVCL)/ExpressSkins Library/Sources;$(DXVCL)/ExpressPrinting System/Sources;$(DXVCL)/ExpressPivotGrid/Sources;$(DXVCL)/ExpressDBTree Suite/Sources;$(DXVCL)/ExpressOrgChart/Sources;$(DXVCL)/ExpressFlowChart/Sources;$(DXVCL)/ExpressMap Control/Sources;$(DXVCL)/ExpressQuantumGrid/Sources;$(DXVCL)/ExpressScheduler/Sources;$(DXVCL)/ExpressRichEdit Control/Sources;$(DXVCL)/ExpressGauge Control/Sources;$(DXVCL)/ExpressPDFViewer/Sources;$(DXVCL)/ExpressEntityMapping Framework/Sources;$(BDS)/RBuilder/Lib/Win32'+';';
  path=path+BDSCatalogRepositoryAllUsers+'/KonopkaControls-270-6.2.3/Source'+';';

w/o this you will have broken paths like

'ā€¦KonopkaControls-270-6.2.3/SourceC:/ā€¦`

I donā€™t think I am missing semicolons. Can you point me to the mistake?
Is there a way to debug (dump variables) in train?