FMXTMSFNCWXPackPkgDXE14.bpl cannot be loaded

I've installed the WX and a few others package via subscription manager and get the following errors on startup. I realize this must be a library path issue but I cannot figure out what is going on. I've done everything I can to shrink the size of my library paths for Win32 and Win64 but they are still quite long (over 5,000 characters).

I also noticed that these don't actually have Win32 versions. Why is that?

Can't load package C:\Users\Public\Documents\Embarcadero\Studio\22.0\Bpl\FMXTMSFNCWXPackPkgDXE14.bpl.

Can't load package

Can't load package C:\Users\Public\Documents\Embarcadero\Studio\22.0\Bpl\TMSFNCWXPackPkgDEDXE14.bpl.

Can't load package C:\Users\Public\Documents\Embarcadero\Studio\22.0\Bpl\TMSMemInsightPkgDXE14.bpl.

Can't load package C:\Users\Public\Documents\Embarcadero\Studio\22.0\Bpl\TMSMemInsightPkgDEDXE14.bpl.

Can't load package C:\Users\Public\Documents\Embarcadero\Studio\22.0\Bpl\FMXTMSFNCWebSocketPkgDXE14.bpl.

Can't load package C:\Users\Public\Documents\Embarcadero\Studio\22.0\Bpl\VCLTMSFNCWebSocketPkgDXE14.bpl.

Can't load package C:\Users\Public\Documents\Embarcadero\Studio\22.0\Bpl\TMSFNCWebSocketPkgDEDXE14.bpl.

Please send the installer generated log file by direct email (log file contains sensitive information that should NOT be published here!) so we can investigate what exactly goes wrong on your machine to compile the packages.

Sent, thank you!

Email received & answered.

For anyone looking for an answer, basically the search path was too long.

I resolved this by taking the following steps. I believe that only the moving of TMS packages to a shorter path actually helped but this is exactly what I did in order to determine that basically. I also like using the environment variables in my search path because it makes it much easier to manage and recognize when something hasn't been reviewed by me (because it doesn't use a variable).

  1. Uninstall all packages that are failing to load via Add / Remove Programs.
  2. Find all common runs of directories in the search path and create environment variables for each one in System Properties. I ended up with:
MAD_PATH=C:\Program Files (x86)\madCollection
  1. Additionally, for the TMS_PATH above, I ended up moving this to the cited directory from here:

  2. Then I created a junction to the new path like so:

REM In CMD prompt:
MKLINK /J D:\Dev\Embar\Packages\TMS C:\Users\Isaac\AppData\Local\tmssoftware\registered 

** Note: I had previously tried installing all packages from TMS only to this path in the D: drive and ran into a strange issue where some packages seemed to have internal semi-hardcoded references to the AppData\...\registered path. I think having the junction resolves this issue because the files are all available at both paths.

  1. Finally, I copied the single line version of the library search path from Options in Delphi and pasted into Visual Studio Code, where you can include newline returns in the Search & Replace command and did the following steps:

  2. Replace all ";" with ";<Shift+Enter>"

  3. Replace all values above with their variable expansions; e.g. replace C:\Users\Isaac\AppData\Local\tmssoftware\registered with $(TMS_PATH)

  4. Replace all ";<Shift+Enter>" with ";" (you have to copy the replacement into the search field, it won't actually let you press Shift+Enter in the search field like it does in the replacement field, very weird)

  5. Copy the single line back into Delphi's Options search path

  6. Click the edit button for the search path

  7. Verify no paths are greyed out unexpectedly

  8. Verify that build scripts and Delphi interactive builds still run correctly after closing all terminal windows and all Delphi windows and reopening

  9. Reinstall the failed packages. They can be found at C:\Users\Isaac\AppData\Local\tmssoftware and run directly (I plan to automate this step but haven't gotten around to it). I did install these new packages directly to the D: drive this time.

  10. Edit the search path for new packages to use the environment variable $(TMS_PATH) instead of the hard coded base path

Hopefully this helps someone else in the future! Or even more likely, myself when I forget about this!

1 Like