Child pages
  • High DPI screen support
Skip to end of metadata
Go to start of metadata

Until java 9 (which should have full support for high dpi screens) a tweak must be done on the client system that runs the SmartClient, what works for now is forcing first windows to use an external manifest:

 

Press Windows Logo key + R to open a Run. Type in regedit and press Enter.

2016-01-01_152820

In the left pane of the Registry Editor, navigate to the following directory:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion

Click on SideBySide in the left pane to expand its contents in the right pane. Right-click on an empty space in the right pane, hover over New and click on DWORD (32-bit) value.

2016-01-01_153216

Name the file PreferExternalManifest and press Enter. Right-click the new DWORD value and click on Modify. Type into the Value Data. Change the value’s Base to Decimal.  Click on OK. Close the Registry Editor.

2016-01-01_153330

 

Then create a xxxx.exe.manifest file with the following content:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">

<dependency>
  <dependentAssembly>
    <assemblyIdentity
      type="win32"
      name="Microsoft.Windows.Common-Controls"
      version="6.0.0.0" processorArchitecture="*"
      publicKeyToken="6595b64144ccf1df"
      language="*">
    </assemblyIdentity>
  </dependentAssembly>
</dependency>

<dependency>
  <dependentAssembly>
    <assemblyIdentity
      type="win32"
      name="Microsoft.VC90.CRT"
      version="9.0.21022.8"
      processorArchitecture="amd64"
      publicKeyToken="1fc8b3b9a1e18e3b">
    </assemblyIdentity>
  </dependentAssembly>
</dependency>

<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
  <security>
    <requestedPrivileges>
      <requestedExecutionLevel
        level="asInvoker"
        uiAccess="false"/>
    </requestedPrivileges>
  </security>
</trustInfo>

<asmv3:application>
  <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
    <ms_windowsSettings:dpiAware xmlns:ms_windowsSettings="http://schemas.microsoft.com/SMI/2005/WindowsSettings">false</ms_windowsSettings:dpiAware>
  </asmv3:windowsSettings>
</asmv3:application>

</assembly>

 

That first xxxxx part of the manifest needs to be of the exe file you want to have an external manifest

For the smartclient this means java, and then in particular the java webstart launcher file

so go to the java installation folder, mostly located in a location like this:

C:\Program Files\Java\jre1.8.0_111\bin


And then copy the manifest above to files like: jp2launcher.exe.manifest, javaws.exe.manifest, java.exe.manifest and javaw.exe.manifest

So all those exe files have a manifest file right besides it.


There can be 1 problem with this is and that is that the next release of Windows 10 doesn't support this external manifest setting anymore (it ignores the above registry setting). For me the current slow ring build of Windows 10 (beta release build of 14986 seems to broke this). 

If that is the case then this can be only fixed by adjusting the manifest file inside the exe file, you need tools for this like ResourceTuner: http://www.restuner.com/

With that you can open the exe file an then adjust the manifest that the exe file has and change the  ms_windowsSettings:dpiAware section if it has it to false (there should be a true then). If it doesn't have such a section copy the above manifest contents and replace it fully.

  • No labels