How to create a distributable package for Windows with Inno Setup?

Hi,

I am trying to create a distributable package on Windows using Inno Setup by following the instructions found in the documentation (here) but it is not working. It seems that these instructions are either obsolete or incorrect as they are missing quite few files compared to the official distribution.

Anyone was able to make it work?

Thanks!

For reference, here are the files I so far copied in the release folder before running Innosetup:

robocopy /ucrt64/bin/ /home/dtrtuser/RawTherapee/build/release libexiv2-28.dll
robocopy /ucrt64/bin/ /home/dtrtuser/RawTherapee/build/release libfftw3f_omp-3.dll
robocopy /ucrt64/bin/ /home/dtrtuser/RawTherapee/build/release libtiff-6.dll
robocopy /ucrt64/bin/ /home/dtrtuser/RawTherapee/build/release libpcre2-8-0.dll

robocopy /ucrt64/bin/ /home/dtrtuser/RawTherapee/build/release libffi-8.dll
robocopy /ucrt64/bin/ /home/dtrtuser/RawTherapee/build/release libcurl-4.dll
robocopy /ucrt64/bin/ /home/dtrtuser/RawTherapee/build/release libINIReader-0.dll
robocopy /ucrt64/bin/ /home/dtrtuser/RawTherapee/build/release libsharpyuv-0.dll

robocopy /ucrt64/bin/ /home/dtrtuser/RawTherapee/build/release libcrypto-3-x64.dll
robocopy /ucrt64/bin/ /home/dtrtuser/RawTherapee/build/release libidn2-0.dll
robocopy /ucrt64/bin/ /home/dtrtuser/RawTherapee/build/release libnghttp2-14.dll
robocopy /ucrt64/bin/ /home/dtrtuser/RawTherapee/build/release libpsl-5.dll

robocopy /ucrt64/bin/ /home/dtrtuser/RawTherapee/build/release libinih-0.dll
robocopy /ucrt64/bin/ /home/dtrtuser/RawTherapee/build/release libssh2-1.dll
robocopy /ucrt64/bin/ /home/dtrtuser/RawTherapee/build/release libssl-3-x64.dll
robocopy /ucrt64/bin/ /home/dtrtuser/RawTherapee/build/release libunistring-5.dll

