Log In    |    Knowledge Base    |    4D Home
Tech Tip: Removing externals embedded in a Windows 4D database structure
Published On: May 12, 2000

Before 4D version 3.2.5, plug-ins were known as "externals," and they were installed by using the "External Mover" utility that physically merged them into the structure file. In May, 1995, 4D 3.2.5 introduced a new "plug-in" architecture, where plug-ins are kept outside of the structure as separate files in a Mac4DX folder. For the sake of backwards compatibility, the old method of installing externals in the structure still worked.

With the introduction of version 3.5, 4D now ran on the Windows platform as well as Macintosh. The Windows and Macintosh versions of plug-ins were now required to be stored in respective Win4DX and Mac4DX folders. In some databases that had originally been developed on a Macintosh, forgotten Macintosh externals remained embedded in the structure.

If you have any old externals installed in a database structure that has been converted to 4D v6 or higher, they can cause all sorts of strange problems.

If you find you do have externals in a Windows 4D database and you want to get rid of them, there's an easy "brute force" way to do that. This technique assumes that you do not have any custom resources installed that you need to keep.

1. Back up your entire database.

2. Use 4D to create a brand new empty database structure.

3. Rename the .RSR file of the empty database's structure to have the exact same name as the .RSR file of your regular structure.

4. Move this new .RSR file into the folder of your regular database, replacing the old .RSR file.

5. When you start your regular database up for the first time after this, hold down the Alt key. (If there's a password dialog, hold down the Alt key as you close that dialog.) Holding down the Alt key will cause 4D to display an additional dialog that prompts you to select the data file to be used with your structure. You need to do this because one of the resources copied from the empty database is the string holding the path to the associated structure.

6. Test to make sure that the database is behaving as it should: that you haven't lost any custom resources the database needs (that a developer may have previously installed).