1. Daniel Vivier
  2. PowerBuilder
  3. Thursday, 18 July 2019 18:02 PM UTC

I'm trying for the first time to create a PB 2019 version of one of our applications, and deploy it to a computer that doesn't have the IDE installed, with our installer, which I have of course modified to install the correct PB 2019 DLLs.

The app just dies when I run it (after appropriately prompting for a password). When I run it with /pbdebug, it crashes just before it was about to create a control on a window that is a user object inherited (2 levels deep) from DataWindow. (I know this because I compared its debug log to one on my computer with the IDE on it, where the app works, and saw what the next line was after the place the other computer's debug log stopped.)

I have very carefully reviewed the Help on Deployment, and feel that I have included all of the necessary DLLs.

HOWEVER, when I then copy over all other files matching PB*190.dll from C:\Program Files (x86)\Appeon\Shared\PowerBuilder on my development machine, the app starts fine.

Which makes me think either there is something unobvious in the Help that I am missing (about a file or files that I need) or a bug in the Help, omitting telling us about a file that is needed.

I was already including pbtheme190.dll, even though we aren't using themes, based on a posting a saw from Roland Smith saying you should do that to avoid slow-downs. But whether it was there or not, the app didn't run until I copied over all of the other files.

Thoughts? Thank you.

Accepted Answer
Daniel Vivier Accepted Answer Pending Moderation
  1. Thursday, 18 July 2019 18:28 PM UTC
  2. PowerBuilder
  3. # Permalink

OK, I solved it by a laborious process of elimination.

I need to point out that the first window in our app, which it was in the process of loading when it died, has a RichTextEdit control on it. We chose to switch back to the TX Text control, rather than using the default TE Edit control.

When we added PBRTC190.dll, which the Help says is only needed for the TE control, not the TX control, the app started, but the following was displayed in the body of the RTE control:

"Cannot load the Rich Text Edit Control because the specific file cannot be found.
pbtxtext190.dll: Built-in TX Text Control"

The Help also says that that is part of the TE control, not the TX control. But when I add that back in, that message goes away, the RTE works, and all is good.

So the bottom line is that PBRTC190.dll and PBTXTEXT190.dll are both needed when using the TX Text Control (presumably along with all of the other ones listed as needed for that, namely the ones matching tp*.*). I don't know whether or not they are also needed for the TE control.

Comment
  1. Armeen Mazda @Appeon
  2. Thursday, 18 July 2019 21:23 PM UTC
Hi Dan, We are updating the product documentation to reflect this.
  1. Helpful
  1. Mark Lee @Appeon
  2. Friday, 19 July 2019 09:08 AM UTC
Hi Dan,

You are right. Currently the PBRTC190.DLL and PBTXTEXT190.DLL are both needed when using the TX Text Control.

We need to modify the documentation about this. And we will change help documentation like this:



Rich text support with TE Edit Control:

For 32-bit:

pbrtc190.dll, PBTCTEXT190.dll, TER25.dll, WRS9.dll, spell32.dll, PDC32.dll, WRW9.dll, HTS20.DLL, ssts.dll, SSGP.dll, TXML2.dll

For 64-bit:

pbrtc190.dll



Rich text support with the OEM version of TX Text Control:

pbrtc190.dll, PBTXTEXT190.dll, tp4ole15.ocx, tp15.dll, tp15_bmp.flt, tp15_css.dll, tp15_doc.dll, tp15_dox.dll, tp15_gif.flt, tp15_htm.dll, tp15_ic.dll, tp15_ic.ini, tp15_jpg.flt, tp15_obj.dll, tp15_pdf.dll, tp15_png.flt, tp15_rtf.dll, tp15_tif.flt, tp15_tls.dll, tp15_wmf.flt, tp15_wnd.dll



Regards,

Mark Lee

  1. Helpful
There are no comments made yet.
Brad Mettee Accepted Answer Pending Moderation
  1. Friday, 19 July 2019 13:48 PM UTC
  2. PowerBuilder
  3. # 1

If you suspect missing files being a startup issue, Process Monitor will show which files are missing when the app tries to load them and can't find them. It also works well if you think you're loading DLLs from the wrong location (it displays the load paths too).

 

Comment
  1. Daniel Vivier
  2. Friday, 19 July 2019 14:37 PM UTC
OK, Brad, I got that Process Monitor to work, though it was hard to figure out how to do so. I finally found https://codeproject.com/Articles/560816/Troubleshooting-dependency-resolution-problems-usi that gave me what I needed to know to do it.

I still don't exactly see why the PB code couldn't be trying to capture failed DLL loads and report them. Surely it's not that hard to write some sort of cover function for loading DLL libraries that catches failures and acts on them?
  1. Helpful
  1. Roland Smith
  2. Friday, 19 July 2019 14:40 PM UTC
I used the ListDLLs utility. It is a batch program so I ran it from the DOS box and directed the output to a file:
  1. Helpful
There are no comments made yet.
Roland Smith Accepted Answer Pending Moderation
  1. Thursday, 18 July 2019 20:40 PM UTC
  2. PowerBuilder
  3. # 2

Depends utility can help, it will tell you all the linked dlls.

http://dependencywalker.com/

 

Comment
  1. Daniel Vivier
  2. Thursday, 18 July 2019 21:15 PM UTC
Thanks, Roland, but I tried that on my executable and it wasn't really much help. First of all, it gave quite a few error messages. Also, the only PB*190 DLLs it showed as required were PBVM190.DLL, PBUIS190.DLL and PBSHR190.DLL. Everything else was Windows API DLLs, plus things like MSVCR100.DLL etc.

So that would not have solved my problem of the program crashing because it was trying to open a PB DLL that the docs said was only needed for the TE RTE but was actually also needed for TX.
  1. Helpful
There are no comments made yet.
Roland Smith Accepted Answer Pending Moderation
  1. Thursday, 18 July 2019 19:46 PM UTC
  2. PowerBuilder
  3. # 3

There are mistakes in the Help file regarding required files. In particular the themes file is required even when not in use and the RichText control also requires files it doesn't need.

I *think* they are going to update the help until they can get the dll dependency issues corrected.

 

Comment
  1. Daniel Vivier
  2. Thursday, 18 July 2019 19:58 PM UTC
Wouldn't it be good if the program gave an error message (or at least wrote something into a debug file if running with /pbdebug) on a missing required DLL? It doesn't seem to me that ought to be too hard to code. It already happens with missing PBDs, objects in PBDs, etc.
  1. Helpful
There are no comments made yet.
Daniel Vivier Accepted Answer Pending Moderation
  1. Thursday, 18 July 2019 18:31 PM UTC
  2. PowerBuilder
  3. # 4

I now see that there was a previous post by Roland Smith that more or less explains this, but in less detail. He said he had opened a bug report about it.

Comment
There are no comments made yet.
Chris Pollach @Appeon Accepted Answer Pending Moderation
  1. Thursday, 18 July 2019 18:30 PM UTC
  2. PowerBuilder
  3. # 5

Hi Dan;

   Have you tried using the PB Packager Utility and then installing that to a "dummy" folder. From there, look at all the DLL names in the "dummy" folder & compare that to what your installer is using. Maybe the missing DLL name (or two) will "pop out" at you.

HTH

Regards .... Chris

Comment
  1. Chris Pollach @Appeon
  2. Thursday, 18 July 2019 20:01 PM UTC
I see that ... that's great. FWIW: I tested the PB Packager in Beta3 and it worked for my test apps run-times.
  1. Helpful
  1. Daniel Vivier
  2. Thursday, 18 July 2019 21:08 PM UTC
Chris, did your test apps use the TX Text Control option in RTE controls?
  1. Helpful
  1. Chris Pollach @Appeon
  2. Friday, 19 July 2019 13:40 PM UTC
Yes
  1. Helpful
There are no comments made yet.
  • Page :
  • 1


There are no replies made for this question yet.
However, you are not allowed to reply to this question.