1. Gerrit Bruns
  2. PowerBuilder
  3. Monday, 24 January 2022 15:30 PM UTC

Hi,

when I change the runtime in PB 2021 IDE to a runtime from PB 2019 R3, the IDE is not using the standard pb.ini.

PB 2021 IDE with runtime 21.0.0.1311
    pb.ini: C:\Users\*****\AppData\Local\Appeon\PowerBuilder 21.0\pb.ini
    If the Initialization Path ist changed, then it is using the pb.ini at that location.

    On startup the IDE is reading the InitPath from reg (HKEY_CURRENT_USER\SOFTWARE\Sybase\PowerBuilder\21.0) and using the pb.ini at that location

PB 2021 IDE with runtime 19.2.0.2703
    At the moment we found two different scenarios on different PC's
    Scenario one:
    pb.ini: C:\Users\******\AppData\Local\VirtualStore\Program Files (x86)\Appeon\PowerBuilder 21.0

    On Startup the IDE is directly using that pb.ini.
    At some point it is reading the InitPath from reg at HKEY_CURRENT_USER\SOFTWARE\Sybase\PowerBuilder\19.0 and ignores the path

    Scenario two:
        pb.ini: C:\Program Files (x86)\Appeon\PowerBuilder 21.0\pb.ini (Installation directory)

        On Startup the IDE does not read the InitPath. It is directly using the pb.ini from the installation-directory.
        In this case every change in the IDE which affects the pb.ini is saved in the pb.ini at that location.

    or, if C:\Program Files (x86)\Appeon\PowerBuilder 21.0\pb.ini is not there (renamed)
        pb.ini: C:\Users\******\AppData\Local\Appeon\PowerBuilder 19.0\pb.ini

        On Startup the IDE is trying to access the pb.ini in the installation-directory. Which isn't there.
        Then it is reading the InitPath from reg at the PB2019 location (HKEY_CURRENT_USER\SOFTWARE\Sybase\PowerBuilder\19.0) and is using the ini at that location.

The Initialization Path has no effect when the PB 2019 R3 runtime is used.

The documentation does not mention the use of more than one pb.ini for each user.

In our opinion it is good that the IDE is using at least two different pb.ini files when using different runtimes.
With that we can easily use one IDE for work in progress Version of our projekts with the new runtime and do maintenace on other Verions with the old runtime.
Since the last used workspace is stored in the pb.ini we can just restart the IDE after switching and the correct workspace with the correct targets is automatically opened.

However, the behavior doesn't seem right, so here are a few questions.

Which Scenario is the intended one?
Why is none of them mentioned in the documentation?
Should the PB2021 IDE use the pb.ini from the PB2019 IDE?
Should the InitPath also work with another runtime than the latest one?
Why are there two different behaviors on different PC's?

Regards,
Gerrit Bruns

Tracy Huang @Appeon Accepted Answer Pending Moderation
  1. Tuesday, 25 January 2022 09:00 AM UTC
  2. PowerBuilder
  3. # 1

HI Gerrit,

The PB.INI file is supposed to work in the following way when PB 2021 IDE works with Runtime 19.2.0.2703. Note that if IDE 2019 R3 is also installed, IDE 2021 may use PB.INI from 2019 R3 if it cannot find PB.INI from the installation path. 

Please let us know whether this table answers your questions. And we plan to add this table to user document later.

Regards

Tracy

 

PB.INI used by IDE startup

Initialization Path for each user

If IDE 2019 R3 is installed

First search in the 2021 path, for example, C:\Program Files (x86)\Appeon\PowerBuilder 21.0\pb.ini.

If not found, then search in the path recorded in the Windows registry corresponding to the runtime version, for example, C:\Users\[username]\AppData\Local\Appeon\PowerBuilder 19.0\pb.ini

The default initialization path is determined by the current IDE, for example,

C:\Users\[username]\AppData\Local\Appeon\PowerBuilder 21.0\pb.ini

If IDE 2019 R3 is NOT installed

Search in the 2021 path, for example, C:\Program Files (x86)\Appeon\PowerBuilder 21.0\pb.ini.

If not found, PB.INI will be recreated in the 2021 path when IDE restarts.

Comment
  1. Tracy Huang @Appeon
  2. Wednesday, 26 January 2022 03:22 AM UTC
Hi Gerrit,

If IDE has no writing permissions to the installation path, IDE cannot start. There will be a message saying "Initialization file is not writable. Cannot continue."

In your case, it is probably some rules have been set up to map to the users VirtualStore directory?



Regards

Tracy
  1. Helpful
  1. Gerrit Bruns
  2. Wednesday, 26 January 2022 10:51 AM UTC
Hi Tracy,

according to Microsoft, the VirtualStore directory is used when the UAC is enabled and an application, that is not started with admin-rights, want's to write a file in it's installation directory but the UAC doesn't allow it.

For example the directory C:\Program Files (x86) and everything in there is under control of the UAC by default. If you didn't change the permissions you need admin-rights to write in that folder. As long as an application isn't started as administrator, it is unable to write in that location or has the ability to ask for admin-rights, like the File-Explorer from windows. For example, if you navigate to that directory and you try to rename a file or directory, you get an additional question from windows. Unless you accept it, you are unable to do the operation, as long as the current user has admin rights. A user without admin rights is unable to perform that operation.



Some examples, that we had, for the behavior of PB 2021 IDE regarding the use of pb.ini, when a PB 2019 R3 runtime is used.

Situation:

- UAC enabled

- PB installed at the default location C:\Program Files (x86)\Appeon

