I want to produce two different versions of my application, with different icons based on a DEFINE.
I succeeded to include different resource files based on the define but I cannot get rid of the MAINICON
in the default .res file of my project.
I added a resource Version1.rc file with the following line:
MAINICON icon "resource\icons\Version1.ico"
But if I try to compile MyProject using the IDE I always get the following error:
E2161 Duplicate resource: Type 14 (ICON GROUP), ID MAINICON; File C:\MyProject\Version1.RES resource kept; file C:\MyProject\MyProject.RES resource discarded.
I tried to edit MyProject.res
using a resource editor and deleted MAINICON, but delphi automatically seems to recreate the file including the icon.
I found a solution thanks to the comments of David Heffernan. I ended up with the following:
{$R *.res}
in the project file.versioninfo.rc
with the information, that I formerly provided in the IDE, as described here.I added the files icon_version1.rc
and icon_version2.rc
, that looked like this:
LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
MAINICON icon "..\resources\icons\version1.ico"
I added a file Resources.pas
to my project, that looked like this:
unit Resources;
interface
implementation
{$IFDEF VERSION1}
{$R ICON_VERSION1.RES} //from ICON_VERSION1.RC
{$ELSE}
{$R ICON_VERSION2.RES} //from ICON_VERSION2.RC
{$ENDIF}
{$R VERSIONINFO.RES} //from VERSIONINFO.RC
end.
I modified my existing script compile_resources.bat
to compile the additional resource files.
Now if I define VERSION1
, my application has the icon icon_version1.ico
, otherwise icon_version2.ico
. One caveat: If version info (or icon) is modified I have to run compile_resources.bat
to reflect the changes.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With