Windows Server Core is windows server running with the “Desktop Experience”. This means there is no desktop, no file exporter, etc. Basically, you manipulate the server from a command prompt and powershell.
You can run a program with a UI like notepad and it works fine, so it doesn’t really mean no GUI. It means no built-in Windows GUI.
I wanted to run a nettalk server as a service on this type of Windows Server installation.
I found the program never launches, either from the command line as a non-service or running as a service.
I did some experimenting and this is what I found.
I have an old utility written in Clarion 5.5. This utility runs OK.
I wrote the following little program.
TestString cstring('Hello world')
This program works when compiled in LIB mode but fails when compiled in DLL mode. This is true even if I drop the TestWindow procedure so there is no window in the program at all. In that case I see the “hello world” message in debug view only when the program is compiled in LIB mode.
My conclusion at this point is there is some dependency in the Clarion runtime that does not exist in the Server Core installation.
Has anyone been able to get their Clarion 10/11 program to run under Server Core?
Turns out oledlg.dll is the system DLL that is missing in the Server Core installation that the Clarion programs needs. Copying this file from \Windows\SYSWOW64 from a full installer of Windows Server to the same folder on the Server Core machine allows the Clarion program to run when compiled in DLL mode.
I don’t know the ramifications of doing this in a production environment or what happens with Windows Updates, so proceed with this knowledge at your own risk.
I don’t know the security or even licensing ramifications of copying the DLL to Windows Core.
I never implemented this solution in a production environment.
Regarding the radio buttons; make sure the oledlg.dll you copy is from the same version of Windows Standard/Datacenter as you are running in Core.
You might want to experiment with your application’s manifest settings to see what impact that has on drawing the control.
You probably have a Manifest with Themed controls turned on?
Those Visual Styles come from the ComCtrl32.DLL in the special version 6 DLL loaded from the WinSxS folder. I would guess the Server Core does not come with those UI related DLLs. Test by turning off Themed Controls and build and run.
If you want to be able to run it both ways you’ll need to have an external MyApp.exe.Manifest file. On Server Core you need to NOT have the Microsoft.Windows.Common-Controls 6.0 dependency, this section:
Dependency Walker (Depends.exe) should hilight all the api dll’s a clarion app needs, but if you dont need that functionality on server core, isnt the compiler excluding the api calls?
If you do need that functionality, could you do a work around like using check boxes (if that doesnt need the OLE dll) or command line switch or configuration txt file? Alot of headless linux apps just use a config file of sorts and I get the impression MS are trying to make server core a headless gui/desktop less experience, but I’ve not messed around with it to really be able to comment on the subject other than the info that can be read online.