diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index ec7ecea9d..2c3216ead 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -56,12 +56,41 @@ jobs:
apt-get -y update
apt-get -y install nsis
makensis -VERSION
+ - name: Install Wine
+ run: |
+ sudo dpkg --add-architecture i386
+ apt-get update
+ apt-get install -y --no-install-recommends wine64
+
+ - name: Init Wine prefix
+ env:
+ WINEPREFIX: ${{ github.workspace }}/.wine
+ WINEDEBUG: "-all"
+ run: |
+ mkdir -p "$WINEPREFIX"
+ wineboot -u
+
+ - name: Install Resource Hacker
+ env:
+ RH_DIR: ${{ github.workspace }}/tools/resourcehacker
+ RH_ZIP: ${{ github.workspace }}/tools/resourcehacker.zip
+ RH_URL: https://www.angusj.com/resourcehacker/resource_hacker.zip
+ run: |
+ set -euxo pipefail
+ mkdir -p "$(dirname "$RH_ZIP")"
+ mkdir -p "$RH_DIR"
+
+ wget -O "$RH_ZIP" "$RH_URL"
+ unzip -o "$RH_ZIP" -d "$RH_DIR"
+
+ # find exe (sometimes it's in subfolder)
+ find "$RH_DIR" -maxdepth 3 -type f -iname "ResourceHacker.exe" -print
- name: Set up ant
run: |
apt install -y -qq ant
- name: Build
run: |
- export CICD_TEMP=${{ runner.temp }}
+ export CICD_TEMP=${{ github.workspace }}
chmod a+x ./cicd_scripts/*.sh
./cicd_scripts/before_install.sh
./cicd_scripts/script.sh
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 0610abba3..a099567dd 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -11,6 +11,7 @@ All notable changes to this project will be documented in this file.
- Updated German translation (AI used)
- Slovak translation (AI used)
- APNG (animated PNG) export for frames, sprites and morphshapes
+- Version info in ffdec.exe and on its splashscreen
### Fixed
- [#2603] Export Sprite as SWF - sprite frames as timeline frames, without sprite itself
diff --git a/README.md b/README.md
index f24678fe5..30428c20f 100644
--- a/README.md
+++ b/README.md
@@ -60,6 +60,7 @@ For creating EXE Installer and ZIP version, there exist Ant tasks "installer","r
You must configure installation path of this tool in tools.properties file, which could look like this for windows:
```
nsis.path = c:\\program files (x86)\\NSIS
+reshack.path = c:\\Program Files (x86)\\Resource Hacker\\
```
### Building libraries
diff --git a/build.xml b/build.xml
index 5954e1653..673d64cd4 100644
--- a/build.xml
+++ b/build.xml
@@ -44,9 +44,7 @@
-
-
-
+
@@ -264,7 +262,7 @@
-
+
@@ -405,123 +403,8 @@
-
-
-
-
-
-
-
-
-
-
-
-
- true
- gui
- ${jar.filename}.jar
- ${basedir}/${dist.dir}/${translator_exe.filename}.exe
-
- -translator
-
- normal
- http://java.com/download
-
- false
- false
- false
-
-
-
-
- ${min.java.version}
-
- preferJre
- 64/32
- ${max.heap.size.percent}
-
-
- ${version.number}
- ${version}${version.suffix}
- ${translator_product.name}
- ${vendor}
- ${version.number}
- ${version}${version.suffix}
- ${translator_product.name}
-
- ${translator_internal.name}
- ${translator_exe.filename}.exe
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
@@ -539,7 +422,7 @@
tools.properties NOT found.
Please create file named "tools.properties" and add two lines:
nsis.path = Path to Nullsoft Install System
- launch4j.path = Path to launch4j
+ reshack.path = Path to Resource Hacker
WARNING: You must use double backslash in paths on Windows System or forward slash
@@ -548,11 +431,8 @@
-
-
-
-
-
+
+
@@ -732,7 +612,88 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/cicd_scripts/before_install.sh b/cicd_scripts/before_install.sh
index 1116fa397..877fb4fe9 100644
--- a/cicd_scripts/before_install.sh
+++ b/cicd_scripts/before_install.sh
@@ -14,7 +14,7 @@ MAKENSIS_FULLPATH=`which makensis`
MAKENSIS_PATH=`dirname "$MAKENSIS_FULLPATH"`
echo "nsis.path = $MAKENSIS_PATH" > tools.properties
-echo "launch4j.path = -" >> tools.properties
+echo "reshack.path = $tools_dir/resourcehacker/" >> tools.properties
cat tools.properties
diff --git a/graphics/splash3.png b/graphics/splash3.png
new file mode 100644
index 000000000..66802b9f1
Binary files /dev/null and b/graphics/splash3.png differ
diff --git a/graphics/splash3.svg b/graphics/splash3.svg
new file mode 100644
index 000000000..71bea8552
--- /dev/null
+++ b/graphics/splash3.svg
@@ -0,0 +1,677 @@
+
+
+
+
diff --git a/src/com/jpexs/build/ChangelogUpdater.java b/src/com/jpexs/build/ChangelogUpdater.java
index bdee5b743..b66e8a8ec 100644
--- a/src/com/jpexs/build/ChangelogUpdater.java
+++ b/src/com/jpexs/build/ChangelogUpdater.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2021-2026 JPEXS
+ * Copyright (C) 2010-2026 JPEXS
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/com/jpexs/build/LocaleConverter.java b/src/com/jpexs/build/LocaleConverter.java
index 60c6a163e..442762a1c 100644
--- a/src/com/jpexs/build/LocaleConverter.java
+++ b/src/com/jpexs/build/LocaleConverter.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2021-2026 JPEXS
+ * Copyright (C) 2010-2026 JPEXS
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/com/jpexs/build/MetainfoUpdater.java b/src/com/jpexs/build/MetainfoUpdater.java
index c548f51f4..5a1790762 100644
--- a/src/com/jpexs/build/MetainfoUpdater.java
+++ b/src/com/jpexs/build/MetainfoUpdater.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2023-2026 JPEXS
+ * Copyright (C) 2010-2026 JPEXS
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
diff --git a/src/com/jpexs/build/SplashScreenGenerator.java b/src/com/jpexs/build/SplashScreenGenerator.java
new file mode 100644
index 000000000..e4bb73dcb
--- /dev/null
+++ b/src/com/jpexs/build/SplashScreenGenerator.java
@@ -0,0 +1,53 @@
+/*
+ * Copyright (C) 2010-2026 JPEXS
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+package com.jpexs.build;
+
+import com.jpexs.decompiler.flash.ApplicationInfo;
+import com.jpexs.decompiler.flash.helpers.BMPFile;
+import java.awt.Color;
+import java.awt.Font;
+import java.awt.Graphics2D;
+import java.awt.RenderingHints;
+import java.awt.image.BufferedImage;
+import java.io.File;
+import java.io.IOException;
+import javax.imageio.ImageIO;
+
+/**
+ * Generates BMP splashscreen with version info for inclusion in ffdec.exe
+ *
+ * @author JPEXS
+ */
+public class SplashScreenGenerator {
+
+ public static void main(String[] args) throws IOException {
+ BufferedImage img = ImageIO.read(new File("graphics/splash3.png"));
+ Graphics2D g = img.createGraphics();
+ g.setColor(new Color(0, 100, 255, 128));
+ g.setFont(new Font("Arial", Font.BOLD, 25));
+ int sw = g.getFontMetrics().stringWidth(ApplicationInfo.version);
+ int x = 190;
+ int y = 170;
+ int w = 220;
+ int h = 25;
+ g.setRenderingHint(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_QUALITY);
+ g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
+ g.drawString(ApplicationInfo.version, x + w / 2 - sw / 2, y + h);
+
+ BMPFile.saveBitmap(img, new File("build/splash.bmp"));
+ }
+}
diff --git a/versioninfo.rc b/versioninfo.rc
new file mode 100644
index 000000000..6379d8b3b
--- /dev/null
+++ b/versioninfo.rc
@@ -0,0 +1,28 @@
+1 VERSIONINFO
+FILEVERSION @MAJOR@,@MINOR@,@RELEASE@,@BUILD@
+PRODUCTVERSION @MAJOR@,@MINOR@,@RELEASE@,@BUILD@
+FILEOS 0x40004
+FILETYPE 0x1
+{
+BLOCK "StringFileInfo"
+{
+ BLOCK "000004B0"
+ {
+ VALUE "ProductName", "JPEXS Free Flash Decompiler launcher"
+ VALUE "FileDescription", "JPEXS Free Flash Decompiler launcher"
+ VALUE "ProductVersion", "@VERSION@"
+ VALUE "FileVersion", "@VERSION@"
+ VALUE "InternalName", "Launch5j"
+ VALUE "OriginalFilename", "ffdec.exe"
+ VALUE "LegalCopyright", "JPEXS"
+ VALUE "CompanyName", "JPEXS"
+ VALUE "LegalTrademarks", "JPEXS"
+ VALUE "Comments", "-"
+ }
+}
+
+BLOCK "VarFileInfo"
+{
+ VALUE "Translation", 0x0000 0x04B0
+}
+}