robocopy /ucrt64/bin/ /home/dtrtuser/RawTherapee/build/release gspawn-win64-helper.exe
robocopy /ucrt64/bin/ /home/dtrtuser/RawTherapee/build/release gspawn-win64-helper-console.exe
robocopy /ucrt64/bin/ /home/dtrtuser/RawTherapee/build/release gdbus.exe
robocopy /ucrt64/bin/ /home/dtrtuser/RawTherapee/build/release libatk-1.0-0.dll
robocopy /ucrt64/bin/ /home/dtrtuser/RawTherapee/build/release libatkmm-1.6-1.dll
robocopy /ucrt64/bin/ /home/dtrtuser/RawTherapee/build/release libbz2-1.dll
robocopy /ucrt64/bin/ /home/dtrtuser/RawTherapee/build/release libbrotlicommon.dll
robocopy /ucrt64/bin/ /home/dtrtuser/RawTherapee/build/release libbrotlidec.dll
robocopy /ucrt64/bin/ /home/dtrtuser/RawTherapee/build/release libcairo-2.dll
robocopy /ucrt64/bin/ /home/dtrtuser/RawTherapee/build/release libcairo-gobject-2.dll
robocopy /ucrt64/bin/ /home/dtrtuser/RawTherapee/build/release libcairomm-1.0-1.dll
robocopy /ucrt64/bin/ /home/dtrtuser/RawTherapee/build/release libdatrie-1.dll
robocopy /ucrt64/bin/ /home/dtrtuser/RawTherapee/build/release libdeflate.dll
robocopy /ucrt64/bin/ /home/dtrtuser/RawTherapee/build/release libepoxy-0.dll
robocopy /ucrt64/bin/ /home/dtrtuser/RawTherapee/build/release libexpat-1.dll
robocopy /ucrt64/bin/ /home/dtrtuser/RawTherapee/build/release libffi-7.dll
robocopy /ucrt64/bin/ /home/dtrtuser/RawTherapee/build/release libfftw3f-3.dll
robocopy /ucrt64/bin/ /home/dtrtuser/RawTherapee/build/release libfontconfig-1.dll
robocopy /ucrt64/bin/ /home/dtrtuser/RawTherapee/build/release libfreetype-6.dll
robocopy /ucrt64/bin/ /home/dtrtuser/RawTherapee/build/release libfribidi-0.dll
robocopy /ucrt64/bin/ /home/dtrtuser/RawTherapee/build/release libgcc_s_seh-1.dll
robocopy /ucrt64/bin/ /home/dtrtuser/RawTherapee/build/release libgdk_pixbuf-2.0-0.dll
robocopy /ucrt64/bin/ /home/dtrtuser/RawTherapee/build/release libgdk-3-0.dll
robocopy /ucrt64/bin/ /home/dtrtuser/RawTherapee/build/release libgdkmm-3.0-1.dll
robocopy /ucrt64/bin/ /home/dtrtuser/RawTherapee/build/release libgio-2.0-0.dll
robocopy /ucrt64/bin/ /home/dtrtuser/RawTherapee/build/release libgiomm-2.4-1.dll
robocopy /ucrt64/bin/ /home/dtrtuser/RawTherapee/build/release libglib-2.0-0.dll
robocopy /ucrt64/bin/ /home/dtrtuser/RawTherapee/build/release libglibmm-2.4-1.dll
robocopy /ucrt64/bin/ /home/dtrtuser/RawTherapee/build/release libgmodule-2.0-0.dll
robocopy /ucrt64/bin/ /home/dtrtuser/RawTherapee/build/release libgobject-2.0-0.dll
robocopy /ucrt64/bin/ /home/dtrtuser/RawTherapee/build/release libgomp-1.dll
robocopy /ucrt64/bin/ /home/dtrtuser/RawTherapee/build/release libgraphite2.dll
robocopy /ucrt64/bin/ /home/dtrtuser/RawTherapee/build/release libgtk-3-0.dll
robocopy /ucrt64/bin/ /home/dtrtuser/RawTherapee/build/release libgtkmm-3.0-1.dll
robocopy /ucrt64/bin/ /home/dtrtuser/RawTherapee/build/release libharfbuzz-0.dll
robocopy /ucrt64/bin/ /home/dtrtuser/RawTherapee/build/release libiconv-2.dll
robocopy /ucrt64/bin/ /home/dtrtuser/RawTherapee/build/release libintl-8.dll
robocopy /ucrt64/bin/ /home/dtrtuser/RawTherapee/build/release libjbig-0.dll
robocopy /ucrt64/bin/ /home/dtrtuser/RawTherapee/build/release libjpeg-8.dll
robocopy /ucrt64/bin/ /home/dtrtuser/RawTherapee/build/release liblcms2-2.dll
robocopy /ucrt64/bin/ /home/dtrtuser/RawTherapee/build/release liblensfun.dll
robocopy /ucrt64/bin/ /home/dtrtuser/RawTherapee/build/release liblerc.dll
robocopy /ucrt64/bin/ /home/dtrtuser/RawTherapee/build/release liblzma-5.dll
robocopy /ucrt64/bin/ /home/dtrtuser/RawTherapee/build/release libpango-1.0-0.dll
robocopy /ucrt64/bin/ /home/dtrtuser/RawTherapee/build/release libpangocairo-1.0-0.dll
robocopy /ucrt64/bin/ /home/dtrtuser/RawTherapee/build/release libpangoft2-1.0-0.dll
robocopy /ucrt64/bin/ /home/dtrtuser/RawTherapee/build/release libpangomm-1.4-1.dll
robocopy /ucrt64/bin/ /home/dtrtuser/RawTherapee/build/release libpangowin32-1.0-0.dll
robocopy /ucrt64/bin/ /home/dtrtuser/RawTherapee/build/release libpcre-1.dll
robocopy /ucrt64/bin/ /home/dtrtuser/RawTherapee/build/release libpixman-1-0.dll
robocopy /ucrt64/bin/ /home/dtrtuser/RawTherapee/build/release libpng16-16.dll
robocopy /ucrt64/bin/ /home/dtrtuser/RawTherapee/build/release librsvg-2-2.dll
robocopy /ucrt64/bin/ /home/dtrtuser/RawTherapee/build/release libsigc-2.0-0.dll
robocopy /ucrt64/bin/ /home/dtrtuser/RawTherapee/build/release libstdc++-6.dll
robocopy /ucrt64/bin/ /home/dtrtuser/RawTherapee/build/release libsystre-0.dll
robocopy /ucrt64/bin/ /home/dtrtuser/RawTherapee/build/release libthai-0.dll
robocopy /ucrt64/bin/ /home/dtrtuser/RawTherapee/build/release libtiff-5.dll
robocopy /ucrt64/bin/ /home/dtrtuser/RawTherapee/build/release libtre-5.dll
robocopy /ucrt64/bin/ /home/dtrtuser/RawTherapee/build/release libwebp-7.dll
robocopy /ucrt64/bin/ /home/dtrtuser/RawTherapee/build/release libwinpthread-1.dll
robocopy /ucrt64/bin/ /home/dtrtuser/RawTherapee/build/release libxml2-2.dll
robocopy /ucrt64/bin/ /home/dtrtuser/RawTherapee/build/release libzstd.dll
robocopy /ucrt64/bin/ /home/dtrtuser/RawTherapee/build/release zlib1.dll

