Executables are not compatible with Vista and higher

From Liberty BASIC Family
Revision as of 03:03, 11 October 2023 by StPendl (talk | contribs) (1 revision imported)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Description

The LB Editor and Runtime Engine executables are not compatible with Vista and higher, so virtualization is enabled for them. To resolve this issue one needs to add an additional property to the manifest.

Example code to demonstrate the bug.

See Step 6: Create and Embed an Application Manifest (UAC) for further details.

Example code to work around the bug.

Manifest for the Editor

Can be saved as liberty.exe.manifest or lbpro.exe.manifest in the folder where the executable resides.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
    <assemblyIdentity
        version="4.0.4.0"
        name="Liberty BASIC"
        processorArchitecture="x86" 
        type="win32"
    />
    <description>Liberty BASIC IDE</description>
    <dependency>
        <dependentAssembly>
            <assemblyIdentity
                type="win32"
                name="Microsoft.Windows.Common-Controls"
                version="6.0.0.0" 
                processorArchitecture="x86" 
                publicKeyToken="6595b64144ccf1df"
                language="*"
            />
        </dependentAssembly>
    </dependency>
    <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
        <security>
            <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
                <requestedExecutionLevel
                    level="asInvoker"
                    uiAccess="false"
                />
            </requestedPrivileges>
        </security>
    </trustInfo>
</assembly>

Manifest for the Runtime Engine

Can be saved as run404.exe.manifest or {your name}.exe.manifest in the folder where the executable resides.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
    <assemblyIdentity
        version="4.0.4.0"
        name="Liberty BASIC"
        processorArchitecture="x86" 
        type="win32"
    />
    <description>Liberty BASIC Runtime Engine</description>
    <dependency>
        <dependentAssembly>
            <assemblyIdentity
                type="win32"
                name="Microsoft.Windows.Common-Controls"
                version="6.0.0.0" 
                processorArchitecture="x86" 
                publicKeyToken="6595b64144ccf1df"
                language="*"
            />
        </dependentAssembly>
    </dependency>
    <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
        <security>
            <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
                <requestedExecutionLevel
                    level="asInvoker"
                    uiAccess="false"
                />
            </requestedPrivileges>
        </security>
    </trustInfo>
</assembly>