I've got a Delphi 2007 VM which includes a reasonably up-to-date Report Builder and Dev Express Suite. I use it for a particular project for a particular client.
For that same client, I also have a D5 VM which just so happens to use a (different, older) version of Report Builder and a different (older) version of some of the Dev Express components.
It would make testing and general maintenance of my work for this client a lot more straightforward if I could install D5 (and the versions of the components it uses) onto the D2007 VM, and have one 'uber VM' that contained everything for that client. Naturally I'd have to keep the various versions of the components 'separate'.
Hope you haven't all drifted off to sleep with boredom yet - just wondered if there were any tricks or tips I should be aware of before I try to do this. I figured that putting D5 onto the D2007 machine would be easier (larger existing VM drive etc, plus avoiding the process of re-registering a D2007 installation etc), but in if would be easier to add D2007 to D5 then I could do it that way round I guess.
Any advice? :-)
Multiple Delphi versions do coexist quite nicely if you install them in the correct order, newer versions after older ones. This is something that holds for VMs just as for real machines. If you have a VM manager with snapshot capabilities you could try to install Delphi 5 over Delphi 2007 and see whether anything breaks - if so you simply revert to the snapshot. However, since setting up a new VM isn't a big task I would do that instead and install Delphi versions in the recommended order.
Multiple versions of component sets can be installed as well, each into its own directory. Only one of them can be registered inside one IDE, obviously, but you can use different versions for different IDE versions. If you have an installer that gives you trouble you can always install Delphi and the component sets in one account and develop in another account. Installers do generally write only to the machine and current user registry hives, so running Delphi in another account allows you to install packages manually. Be sure to build the packages in Delphi-version-specific directories - even though most packages have version-specific package files all other source files have the same name and need to be rebuilt for each Delphi version.
Related
I have a virtual machine with the delphi xe2 installed and expired, I would like to know how export all components used in my projects from this machine to other that has the delphi xe2 installed and activated.
I done it:
I copied the program folder into my new machine, also was exported the register from the virtual machine and installed. I copied the *.bpl files from the system32 folder to the other machine.
I imported a project from virtual machine that works normally, and in my new machine occur many problems with components not found.
How can I solve this?
Notes: I have only this project in this virtual machine, I bought it.
I dont have many knowledges in Delphi. I am starting. I'm a Java Developer.
Thanks
Come to think of it: what is expired? If Delphi XE2 is expired, it is probably a trial version (which is usually an Architect SKU). You can not copy its components and use them. They will not work in a normal environment. Otherwise, someone could buy the much cheaper Professional and simply copy everything from the (Architect) trial version over to their Professional install and use them. The trial components are not compatible with anything but the trial of the same version.
If you mean third party components: usually, these components are installed with an installer. Copy these installers to your other installation and install them like before.
That is perhaps a bit slower, but the only proper way to do this. Anything else means fuddling with the registry and perhaps .ini files and what not, and a lot of frustration etc. The installers know what to install and how.
Your project sources can simply be copied over as they are, i.e. copy the entire directories. But first install all necessary components. If you used components from a trial version, and your XE2 doesn't have them, you must abandon them.
try 3rd party tools calling CnPack Wizard for copy configuration.
mostly BPL's are located in C:\Users\Public\Documents\Embarcadero\Studio\15.0\Bpl where 15.0 -- Delphi version number (15.0 is XE7)
We have some legacy software programmed in Delphi 2007. I had to upgrade Indy to something quite new from their source snapshot to be able to support TLS v1.2 in my application.
Old Indy was removed and new packages compiled and installed. Note that Indy changed also naming of the packages, currently they are called IndyCore110.bpl etc - with 110 suffix for D2007. Which probably doesn't even matter, since the packages are in any case newly build and the library itself is modified slightly.
Of course, the compiled packages and units from kbmMW CodeGear edition which we used in other parts of the system (and which need to be in the same Delphi environment on the same build machine) are not compatible with the new Indy neither by naming nor by whatever stands for version there, I can't re-install the kbmWM's packages.
If I understand it right, I need to obtain sources for kbmWM in order to be able to re-build and re-install it (while, possibly, fixing some compatibility issues where it comes in contact with new Indy). (Please correct me if this is wrong).
What I don't know is - which edition of kbmWM do I even need, what is the difference between Professional and Enterprise - are they different by component structure or only by licensing/support features? The CodeGear edition - which edition with sources does it correspond to - Professional or Enterprise?
I've attempted to compose a list of components and classes which are definitely explicitly used in our source, maybe this could help in answering the question. Here it is:
TkbmMWClientQuery
TkbmMWClientStoredProc
TkbmMWClientConnectionPool
TkbmMWBinaryStreamFormat
TkbmMWTCPIPIndyClientTransport
TkbmMWPooledSession
TkbmMWSimpleClient
TkbmMWServer
TkbmMWTCPIPIndyServerTransport
TkbmMWPooledSession
TkbmMWDBXConnectionPool
TkbmMWMSSQLMetaData
TkbmMWADOXConnectionPool
TkbmMWCustomConnection
TkbmMWClientIdentity
TkbmMWAccessPermissions
TkbmMWCustomServiceForm
TkbmMWCustomService
TkbmMWBinaryStreamFormat
TkbmMemTable
TkbmMWBinaryStreamFormat
I hope somebody can either consult me on what edition I might be able to use or advise me on installing the precompiled CodeGear edition together with the updated Indy. The Indy version is 10.0.52 downloaded from here: http://www.indyproject.org/Sockets/Download/Files/Indy10.DE.aspx
Again, for record keeping.
CodeGear edition is, in fact a subset of them all, quite close, but not quite as big as Professional. That was actually visible in the Features section of the website.
We did purchase a Professional license and in the end I was able to find a combination of versions of MW and MemTable that compiled on D2007
It was also possible to hack it a little bit in the part of interface with Indy to accomodate for the changes in the newest packages. I won't go into details here, this remains yet to be tested, for now I just know that it all builds together and projects open and compile.
The following question has had me wondering for some time now as to how 3rd party component developers are able to ensure there components are compatible with all the various IDE versions?
I am just a single developer who uses Delphi XE and occasionally Lazarus, if I developed some components in Delphi XE how would I ensure they are compatible up to Delphi XE6 for example, and also compatible with older IDEs?
I don't mean in a coding sense because I believe you use the IFDEF flags when checking the Delphi version numbers. I mean if you don't have access to different Delphi versions how do you test the component?
It is not possible for me right now to purchase XE6 or a new Delphi IDE for a while - if it all, and even if I could I would not have previous IDE's like Delphi 5,6,7 etc.
So how do other component developers do it?
Purchase all the IDEs? which seems unlikely
Download Trials for the IDEs? which also seems unlikely
Get people to test the component if they have another IDE? Seems possible
Make it Open Source and let others test it? Also seems possible unless you want it Close Sourced
What it comes down to is I want to make a few simple components but I want them to be compatible with as many Delphi versions as possible should they ever be released to the public.
I don't have the means to get all the Delphi IDE versions and downloading trials may also not be possible. Even if I bought XE6 or the next release I would not be able to test with Delphi 8 for example.
So, how do 3rd party component developers make there components compatible and tested on various IDEs? Am I missing something obvious here, how can you have access to every Delphi IDE Version?
As a component vendor myself (I am the primary developer of Indy) who needs to support multiple versions, I can only speak for myself, but here is how I do it:
Purchase all the IDEs?
If possible, yes. I have a number of IDE versions installed in VMs, which I use for testing purposes. And for some versions that I do not have installed, I do have their RTL source code for reference purposes, at least. On the other hand, as a member of TeamB, I get free IDE licenses, which helps. Not everyone can afford to purchase every version, although newer versions do provide free licenses for older versions, so you should take advantage of that. I recently installed Delphi 7 through this. If a components works in Delphi 7 and Delphi XE6 then there is a good chance it will work in all versions in between (barring any version-specific RTL bugs, etc).
Download Trials for the IDEs?
N/A for me, but that might be a viable option for some people.
Get people to test the component if they have another IDE?
I do this with Indy. Although I do have several versions, I don't have every version. Other users who have versions I don't have myself do help. If nothing else, for setting up version-specific project files and testing install procedures.
Make it Open Source and let others test it?
This also helps. If you want to develop closed-source components, you could setup a private repository and give access to select users/volunteers. Most users want/need source code (to find and fix bugs when used in their projects, to satisfy corporate policy requirements, etc), so you should make sure you offer an option to pay for source code.
When you buy the latest you get access to all the previous versions (from v7 on - thanks Uwe Raabe)
Previous versions
I am using the first approach: Buy all versions. I have all Delphi versions back to version 3 (from 1997), but only 6 to XE6 are installed on my machine (with the exception of Delphi 8 which in my opinion should better be forgotten). But of course I didn't buy them all at the same time, I started with Delphi 3 and updated from there on.
Unfortunately it becomes more and more complicated to get older versions installed and running on "modern" operating systems (currently Windows 8.1 so far) so sooner or later I will be forced to switch to virtual machines. Not yet, though. Switching to VMs has the drawback that you can't batch compile using different Delphi versions:
call CompileForDelphi6.cmd
call CompileForDelphi7.cmd
etc.
like I do for GExperts.
Just a quick question for those of you that know. Is it possible to have both Delphi (ver 7) and Lazarus installed at the same time. I want to make sure the Lazarus install will not interfere with my current Delphi install in ANY WAY. I would have asked this on the Lazarus fourms but thought I would get quicker reply here.
Anyway if you have both Delphi & Lazarus installed please tell me any problems you have encountered (if any) thanks.
Chris
Lazarus does not interfere with any version of Delphi, they can live along very happily.
The only interference is for commandline building, both projects have a make.exe file which are not the same.
This is easily solvable by not adding FPC to the path (removing it via control-panel system), and do a
set PATH=c:\fpc\2.5.1\bin\i386-win32;%PATH%
or wherever you installed as first line in your batch files.
I generally don't bother, but a previous employer we did a lot of cmdline building with dcc, and then it matters.
File associations are another, but already named. (but not such a big problem since the project extensions vary (.dpr vs .lpr, .dproj vs .lpi) )
Btw: Other development products (cygwin,mingw, and maybe even VS) have their own respective make.exe files and the same kind of problems.
I currently have Delphi 5 and Lazarus both installed on my Windows 7 laptop. As near as I can tell they don't interfere with each other.
I don't really use Lazarus though, as I prefer Delphi 5 which is what I've used forever.
I have Delphi 2006, Delphi 2010 and Lazarus installed. No problems at all. I am sure Delphi 7 will be the same. The only problem I can see could be the use of .pas extension in Lazarus. I mean because of association problems. But you can use a different extension for Lazarus (free pascal) source files. I think the installer asks you that.
I have Lazarus "installed" on a USB drive. It interferes with nothing whatsoever. It is actually a checkout of the Git repository that mirrors the SVN repository. I installed the latest stable FPC to C:\FPC, and then copied that folder to inside my lazarus source folder, e.g. \lazarus\FPC\ (and then uninstalled the C:\FPC installation), and then whenever I like I build the latest lazarus like this:
X:\lazarus\> git fetch
[...fetch messages...]
X:\lazarus\> FPC\2.4.0\bin\i386-win32\make.exe clean all
[...compiler output messages...]
X:\lazarus\> startlazarus
[...IDE starts up...]
The main advantage of this is that if you find an IDE bug, the source is immediately available and you can make and submit a patch instantly.
I need to have my Delphi program use a new version of a third party DLL. I'd like to be able to use the new version but revert to the old version if I need to.
Some of the objects are invisible objects on a form in the app. Others I instantiate at runtime.
How do I install the new version of the DLL into Delphi while maintaining the existing version? I'm using Delphi 2007.
We have several products. Some of them are developed with different versions of Delphi and different versions of external components. (Sometimes porting/upgrading is not an option).
To solve this problem we have (network)shares for each product. And if we start working on a product, we map the standard drive (in our case w:) to that share and start the required version of Delphi. That way each product has its own environment and its own version of the components.
Downside is that you have to kill some popups sometimes, at startup, but the system works fine.
Another solution is to use virtual pc's. But not al licensing systems allow that use.
At runtime (including deployment), you should be able to use Win32 assembly side-by-side sharing (WinSxS) to make the new version of the component available to your application, while letting the rest of the system continue to work with any existing version. Disclaimer: I've never done this in practice.
However, at design time (in Delphi), I think you have no other choice than to work with a specific version at the time, unless they generated new interfaces and coclasses (in which case you can generate different names in the Delphi wrapper) for everything that was changed. Solutions such as those offered by Gamecat would probably be your best bet.