Feature Request: Introjucer to support Visual Studio 2013 projects for Windows XP


#1

Visual Studio 2013 by default does not generate code that will run on Windows XP.  Our customers still run with Windows XP so our products still need to support it.

There are a few items that need to be customized in Visual Studio Project Properties to support XP, but when using Introjucer each time I save the project it overwrites these properties and they must be manually set again.

I propose that Introjucer only modifies the items it understands and leaves the rest of the project settings as they are instead of re-writing the entire project every time you save.  That way a customized item will remain intact instead of being wiped out for each save.

Just for reference in case anyone else comes across this issue, these are the items that need to be modified to support XP:

Configuration Properties > General > Platform Toolset = Visual Studio 2013 - Windows XP (v120_xp)

Configuration Properties > Linker > Command Line = /SUBSYSTEM:WINDOWS,5.1 (this one can be set in Introjucer)

As a side note, Introjucer is also wiping out my custom manifest entries even though there is really no support of manifest files in Introjucer, other than just turning them on and off.  I want to turn on High DPI Awareness but Introjucer wipes that clean on each save.


#2

I propose that Introjucer only modifies the items it understands and leaves the rest of the project settings as they are instead of re-writing the entire project every time you save.  That way a customized item will remain intact instead of being wiped out for each save.

This has been discussed many many times before, but as I always explain, it'd be an unfeasibly difficult task to actually implement.

And I thought you can already choose the toolset via the introjucer, there's no need to change it in Visual studio (?)

Re: adding manifest entries, if there's something you need, then I can probably add support for it. But the library already implements high-DPI support without needing to change the manifest!


#3

Jules, Thanks for the reply. 

I totally missed the platform selection dropdown in Introjucer... so that was just me.

Even though Desktop::getDefaultMasterScale() gets called upon startup, I'm still seeing that I need to set the High DPI manifest entry for the OS to not scale the app when Windows scaling is not set to 100%.  I'll have to do more research to see what is going on there.


#4

Thank you!

On the first attempt to use my plugin on Windows XP, an error message was thrown claiming that msvcp120.dll is missing. Solution: Download and install the "Visual C++ Redistributable Packages for Visual Studio 2013" from http://www.microsoft.com/en-us/download/details.aspx?id=40784 .

But I don't want users need to do that. To solve this issue, make your plugin statically linked:

Jucer: In your Visual Studio 2013 configuration, switch the Runtime Library from "(Default)" to "Use static runtime".

Visual Studio: Project preferences -> C/C++ -> Code Generation -> Runtime Library. Switch from e.g. "Multi-threaded DLL (/MD)" to "Multi-threaded (/MT)".

The size of my plugin increased slightly from 900KB to 1100KB.

 

Sources:

http://www.juce.com/forum/topic/microsoft-redistributable-pack

http://stackoverflow.com/questions/37398/how-do-i-make-a-fully-statically-linked-exe-with-visual-studio-express-2005