- default rights on C:\Program Files (x86)\Appeon

- pb.ini exist at the default location C:\Program Files (x86)\Appeon\PowerBuilder 21.0\pb.ini

- PB 2019 R3 runtime is used

- PB is started without admin-rights

Outcome:

- PB trys to write C:\Program Files (x86)\Appeon\PowerBuilder 21.0\pb.ini

- Has no right to do that

- Windows creates a copy of C:\Program Files (x86)\Appeon\PowerBuilder 21.0\pb.ini at C:\Users\*****\AppData\Local\VirtualStore\Program Files (x86)\Appeon\PowerBuilder 21.0 and writes the file at that location

- As long as the rights for C:\Program Files (x86)\Appeon\PowerBuilder 21.0\pb.ini don't change, PB is redirected to the pb.ini in the VirtualStore directory

- The PB 2019 R3 pb.ini exist at it's default location and the InitPath in registry is set for PB 2019 R3, but never used.



Situation:

- UAC enabled

- PB installed at the default location C:\Program Files (x86)\Appeon

- default rights on C:\Program Files (x86)\Appeon

- pb.ini is not at the default location C:\Program Files (x86)\Appeon\PowerBuilder 21.0\pb.ini (for example, renamed)

- PB 2019 R3 runtime is used

- PB is started without admin-rights

Outcome:

- PB trys to read C:\Program Files (x86)\Appeon\PowerBuilder 21.0\pb.ini

- no pb.ini found

- PB searches for InitPath of PB 2019 in the registry

- InitPath variable exist: PB is using the pb.ini at that location

- InitPath variable is not there: PB creates the InitPath variable for PB 2019 with the default directory for the user-defined pb.ini and creates the file at that location



Regards,

Gerrit
  1. Helpful
  1. Tracy Huang @Appeon
  2. Thursday, 27 January 2022 06:37 AM UTC
Hi Gerrit,

Thank you for the great details and examples! I will pass the information to developer for analysis.



Regards

Tracy
  1. Helpful
There are no comments made yet.
Chris Pollach @Appeon Accepted Answer Pending Moderation
  1. Tuesday, 25 January 2022 16:23 PM UTC
  2. PowerBuilder
  3. # 2

Hi Tracy;

  This is where Gerrit's observation is actually quite valid and the PB IDE compiling an older PB App & runtime can get inappropriately handled.

For example in PB2019Rx, I use the following PB.ini settings for that IDE release ...

[Data Window]
GenerateWSAssembliesOnCompile=YES
debug_ws_metadata=1

[JavaVM]
CreateJavaVM=0

[PB]
CODEGENTEMP=G:\PB\CplusPlus

Whereas, I use different settings in my PB.INI for the PB2021 IDE. So having the current PB IDE drop back to the proper PB.ini location for the PB runtime build that I am compiling for is actually, quite critical for proper App generation. Note that this requirement is also needed for the new PBAutoBuild utility as well (MHO). Food for thought.

Regards ... Chris

 

 

Comment
  1. Tracy Huang @Appeon
  2. Wednesday, 26 January 2022 03:23 AM UTC
Hi Chris,

Thank you for the suggestion! I will pass it to the engineering team.



Regards

Tracy
  1. Helpful 1
There are no comments made yet.
Chris Pollach @Appeon Accepted Answer Pending Moderation
  1. Monday, 24 January 2022 21:10 PM UTC
  2. PowerBuilder
  3. # 3

Hi Gerrit;

  You have an excellent point .. the PB.ini used is the one that the IDE version is set for and not the PB build that you select within that IDE!

Regards ... Chris

Comment
There are no comments made yet.
Olan Knight Accepted Answer Pending Moderation
  1. Monday, 24 January 2022 21:26 PM UTC
  2. PowerBuilder
  3. # 4

Sounds like a bug to me.

Isn't one of the main purposes of the PB.INI file to be able to do exactly what you are attempting? Which means that at the very least there should be an option in the compiler or the project file that allows you to specify which INI file is to be used during runtime, and that this setting would override the standard/default behavior of PB to use the pb.ini associated with the runtime selected.

I'm assuming here that any and all options specified within the PB.INI file will work correctly in either versionof the PB runtime that is specified.

Comment
  1. Gerrit Bruns
  2. Tuesday, 25 January 2022 08:43 AM UTC
At runtime from a compiled exe, a pb.ini is used at the location of the exe-file. Or at least that was the case when we last used it. At the moment we are not using a pb.ini for applications, only for the PB IDE.

Since that behavior already was different from the PB IDE, my guess would be that they didn't change that.
  1. Helpful
There are no comments made yet.
Miguel Leeuwe Accepted Answer Pending Moderation
  1. Wednesday, 26 January 2022 12:43 PM UTC
  2. PowerBuilder
  3. # 5

In my opinion this is going to cause a lot of problems, it's flaky, prone to errors and pretty much unpredictable behavior for mortal developers. Can't this be improved by simply always reading/writing the pb.ini to the same location? Like always writing to the AppData\... folder?

regards,

Great post BTW Gerrit!

Comment
There are no comments made yet.
Olan Knight Accepted Answer Pending Moderation
  1. Wednesday, 26 January 2022 14:18 PM UTC
  2. PowerBuilder
  3. # 6

Having re-read this thread it seems to me that there are two distinct uses for the PB.INI file:  one use is with the IDE and one is for RUNTIME. Two uses for the same file may not be the direction to pursue.

Perhaps having two separate file file, like PB_IDE.INI and a PB_RUNTIME.INI,. might be a cleaner and much safer option.

U

Comment
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.