diff --git a/native/WinLauncher/WinLauncher/WinLauncher.ico b/native/WinLauncher/WinLauncher/WinLauncher.ico
index d551aa3aaf80..a38333ba8384 100644
Binary files a/native/WinLauncher/WinLauncher/WinLauncher.ico and b/native/WinLauncher/WinLauncher/WinLauncher.ico differ
diff --git a/native/WinLauncher/WinLauncher/WinLauncher.rc b/native/WinLauncher/WinLauncher/WinLauncher.rc
index 7b600e11b390..d734507ab0ea 100644
Binary files a/native/WinLauncher/WinLauncher/WinLauncher.rc and b/native/WinLauncher/WinLauncher/WinLauncher.rc differ
diff --git a/native/WinLauncher/WinLauncher/WinLauncher.vcxproj b/native/WinLauncher/WinLauncher/WinLauncher.vcxproj
index a69e8769223b..6656ec535a2a 100644
--- a/native/WinLauncher/WinLauncher/WinLauncher.vcxproj
+++ b/native/WinLauncher/WinLauncher/WinLauncher.vcxproj
@@ -136,7 +136,6 @@
-
diff --git a/native/WinLauncher/WinLauncher/WinLauncher.vcxproj.filters b/native/WinLauncher/WinLauncher/WinLauncher.vcxproj.filters
index d86e9e9e1ce7..d813bb472c09 100644
--- a/native/WinLauncher/WinLauncher/WinLauncher.vcxproj.filters
+++ b/native/WinLauncher/WinLauncher/WinLauncher.vcxproj.filters
@@ -16,9 +16,6 @@
-
- Resource Files
-
Resource Files
diff --git a/native/WinLauncher/WinLauncher/small.ico b/native/WinLauncher/WinLauncher/small.ico
deleted file mode 100644
index d551aa3aaf80..000000000000
Binary files a/native/WinLauncher/WinLauncher/small.ico and /dev/null differ
diff --git a/tools/launcher-generator/src/com/pme/exe/res/icon/IconResourceInjector.java b/tools/launcher-generator/src/com/pme/exe/res/icon/IconResourceInjector.java
index 8bc8dc8071d2..d98e142abf45 100644
--- a/tools/launcher-generator/src/com/pme/exe/res/icon/IconResourceInjector.java
+++ b/tools/launcher-generator/src/com/pme/exe/res/icon/IconResourceInjector.java
@@ -33,6 +33,25 @@ public class IconResourceInjector {
IconFile iconFile = new IconFile(file);
iconFile.read();
+ //updateGroupIcon(root, iconId, iconFile);
+
+ DirectoryEntry iconsDir = root.findSubDir("IRD3");
+ Level iconFileLevel = (Level) iconFile.getMember("Level");
+ ArrayList icons = iconFileLevel.getMembers();
+ if (icons.size() == iconsDir.getSubDirs().size()) {
+ for (int i = 0; i < icons.size(); i++) {
+ DirectoryEntry subDirIcon = iconsDir.findSubDir("IRD" + (i+1));
+ IconDirectory iconDirectory = (IconDirectory) iconFileLevel.getMembers().get(i);
+ RawResource rawResource = subDirIcon.getRawResource(0);
+ rawResource.setBytes(iconDirectory.getRawBytes());
+ }
+ }
+ else {
+ throw new IOException("Count of icons in template file doesn't match the count of icons in provided icon file");
+ }
+ }
+
+ private void updateGroupIcon(DirectoryEntry root, String iconId, IconFile iconFile) throws IOException {
DirectoryEntry subDirGroupIcon = root.findSubDir("IRD14").findSubDir(iconId);
RawResource groupIcon = subDirGroupIcon.getRawResource(0);
@@ -51,18 +70,6 @@ public class IconResourceInjector {
DataOutputStream stream = new DataOutputStream(bytesStream);
groupIconResource.write(stream);
groupIcon.getBytes().setBytes(bytesStream.toByteArray());
-
- DirectoryEntry iconsDir = root.findSubDir("IRD3");
- DirectoryEntry subDirIcon = iconsDir.findSubDir("IRD1");
- RawResource rawResource = subDirIcon.getRawResource(0);
- Level iconFileLevel = (Level) iconFile.getMember("Level");
- IconDirectory iconDirectory = (IconDirectory) iconFileLevel.getMembers().get(0);
- rawResource.setBytes(iconDirectory.getRawBytes());
-
- ArrayList icons = iconFileLevel.getMembers();
- for (int i = 1; i < icons.size(); i++) {
- insertIcon(iconsDir, (IconDirectory) icons.get(i), i);
- }
}
private void insertIcon(DirectoryEntry iconsDir, IconDirectory iconDirectory, int index) {
diff --git a/tools/launcher-generator/src/com/pme/launcher/LauncherGenerator.java b/tools/launcher-generator/src/com/pme/launcher/LauncherGenerator.java
index df4a1d6e68ab..0b76f89f927f 100644
--- a/tools/launcher-generator/src/com/pme/launcher/LauncherGenerator.java
+++ b/tools/launcher-generator/src/com/pme/launcher/LauncherGenerator.java
@@ -91,7 +91,7 @@ public class LauncherGenerator {
bmpRes.setBytes(bitmapData);
}
- public void injectIcon(String name, final InputStream iconStream) throws IOException {
+ public void injectIcon(int id, final InputStream iconStream) throws IOException {
File f = File.createTempFile("launcher", "ico");
Files.copy(new InputSupplier() {
@Override
@@ -100,6 +100,6 @@ public class LauncherGenerator {
}
}, f);
IconResourceInjector iconInjector = new IconResourceInjector();
- iconInjector.injectIcon(f, myRoot, "IRD101");
+ iconInjector.injectIcon(f, myRoot, "IRD" + id);
}
}
diff --git a/tools/launcher-generator/src/com/pme/launcher/LauncherGeneratorMain.java b/tools/launcher-generator/src/com/pme/launcher/LauncherGeneratorMain.java
index d903e6357a4d..cdf54b7cb72e 100644
--- a/tools/launcher-generator/src/com/pme/launcher/LauncherGeneratorMain.java
+++ b/tools/launcher-generator/src/com/pme/launcher/LauncherGeneratorMain.java
@@ -132,7 +132,7 @@ public class LauncherGeneratorMain {
}
generator.injectBitmap(resourceIDs.get("IDB_SPLASH"), splashBmpStream.toByteArray());
- generator.injectIcon(icoUrl, iconStream);
+ generator.injectIcon(resourceIDs.get("IDI_WINLAUNCHER"), iconStream);
generator.generate();
} catch (IOException e) {