robocopy /ucrt64/share/icons/Adwaita/symbolic/actions /home/dtrtuser/RawTherapee/build/release/share/icons/Adwaita/symbolic/actions //e
robocopy /ucrt64/share/icons/Adwaita/symbolic/devices /home/dtrtuser/RawTherapee/build/release/share/icons/Adwaita/symbolic/devices //e
robocopy /ucrt64/share/icons/Adwaita/symbolic/mimetypes /home/dtrtuser/RawTherapee/build/release/share/icons/Adwaita/symbolic/mimetypes //e
robocopy /ucrt64/share/icons/Adwaita/symbolic/places /home/dtrtuser/RawTherapee/build/release/share/icons/Adwaita/symbolic/places //e
robocopy /ucrt64/share/icons/Adwaita/symbolic/status /home/dtrtuser/RawTherapee/build/release/share/icons/Adwaita/symbolic/status //e
robocopy /ucrt64/share/icons/Adwaita/symbolic/ui /home/dtrtuser/RawTherapee/build/release/share/icons/Adwaita/symbolic/ui //e

robocopy /ucrt64/share/icons/Adwaita /home/dtrtuser/RawTherapee/build/release/share/icons/Adwaita index.theme
robocopy /ucrt64/share/icons/Adwaita/cursors /home/dtrtuser/RawTherapee/build/release/share/icons/Adwaita/cursors plus.cur
robocopy /ucrt64/share/icons/Adwaita/cursors /home/dtrtuser/RawTherapee/build/release/share/icons/Adwaita/cursors sb_h_double_arrow.cur
robocopy /ucrt64/share/icons/Adwaita/cursors /home/dtrtuser/RawTherapee/build/release/share/icons/Adwaita/cursors sb_left_arrow.cur
robocopy /ucrt64/share/icons/Adwaita/cursors /home/dtrtuser/RawTherapee/build/release/share/icons/Adwaita/cursors sb_right_arrow.cur
robocopy /ucrt64/share/icons/Adwaita/cursors /home/dtrtuser/RawTherapee/build/release/share/icons/Adwaita/cursors sb_v_double_arrow.cur

robocopy /ucrt64/lib/gdk-pixbuf-2.0 /home/dtrtuser/RawTherapee/build/release/lib/gdk-pixbuf-2.0 //e
robocopy /ucrt64/share/glib-2.0/schemas /home/dtrtuser/RawTherapee/build/release/share/glib-2.0/schemas gschemas.compiled
robocopy /ucrt64/share/lensfun/version_1 /home/dtrtuser/RawTherapee/build/release/share/lensfun

mkdir /home/dtrtuser/RawTherapee/build/release/share/gtk-3.0
echo "[Settings] gtk-button-images=1" > /home/dtrtuser/RawTherapee/build/release/share/gtk-3.0/settings.ini

Have a look at the automated build scripts: RawTherapee/.github/workflows/windows.yml at dev · Beep6581/RawTherapee · GitHub

The DLLs can be listed with the ldd command. Only those in /mingw64/bin/ are needed.

These exes are required:

gdbus.exe
gspawn-win64-helper.exe
gspawn-win64-helper-console.exe

Adwaita icon theme files:

symbolic/actions
symbolic/devices
symbolic/mimetypes
symbolic/places
symbolic/status
symbolic/ui
index.theme
cursors/plus.cur
cursors/sb_h_double_arrow.cur
cursors/sb_left_arrow.cur
cursors/sb_right_arrow.cur
cursors/sb_v_double_arrow.cur

… and a few extra things:

lib/gdk-pixbuf-2.0
share/glib-2.0/schemas/gschemas.compiled

Also, the settings ini file should have a newline:

[Settings]
gtk-button-images=1

Thanks for the tips Lawrence, but unfortunately it still doesn’t work. All dll are matching the ldd output (dd are copied from /ucrt64/bin as I am using this environment for msys2. My /mingw64/bin is empty). I do have all the .exe files and also I think all the Adwaita icon theme files.

My build works just fine when I run it from msys2 command line so it is really puzzling… oh well, I guess I have to keep using the official distribution then.

Are you getting any error message?

No error message. The rt window opens briefly and then closes after a fraction of a second.

Correction: by adding a bogus parameter when running rt I was able to get some error messages (see my follow up post).

This is what I was able to capture using the Snipping tool before the window closed:

If you run RawTherapee from command prompt, you may be able to see all the messages. You could also try running RawTherapee through the gdb debugger.