1. Dan Cooperstock
  2. PowerBuilder
  3. Thursday, 18 July 2019

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
Dan Cooperstock Accepted Answer Pending Moderation
0
Votes
Undo

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
Hi Dan, We are updating the product documentation to reflect this.
  1. Armeen Mazda
  2. Thursday, 18 July 2019
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. Mark Lee
  2. Friday, 19 July 2019
There are no comments made yet.
  1. Thursday, 18 July 2019
  2. PowerBuilder
  3. # Permalink
Brad Mettee Accepted Answer Pending Moderation
0
Votes
Undo

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
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. Dan Cooperstock
  2. Friday, 19 July 2019
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. Roland Smith
  2. Friday, 19 July 2019
There are no comments made yet.
  1. Friday, 19 July 2019
  2. PowerBuilder
  3. # 1
Roland Smith Accepted Answer Pending Moderation
0
Votes
Undo

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

http://dependencywalker.com/

 

Comment
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. Dan Cooperstock
  2. Thursday, 18 July 2019
There are no comments made yet.
  1. Thursday, 18 July 2019
  2. PowerBuilder
  3. # 2
Roland Smith Accepted Answer Pending Moderation
0
Votes
Undo

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
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. Dan Cooperstock
  2. Thursday, 18 July 2019
There are no comments made yet.
  1. Thursday, 18 July 2019
  2. PowerBuilder
  3. # 3
Dan Cooperstock Accepted Answer Pending Moderation
0
Votes
Undo

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.
  1. Thursday, 18 July 2019
  2. PowerBuilder
  3. # 4
Chris Pollach Accepted Answer Pending Moderation
0
Votes
Undo

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
I see that ... that's great. FWIW: I tested the PB Packager in Beta3 and it worked for my test apps run-times.
  1. Chris Pollach
  2. Thursday, 18 July 2019
Chris, did your test apps use the TX Text Control option in RTE controls?
  1. Dan Cooperstock
  2. Thursday, 18 July 2019
Yes
  1. Chris Pollach
  2. Friday, 19 July 2019
There are no comments made yet.
  1. Thursday, 18 July 2019
  2. PowerBuilder
  3. # 5
  • Page :
  • 1


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