Hello everyone,
We have been creating our programs with ORCA for years - more or less without any problems.
Now we have switched to PB version 2022/R3 Build 3356 and have the problem that the EXE we created no longer works.
If we look at the EXE file in an editor, we can see that the entry in the manifest information area is not correct.
The attributes "level" and "uiAccess" of the entry "requestedExecutionLevel" are no longer written correctly.
EXE file created with the PB version 2022/R3 Build 3356:
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
version="1.0.0.0"
processorArchitecture="x86"
name="Sybase.PB"
type="win32"
/>
<description>PowerBuilder</description>
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="x86"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>
<ms_asmv3:trustInfo xmlns:ms_asmv3="urn:schemas-microsoft-com:asm.v3">
<ms_asmv3:security xmlns:ms_asmv3="urn:schemas-microsoft-com:asm.v3">
<requestedPrivileges>
<requestedExecutionLevel level="?????½??" uiAccess="">
</requestedExecutionLevel>
</requestedPrivileges>
</ms_asmv3:security>
</ms_asmv3:trustInfo>
</assembly>
The header file "pborca.h" states that the structure "pborca_exeinfo" contains the parameter "lpszManifestInfo".
/* ************************************************************************************* */
/* Structure to pass executable version information to PBORCA_ExecutableCreate */
/* ************************************************************************************* */
typedef struct pborca_exeinfo
{
LPTSTR lpszCompanyName;
LPTSTR lpszProductName;
LPTSTR lpszDescription;
LPTSTR lpszCopyright;
LPTSTR lpszFileVersion;
LPTSTR lpszFileVersionNum;
LPTSTR lpszProductVersion;
LPTSTR lpszProductVersionNum;
LPTSTR lpszManifestInfo;
pborca_exeinfo()
{
lpszCompanyName = NULL;
lpszProductName = NULL;
lpszDescription = NULL;
lpszCopyright = NULL;
lpszFileVersion = NULL;
lpszFileVersionNum = NULL;
lpszProductVersion = NULL;
lpszProductVersionNum = NULL;
lpszManifestInfo = NULL;
}
} PBORCA_EXEINFO;
We have been filling the parameter with the value "1,asInvoker,0" for years.
The first element "GenerateOptions" value set to "1".
The second element "ExecutionLevel" value set to "asInvoker".
The third element "AllowAccessToProtectedSystemUI" value set to "0" (false).
As you can see, the information has been written correctly to the EXE so far (PB 2021 Build 1509):
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
version="1.0.0.0"
processorArchitecture="x86"
name="Sybase.PB"
type="win32"
/>
<description>PowerBuilder</description>
<dependency>
<dependentAssembly>
<assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="X86"
publicKeyToken="6595b64144ccf1df"
language="*"
/>
</dependentAssembly>
</dependency>
<ms_asmv3:trustInfo xmlns:ms_asmv3="urn:schemas-microsoft-com:asm.v3">
<ms_asmv3:security xmlns:ms_asmv3="urn:schemas-microsoft-com:asm.v3">
<requestedPrivileges>
<requestedExecutionLevel level="asInvoker" uiAccess="false">
</requestedExecutionLevel>
</requestedPrivileges>
</ms_asmv3:security>
</ms_asmv3:trustInfo>
</assembly>
Does anyone know how to call the ORCA function "ExecutableCreate" with the manifest information?
Does anyone know if there is any documentation on how to fill the parameters of the "pborca_exeinfo" structure?
Can anyone help in any way?
Thank you very much.