Jump to content
Excelsior Forums
Sign in to follow this  
mhoeffner

"JET RT" DLLs with recompiled executables

Recommended Posts

Config:

- JET Pro 3.5 MP3

- JDK 1.3.1_11

- No JetPerfect

- JRE-less

- Third party installer with single root

I have multiple JET-compiled executables and DLLs that I am distributing which reside in the same directory. ?Within that directory, JetPack produces "JET RT/xkrn35039.dll" and "JET RT/xsrs35039.dll". ?If I recompile an executable with the same JRE, do I need to redistribute the files in the "JET RT" directory? ?The "JET RT" DLLs always seem to have the file size and timestamp and I'm assuming that JetPack just copies them from JET\bin.

Unfortunately I have encountered occasional problems with redistributing the freshly compiled executable and not the JET DLLs. ?The error is "Unable to find/load XKRN353039.DLL (referenced from C:\...\foo.exe)". ?This occurs when "JET RT\xkrn35039.dll" is clearly in the same directory as foo.exe. ?Could this have something to do with the case of the filename (the error message is all caps)? ?Or could it be that for some reason foo.exe didn't know to look in the "JET RT" directory. ?Should I add the JET RT directory using -Djava.library.path? ?This problem didn't occur on the computer that has JET installed, but that was probably because xkrn35039.dll was in my PATH in JET\bin.

Hopefully this isn't overly confusing. ?Basically I guess I just need to know if JetPack makes any changes to the compiled executables/DLLs or to the xABC12345.DLLs. ?It appears to just copy them over but that doesn't explain the missing DLL problem. ?If I have multiple EXEs, can I just recompile one of them and redistribute it?

Also, this isn't directly related, but is there a way that I can force JetPack to include xsrs35039.dll in my distribution? ?The only way that I can get it included now is by doing a trial run every time.

Share this post


Link to post
Share on other sites

Hi,

If you want your new executable to reuse the already-installed JET RT DLLs, you must create an 'update' package adding that executable.

Regarding the xsrs DLL, you may force any RT DLL to be included into the package. For doing this, go to the Step 5 (JET RT) in JetPackII, select 'Show all components' checkbox, and select the checkbox corresponding the required DLL in the list appeared (XSRS in your case).

However, performing trial run before packaging remains strongly recommended.

Share this post


Link to post
Share on other sites

If you want your new executable to reuse the already-installed JET RT DLLs, you must create an 'update' package adding that executable.

Here's a quote from Knowledge Base Article 17 (http://www.excelsior-usa.com/kb/000017.html):

To summarize, if you have created a JRE-independent executable using JetPerfect, the installation process can be as simple as just copying the application to the target system. If that is not the case, additional files have to be copied and executable patching may be required.

My executables are JRE-less but I am not using JetPerfect. ?My installation is single root. ?The executables may be in different directories based on where they are installed by the user, but the JET RT DLLs are always the same two (krn and srs) and they always reside in the "JET RT" directory where the executables are. ?For example:

C:\dir\foo.exe

C:\dir\bar.exe

C:\dir\JET RT\xkrn35039.dll

C:\dir\JET RT\xsrs35039.dll

It is necessary for me to mess with xbind? ?I'm not looking forward to the messy process of having to code my self-updating application to create xbind redirection scripts...

Not using an updateable package in JetPack has worked for me on all but one occasion, but the problem may have been due to another mistake that I made. ?I just want to make sure that not using an updateable package should work in this very specific scenario.

Thanks for your time.

Share this post


Link to post
Share on other sites

If I can get around using xbind, should I still run the executables through an 'update' package?  Does JetPack alter them in any way or does it just copy them and create the appropriate xbind script?  The file sizes and timestamps on the executables don't appear to change.

Share this post


Link to post
Share on other sites

OK, I see. Let's try another variant.

If new executable to be added uses no new JET RT DLLs, than you may create new .jpn project with exactly the same location of 'JET RT' folder, choose the same options in JetPackII (i.e. jre-less, 3rd-party installer), and create the package. Then, you may copy only the new executable from the created distributive folder, omitting JET RT DLLs. But, again, the trick works until new executable does not use JET RT DLLs not already present on the target machine.

Share this post


Link to post
Share on other sites

When you say "new executable", I assume that you mean an updated executable (a recompiled version of one that was already installed.)

If so, excellent.  That's what I had been doing and was hoping to continue doing.  It seemed to be working fine until just one time when the "Unable to find/load XKRN353039.DLL" error occurred.  I'm guessing now that I probably just made a stupid mistake and copied a file incorrectly.

Last related question: Do I actually need to create a whole new .jpn with the same settings or can I just use the same .jpn?

Thanks again for your help!

Share this post


Link to post
Share on other sites

I think you can use the same .jpn project. By 'new executable' I mean that the shceme should work both for recompiled executables and for really new ones.

Share this post


Link to post
Share on other sites
Sign in to follow this  

×