I'm evaluating FinalBuilder as a potential solution for our company. We have an other product built in Delph7, 2007 and 2010 which we would like to support automatic build of. Our new version will be Delphi XE2 and is undergoing conversion at the moment. We also have a lot of VS c# projects.
Our new mandate is everything/every build automated. IE no manual input. While we can and have been doing this in TFS the support for Delphi is woefully bad. We've had to write a number of custom activities and they just are not quite perfect.
So I've downloaded FinalBuilder7 and I'm trying to take a step-by-step evaluation process. The first thing I'm doing is I've created a project with a single action "Build Delphi". I've been through this action a ton of times trying every option but basically I'm not getting the exact same results as if I run build in the Delphi XE2 IDE.
I have a test project which results in an EXE of 14,957,74 bytes when build from the IDE. This test project uses some custom components. When I run this built EXE it correctly uses the windows theme, IE the buttons are rounded and slightly colored. Groupboxes have white backgrounds, etc.
In FinalBuilder, in the Build Delphi action I've set it to use the project settings for packages, compiler, linker and directories. I'm currently letting FB do the versioning.
But when I build with FinalBuilder for this simple project I get an EXE of: 14,950,210 and the resulting EXE while it runs does not use the default windows theme. IE the buttons are now square and lack color, groupboxes have tan backgrounds.
What could I be doing wrong? It will be hard sell to my manager if I cannot generate exact results.
Thanks in advance. I expect it is something simple I'm missing.
My best guess would be that it’s not including the manifest file. When you add the action, select the dpr file, set the compiler version to XE2, set the configuration to Release, and then click on “Load Settings from Project file”. Then switch to the Resource compiler tab (it’s off screen, use the drop down menu top right of the dialog) and check that the manifest file is included.
BTW, FinalBuilder extracts the manifest from the project.res file, but it can only do so if runtime themes are enabled on the project and it has been compiled at least once in the IDE.
I disabled my current action and created a new one following your steps and I do indeed get the theme. Thanks for that.
I did check the checkbox to use project compiler settings but found that the "Assignable typed constants" which was checked in the project did not carry over when loading the settings.
I read in another post that it is generally not a good idea to use settings from the compiler anyway so we'll probably define options within the FB project and set them in stone.
Anyway that seemed to work. Next I have to try and figure out the TFS commands to get source. So far not been too successful with those but I'll keep plugging away at it.
Which version of TFS are you using? We’re about to release an update with TFS2012 support, if you would like you can try a test build with the TFS2012 changes :
A question. The process you mentioned above about adding the action, loading the project, checking resources for the manifest seems to be the only way to get FB to extract the manifext from the .res file. Is there some manual way to do it?
I have a base FB project which I’m cloning for our different delphi projects. But in each one I find the only way I can get the manifest created is to exactly follow your steps above. If there was a manual way to either run a program or an action on the .res file to extract the manifest it would help a lot.
Do you actually have customised manifests for each project? The one that delphi inserts into the res file is the same for every application, so the simple solution there is just save a copy somewhere and point all the fb projects to the same file. We store our manifest files in version control rather than relying on it being available via the res file.