From c808d13b6ee59f6ef27cf2bf6156b777f6865bc0 Mon Sep 17 00:00:00 2001 From: Bruno Date: Thu, 13 Jun 2024 08:47:40 -0300 Subject: [PATCH] build/windows: Debloat a bit Windows bundling This makes the output more complete but at the same time less polluted regarding the bundling scripts (base, deps and sym). --- Also, packaging scripts (inno and msix) were touched as consequence of experiments about drop bundling, for saving space (~20MB), of: - etc/gtk (MSYS2 don't build immodules) - share/ghostscript (macOS .dmg don't package it) - share/libthai (macOS .dmg don't package it) - share/locale (???, decided to kept only gtk and iso-codes to test) - share/man (installer don't package it, maybe because Windows can't open) - share/poppler (macOS .dmg don't package it) - bin/bzip2.exe (???) - bin/gdk-pixbuf-query-loaders.exe (loaders.cache already bundled) - bin/gspawn*.exe. (???) - share/gir-1.0 (installer don't package it) - share/lua (???) - share/vala (installer don't package it) The "???" ones seems to not be used according to my local tests. If they are, a bug will appear so we will be able to know, comment in the script (for maximum clarity towards the future) then revert. --- .../gitlab-ci/3_bundle-gimp-uni_base.sh | 224 +++++++++--------- .../gitlab-ci/3_bundle-gimp-uni_dep.py | 6 +- .../gitlab-ci/3_bundle-gimp-uni_sym.sh | 27 ++- .../windows/gitlab-ci/4_dist-gimp-winsdk.ps1 | 8 +- build/windows/installer/base_gimp3264.iss | 8 +- build/windows/installer/base_twain32on64.list | 1 - .../windows/installer/data_configoverride.isi | 4 - 7 files changed, 135 insertions(+), 143 deletions(-) diff --git a/build/windows/gitlab-ci/3_bundle-gimp-uni_base.sh b/build/windows/gitlab-ci/3_bundle-gimp-uni_base.sh index 7b7a3e314f..45a39aafa9 100644 --- a/build/windows/gitlab-ci/3_bundle-gimp-uni_base.sh +++ b/build/windows/gitlab-ci/3_bundle-gimp-uni_base.sh @@ -30,88 +30,100 @@ if [[ "$CI_JOB_NAME" =~ "cross" ]]; then export MSYS_PREFIX="$GIMP_PREFIX" else export GIMP_PREFIX="`realpath ./_install`${ARTIFACTS_SUFFIX}" - export MSYS_PREFIX="c:/msys64${MSYSTEM_PREFIX}" + export MSYS_PREFIX="$MSYSTEM_PREFIX" fi export GIMP_DISTRIB="`realpath ./gimp`${ARTIFACTS_SUFFIX}" +bundle () +{ + check_recurse=${2##*/} + if [[ "$check_recurse" =~ '*' ]] && [[ ! "$check_recurse" =~ '/' ]]; then + path_dest_parent=$(echo $1/${2%/*} | sed "s|${1}/||") + mkdir -p "$GIMP_DISTRIB/$path_dest_parent" + bundledArray=($(find $1/${2%/*} -maxdepth 1 -name ${2##*/})) + for path_origin_full2 in "${bundledArray[@]}"; do + echo "(INFO): copying $path_origin_full2 to $GIMP_DISTRIB/$path_dest_parent" + cp $path_origin_full2 "$GIMP_DISTRIB/$path_dest_parent" + done + else + path_origin_full=$(echo $1/$2) + if [[ "$2" =~ '/' ]]; then + path_dest_parent=$(dirname $path_origin_full | sed "s|${1}/||") + fi + mkdir -p "$GIMP_DISTRIB/$path_dest_parent" + echo "(INFO): copying $path_origin_full to $GIMP_DISTRIB/$path_dest_parent" + cp -r "$path_origin_full" "$GIMP_DISTRIB/$path_dest_parent" + fi +} + +clean () +{ + if [[ "$2" =~ '/' ]]; then + cleanedArray=($(find $1/${2%/*} -iname ${2##*/})) + else + cleanedArray=($(find $1/ -iname ${2##*/})) + fi + for path_dest_full in "${cleanedArray[@]}"; do + rm $path_dest_full + echo "(INFO): cleaning $path_dest_full" + done +} + + ## Copy a previously built wrapper at tree root, less messy than ## having to look inside bin/, in the middle of all the DLLs. -## This utility also configure the interpreters for local builds. -mkdir -p ${GIMP_DISTRIB} -cp -fr ${GIMP_PREFIX}/*.cmd ${GIMP_DISTRIB}/ +## This also configure the interpreters for local builds as courtesy. +bundle "$GIMP_PREFIX" gimp.cmd -## Modules. -mkdir ${GIMP_DISTRIB}/etc -cp -fr ${MSYS_PREFIX}/etc/fonts/ ${GIMP_DISTRIB}/etc/ -cp -fr ${GIMP_PREFIX}/etc/gimp/ ${GIMP_DISTRIB}/etc/ -cp -fr ${MSYS_PREFIX}/etc/gtk-*/ ${GIMP_DISTRIB}/etc/ +## Settings. +bundle "$GIMP_PREFIX" etc/gimp/ +### Needed for fontconfig +bundle "$MSYS_PREFIX" etc/fonts/ -## Headers. -mkdir ${GIMP_DISTRIB}/include -cp -fr ${GIMP_PREFIX}/include/babl-*/ ${GIMP_DISTRIB}/include/ -cp -fr ${GIMP_PREFIX}/include/gegl-*/ ${GIMP_DISTRIB}/include/ -cp -fr ${GIMP_PREFIX}/include/gimp-*/ ${GIMP_DISTRIB}/include/ +## Headers (in evaluation): https://gitlab.gnome.org/GNOME/gimp/-/issues/6378. +#bundle $GIMP_PREFIX/include/gimp-*/ +#bundle $GIMP_PREFIX/include/babl-*/ +#bundle $GIMP_PREFIX/include/gegl-*/ ## Library data. -mkdir ${GIMP_DISTRIB}/lib -cp -fr ${GIMP_PREFIX}/lib/babl-*/ ${GIMP_DISTRIB}/lib/ -cp -fr ${MSYS_PREFIX}/lib/gdk-pixbuf-*/ ${GIMP_DISTRIB}/lib/ -cp -fr ${GIMP_PREFIX}/lib/gegl-*/ ${GIMP_DISTRIB}/lib/ -cp -fr ${GIMP_PREFIX}/lib/gimp/ ${GIMP_DISTRIB}/lib/ -cp -fr ${MSYS_PREFIX}/lib/gio/ ${GIMP_DISTRIB}/lib/ - -aList=$(find ${GIMP_DISTRIB}/lib/ -iname '*.a') && aArray=($aList) -for a in "${aArray[@]}"; do - rm $a -done -rm ${GIMP_DISTRIB}/lib/gegl-*/*.json +bundle "$GIMP_PREFIX" lib/gimp/ +bundle "$GIMP_PREFIX" lib/babl-*/ +bundle "$GIMP_PREFIX" lib/gegl-*/ +bundle "$MSYS_PREFIX" lib/gio/ +bundle "$MSYS_PREFIX" lib/gdk-pixbuf-*/*/loaders.cache +bundle "$MSYS_PREFIX" lib/gdk-pixbuf-*/*/loaders/libpixbufloader-png.dll +bundle "$MSYS_PREFIX" lib/gdk-pixbuf-*/*/loaders/libpixbufloader-svg.dll +clean "$GIMP_DISTRIB" lib/*.a ## Resources. -mkdir ${GIMP_DISTRIB}/share -cp -fr ${MSYS_PREFIX}/share/ghostscript/ ${GIMP_DISTRIB}/share/ -rm -r ${GIMP_DISTRIB}/share/ghostscript/*/doc -cp -fr ${GIMP_PREFIX}/share/gimp/ ${GIMP_DISTRIB}/share/ -GLIB_PATH=$(echo ${MSYS_PREFIX}/share/glib-*/schemas | sed "s|${MSYS_PREFIX}/||g") -mkdir -p ${GIMP_DISTRIB}/${GLIB_PATH} -cp -fr ${MSYS_PREFIX}/share/glib-*/schemas/ ${GIMP_DISTRIB}/share/glib-*/ - -### Adwaita can be used as the base icon set. -mkdir -p ${GIMP_DISTRIB}/share/icons -cp -fr ${MSYS_PREFIX}/share/icons/Adwaita/ ${GIMP_DISTRIB}/share/icons/ -cp -fr ${GIMP_PREFIX}/share/icons/hicolor/ ${GIMP_DISTRIB}/share/icons/ - -cp -fr ${MSYS_PREFIX}/share/libthai/ ${GIMP_DISTRIB}/share/ -cp -fr ${MSYS_PREFIX}/share/libwmf/ ${GIMP_DISTRIB}/share/ - +bundle "$GIMP_PREFIX" share/gimp/ +### Needed for file dialogs +bundle "$MSYS_PREFIX" share/glib-*/schemas/ +### https://gitlab.gnome.org/GNOME/gimp/-/issues/6165 +bundle "$MSYS_PREFIX" share/icons/Adwaita/ +### https://gitlab.gnome.org/GNOME/gimp/-/issues/5080 +bundle "$GIMP_PREFIX" share/icons/hicolor/ +### Needed for wmf +bundle "$MSYS_PREFIX" share/libwmf/ ### Only copy from langs supported in GIMP. -cp -fr ${GIMP_PREFIX}/share/locale/ ${GIMP_DISTRIB}/share/ -for dir in ${GIMP_DISTRIB}/share/locale/*/; do +bundle "$GIMP_PREFIX" share/locale/ +for dir in $GIMP_DISTRIB/share/locale/*/; do lang=`basename "$dir"`; - # TODO: ideally we could be a bit more accurate and copy only the - # language files from our dependencies and iso_639.mo. But let's go - # with this for now, especially as each lang may have different - # translation availability. - if [ -d "${MSYS_PREFIX}/share/locale/${lang}/LC_MESSAGES/" ]; then - cp -fr "${MSYS_PREFIX}/share/locale/${lang}/LC_MESSAGES/"*.mo "${GIMP_DISTRIB}/share/locale/${lang}/LC_MESSAGES/" + if [ -d "$MSYS_PREFIX/share/locale/$lang/LC_MESSAGES/" ]; then + bundle "$MSYS_PREFIX" share/locale/$lang/LC_MESSAGES/gtk*.mo + bundle "$MSYS_PREFIX" share/locale/$lang/LC_MESSAGES/iso_639*.mo fi -done; - -mkdir -p ${GIMP_DISTRIB}/share/man/man1 -mkdir -p ${GIMP_DISTRIB}/share/man/man5 -cp -fr ${GIMP_PREFIX}/share/man/man1/gimp* ${GIMP_DISTRIB}/share/man/man1/ -cp -fr ${GIMP_PREFIX}/share/man/man5/gimp* ${GIMP_DISTRIB}/share/man/man5/ -mkdir ${GIMP_DISTRIB}/share/metainfo -cp -fr ${GIMP_PREFIX}/share/metainfo/org.gimp*.xml ${GIMP_DISTRIB}/share/metainfo/ -cp -fr ${MSYS_PREFIX}/share/mypaint-data/ ${GIMP_DISTRIB}/share/ -cp -fr ${MSYS_PREFIX}/share/poppler/ ${GIMP_DISTRIB}/share/ - -### Only one iso-codes file is useful. -mkdir -p ${GIMP_DISTRIB}/share/xml/iso-codes -cp -fr ${MSYS_PREFIX}/share/xml/iso-codes/iso_639.xml ${GIMP_DISTRIB}/share/xml/iso-codes/ +done +### Needed for welcome page +bundle "$GIMP_PREFIX" share/metainfo/org.gimp*.xml +### mypaint brushes +bundle "$MSYS_PREFIX" share/mypaint-data/ +### Needed for lang selection in Preferences +bundle "$MSYS_PREFIX" share/xml/iso-codes/iso_639.xml ## Executables and DLLs. @@ -120,16 +132,43 @@ cp -fr ${MSYS_PREFIX}/share/xml/iso-codes/iso_639.xml ${GIMP_DISTRIB}/share/xml/ rm -f done-dll.list ### Minimal (and some additional) executables for the 'bin' folder -mkdir ${GIMP_DISTRIB}/bin -binArray=("${MSYS_PREFIX}/bin/bzip2.exe" - "${MSYS_PREFIX}/bin/dot.exe" - "${MSYS_PREFIX}/bin/gdbus.exe" - "${MSYS_PREFIX}/bin/gdk-pixbuf-query-loaders.exe" - "${GIMP_PREFIX}/bin/gegl*.exe" - "${GIMP_PREFIX}/bin/gimp*.exe" - "${MSYS_PREFIX}/bin/gspawn*.exe") -for exe in "${binArray[@]}"; do - cp -fr $exe ${GIMP_DISTRIB}/bin/ +bundle "$GIMP_PREFIX" bin/gimp*.exe +### https://gitlab.gnome.org/GNOME/gimp/-/issues/10580 +bundle "$GIMP_PREFIX" bin/gegl*.exe +### https://gitlab.gnome.org/GNOME/gimp/-/issues/6045 +bundle "$MSYS_PREFIX" bin/dot.exe +### https://gitlab.gnome.org/GNOME/gimp/-/issues/8877 +bundle "$MSYS_PREFIX" bin/gdbus.exe + +### Optional binaries for GObject Introspection support +if [ "$CI_JOB_NAME" != 'gimp-win-x64-cross' ]; then + bundle "$GIMP_PREFIX" lib/girepository-*/ + bundle "$MSYS_PREFIX" lib/girepository-*/ + + bundle "$MSYS_PREFIX" bin/luajit.exe + bundle "$MSYS_PREFIX" lib/lua/ + + bundle "$MSYS_PREFIX" bin/python*.exe + bundle "$MSYS_PREFIX" lib/python*/ +else + # Just to ensure there is no introspected files that will output annoying warnings + # This is needed because meson.build files can have flaws + clean "$GIMP_DISTRIB" *.lua + clean "$GIMP_DISTRIB" *.py + clean "$GIMP_DISTRIB" *.scm + clean "$GIMP_DISTRIB" *.vala +fi + +### Deps (DLLs) of the binaries in 'lib' and 'bin' dirs +echo "(INFO): searching for dependencies of $GIMP_DISTRIB/lib in $GIMP_PREFIX and $MSYS_PREFIX" +libArray=($(find "$GIMP_DISTRIB/lib" \( -iname '*.dll' -or -iname '*.exe' \))) +for dep in "${libArray[@]}"; do + python3 build/windows/gitlab-ci/3_bundle-gimp-uni_dep.py $dep $GIMP_PREFIX/ $MSYS_PREFIX/ $GIMP_DISTRIB --output-dll-list done-dll.list; +done +echo "(INFO): searching for dependencies of $GIMP_DISTRIB/bin in $GIMP_PREFIX and $MSYS_PREFIX" +binArray=($(find "$GIMP_DISTRIB/bin" \( -iname '*.dll' -or -iname '*.exe' \))) +for dep in "${binArray[@]}"; do + python3 build/windows/gitlab-ci/3_bundle-gimp-uni_dep.py $dep $GIMP_PREFIX/ $MSYS_PREFIX/ $GIMP_DISTRIB --output-dll-list done-dll.list; done ### .pdb (CodeView) debug symbols @@ -137,40 +176,3 @@ done #if [ "$CI_JOB_NAME" != "gimp-win-x64-cross" ]; then # cp -fr ${GIMP_PREFIX}/bin/*.pdb ${GIMP_DISTRIB}/bin/ #fi - -## Optional executables, .DLLs and resources for GObject Introspection support -if [[ ! "$CI_JOB_NAME" =~ "cross" ]]; then - cp -fr ${MSYS_PREFIX}/bin/libgirepository-*.dll ${GIMP_DISTRIB}/bin/ - python3 build/windows/gitlab-ci/3_bundle-gimp-uni_dep.py ${GIMP_DISTRIB}/bin/libgirepository-*.dll ${GIMP_PREFIX}/ ${MSYS_PREFIX}/ ${GIMP_DISTRIB} --output-dll-list done-dll.list - cp -fr ${MSYS_PREFIX}/lib/girepository-*/ ${GIMP_DISTRIB}/lib/ - cp -fr ${GIMP_PREFIX}/lib/girepository-*/* ${GIMP_DISTRIB}/lib/girepository-*/ - cp -fr ${GIMP_PREFIX}/share/gir-*/ ${GIMP_DISTRIB}/share/ - - cp -fr ${MSYS_PREFIX}/bin/luajit.exe ${GIMP_DISTRIB}/bin/ - cp -fr ${MSYS_PREFIX}/lib/lua/ ${GIMP_DISTRIB}/lib/ - cp -fr ${MSYS_PREFIX}/share/lua/ ${GIMP_DISTRIB}/share/ - - cp -fr ${MSYS_PREFIX}/bin/python*.exe ${GIMP_DISTRIB}/bin/ - cp -fr ${MSYS_PREFIX}/lib/python*/ ${GIMP_DISTRIB}/lib/ - - cp -fr ${GIMP_PREFIX}/share/vala/ ${GIMP_DISTRIB}/share/ -else - # Just to ensure there is no introspected files that will output annoying warnings - # This is needed because meson.build files can have flaws - goiList=$(find ${GIMP_DISTRIB} \( -iname '*.lua' -or -iname '*.py' -or -iname '*.scm' -or -iname '*.vala' \)) && goiArray=($goiList) - for goi in "${goiArray[@]}"; do - rm $goi - done -fi - -### Needed DLLs for the executables in the 'bin' folder -binList=$(find ${GIMP_DISTRIB}/bin/ -iname '*.exe') && binArray=($binList) -for bin in "${binArray[@]}"; do - python3 build/windows/gitlab-ci/3_bundle-gimp-uni_dep.py $bin ${GIMP_PREFIX}/ ${MSYS_PREFIX}/ ${GIMP_DISTRIB} --output-dll-list done-dll.list; -done - -### Needed DLLs for the executables and DLLs in the 'lib' sub-folders -libList=$(find ${GIMP_DISTRIB}/lib/ \( -iname '*.dll' -or -iname '*.exe' \)) && libArray=($libList) -for lib in "${libArray[@]}"; do - python3 build/windows/gitlab-ci/3_bundle-gimp-uni_dep.py $lib ${GIMP_PREFIX}/ ${MSYS_PREFIX}/ ${GIMP_DISTRIB} --output-dll-list done-dll.list; -done diff --git a/build/windows/gitlab-ci/3_bundle-gimp-uni_dep.py b/build/windows/gitlab-ci/3_bundle-gimp-uni_dep.py index c28f4f67d7..7e403341f3 100644 --- a/build/windows/gitlab-ci/3_bundle-gimp-uni_dep.py +++ b/build/windows/gitlab-ci/3_bundle-gimp-uni_dep.py @@ -46,8 +46,8 @@ def main(binary, srcdirs, destdir, debug, dll_file): except FileNotFoundError: pass - sys.stdout.write("{} (INFO): searching for dependencies of {} in {}.\n".format(os.path.basename(__file__), - binary, ', '.join(srcdirs))) + #sys.stdout.write("{} (INFO): searching for dependencies of {} in {}.\n".format(os.path.basename(__file__), + # binary, ', '.join(srcdirs))) find_dependencies(os.path.abspath(binary), srcdirs) if debug in ['debug-only', 'debug-run']: if debug == 'debug-only': @@ -147,7 +147,7 @@ def copy_dlls(dll_list, srcdirs, destdir): for srcdir in srcdirs: full_file_name = os.path.join(srcdir, bindir, dll) if os.path.isfile(full_file_name): - sys.stdout.write("{} (INFO): copying {} to {}\n".format(os.path.basename(__file__), full_file_name, destbin)) + sys.stdout.write("(INFO): copying {} to {}\n".format(full_file_name, destbin)) shutil.copy(full_file_name, destbin) break else: diff --git a/build/windows/gitlab-ci/3_bundle-gimp-uni_sym.sh b/build/windows/gitlab-ci/3_bundle-gimp-uni_sym.sh index 506c92ce95..d13d59fe73 100644 --- a/build/windows/gitlab-ci/3_bundle-gimp-uni_sym.sh +++ b/build/windows/gitlab-ci/3_bundle-gimp-uni_sym.sh @@ -7,25 +7,30 @@ else archsArray=('-x86') fi -# Splited .debug (DWARF) debug symbols -# (we extract and link them to make possible save space with Inno custom install) + +# (we extract and link DWARF .debug symbols to +# make possible save space with Inno custom install) for ARTIFACTS_SUFFIX in "${archsArray[@]}"; do - - ## Split/extract DWARF symbols from binary to .debug - find gimp${ARTIFACTS_SUFFIX} \( -iname '*.dll' -or -iname '*.exe' -or -iname '*.pyd' \) -type f -exec objcopy --only-keep-debug '{}' '{}'.debug \; - - ## Link .debug to binary - find gimp${ARTIFACTS_SUFFIX} \( -iname '*.dll' -or -iname '*.exe' -or -iname '*.pyd' \) -type f -exec objcopy --add-gnu-debuglink='{}'.debug '{}' --strip-unneeded \; + binArray=($(find gimp${ARTIFACTS_SUFFIX} \( -iname '*.dll' -or -iname '*.exe' -or -iname '*.pyd' \) -type f)) + for bin in "${binArray[@]}"; do + echo "(INFO): extracting DWARF symbols from $bin" + ## Split/extract DWARF symbols from binary to .debug + objcopy --only-keep-debug $bin $bin.debug + ## Link .debug to binary + objcopy --add-gnu-debuglink=$bin.debug $bin --strip-unneeded + done ## Move .debug files to .debug folder - debugList=$(find gimp${ARTIFACTS_SUFFIX} -iname '*.debug') && debugArray=($debugList) + debugArray=($(find gimp${ARTIFACTS_SUFFIX} -iname '*.debug')) for debug in "${debugArray[@]}"; do - #NAME="${debug##*/}" DIR="${debug%/*}" - echo "$debug -> $DIR/.debug" if [ ! -d "$DIR/.debug" ]; then mkdir "$DIR/.debug" fi + if [ "$DIR" != "$PREVIOUS_DIR" ]; then + echo "(INFO): moving DWARF symbols to $DIR/.debug" + fi mv "$debug" "$DIR/.debug" + export PREVIOUS_DIR="$DIR" done done diff --git a/build/windows/gitlab-ci/4_dist-gimp-winsdk.ps1 b/build/windows/gitlab-ci/4_dist-gimp-winsdk.ps1 index 3822382911..e3600d1dde 100644 --- a/build/windows/gitlab-ci/4_dist-gimp-winsdk.ps1 +++ b/build/windows/gitlab-ci/4_dist-gimp-winsdk.ps1 @@ -136,12 +136,8 @@ Copy-Item -Path "..\..\..\$arch_a64" -Destination "$vfs_a64" -Recurse Copy-Item -Path "..\..\..\$arch_x64" -Destination "$vfs_x64" -Recurse ## Remove uneeded files (to match the Inno Windows Installer artifact) -$omissions = ("include\", "share\gir-1.0\", "share\man\", "share\vala\", "gimp.cmd") -Set-Location $vfs_a64 -Remove-Item $omissions -Recurse -Set-Location ..\..\..\..\$vfs_x64 -Remove-Item $omissions -Recurse -Set-Location ..\..\..\..\ +Remove-Item "$vfs_a64\gimp.cmd" +Remove-Item "$vfs_x64\gimp.cmd" ## Disable Update check (since the package is auto updated) foreach ($vfs in $vfsArray) diff --git a/build/windows/installer/base_gimp3264.iss b/build/windows/installer/base_gimp3264.iss index 26f69e5160..f16a829414 100644 --- a/build/windows/installer/base_gimp3264.iss +++ b/build/windows/installer/base_gimp3264.iss @@ -288,17 +288,14 @@ Source: "{#GIMP_DIR32}\share\gimp\*"; DestDir: "{app}\share\gimp"; Components: { Source: "{#GIMP_DIR32}\share\metainfo\*"; DestDir: "{app}\share\metainfo"; Components: {#GIMP_ARCHS}; Flags: recursesubdirs restartreplace uninsrestartdelete ignoreversion #define DEPS_ARCHS="deps32 or deps64 or depsARM64" -#define OMISSIONS="\gir-1.0,\man,\vala" Source: "{#DEPS_DIR32}\etc\*"; DestDir: "{app}\etc"; Excludes: "\gimp"; Components: {#DEPS_ARCHS}; Flags: recursesubdirs restartreplace uninsrestartdelete ignoreversion -Source: "{#DEPS_DIR32}\share\*"; DestDir: "{app}\share"; Excludes: "{#OMISSIONS},\gimp\*,\metainfo\*,ghostscript\*,\locale\*,\lua\*,\mypaint-data\*,"; Components: {#DEPS_ARCHS}; Flags: recursesubdirs createallsubdirs restartreplace uninsrestartdelete ignoreversion +Source: "{#DEPS_DIR32}\share\*"; DestDir: "{app}\share"; Excludes: "\gimp\*,\metainfo\*,\locale\*,\mypaint-data\*,"; Components: {#DEPS_ARCHS}; Flags: recursesubdirs createallsubdirs restartreplace uninsrestartdelete ignoreversion ;Optional neutral components (complete install) -Source: "{#DEPS_DIR32}\share\ghostscript\*"; DestDir: "{app}\share\ghostscript"; Components: gs and ({#GIMP_ARCHS}); Flags: recursesubdirs restartreplace uninsrestartdelete ignoreversion Source: "{#GIMP_DIR32}\share\locale\*"; DestDir: "{app}\share\locale"; Components: loc; Flags: dontcopy recursesubdirs restartreplace uninsrestartdelete ignoreversion #include "base_po-files.list" #ifdef LUA Source: "{#GIMP_DIR32}\lib\gimp\{#GIMP_API_VERSION}\interpreters\lua.interp"; DestDir: "{app}\lib\gimp\{#GIMP_API_VERSION}\interpreters"; Components: lua and ({#GIMP_ARCHS}); Flags: recursesubdirs restartreplace uninsrestartdelete ignoreversion -Source: "{#DEPS_DIR32}\share\lua\*"; DestDir: "{app}\share\lua"; Components: lua and ({#GIMP_ARCHS}); Flags: recursesubdirs restartreplace ignoreversion uninsrestartdelete #endif Source: "{#DEPS_DIR32}\share\mypaint-data\*"; DestDir: "{app}\share\mypaint-data"; Components: mypaint; Flags: recursesubdirs restartreplace uninsrestartdelete ignoreversion #ifdef PYTHON @@ -327,9 +324,6 @@ Source: "{#GIMP_DIR32}\lib\gimp\{#GIMP_API_VERSION}\plug-ins\twain.exe"; DestDir ;prefer 32bit twain plugin over 64bit because 64bit twain drivers are rare Source: "{#GIMP_DIR32}\lib\gimp\{#GIMP_API_VERSION}\plug-ins\twain\twain.exe"; DestDir: "{app}\lib\gimp\{#GIMP_API_VERSION}\plug-ins\twain"; Components: gimp32on64; Flags: recursesubdirs restartreplace uninsrestartdelete ignoreversion -;special case due to MS-Windows engine -Source: "{#DEPS_DIR32}\etc\gtk-3.0\*"; DestDir: "{app}\32\etc\gtk-3.0"; Components: gimp32on64; Flags: recursesubdirs restartreplace uninsrestartdelete ignoreversion - ;upgrade zlib1.dll in System32 if it's present there to avoid breaking plugins ;sharedfile flag will ensure that the upgraded file is left behind on uninstall to avoid breaking other programs that use the file Source: "{#DEPS_DIR32}\bin\zlib1.dll"; DestDir: "{sys}"; Components: {#GIMP_ARCHS}; Flags: restartreplace sharedfile 32bit uninsrestartdelete comparetimestamp; Check: BadSysDLL('zlib1.dll',32) diff --git a/build/windows/installer/base_twain32on64.list b/build/windows/installer/base_twain32on64.list index a89fda3d62..b3f482b29d 100644 --- a/build/windows/installer/base_twain32on64.list +++ b/build/windows/installer/base_twain32on64.list @@ -6,7 +6,6 @@ lib\gdk-pixbuf-2.0\2.10.0\loaders.cache lib\babl-0.1\*.dll lib\gegl-0.4\*.dll share\locale\ -bin\gspawn*.exe bin\*.dll !GIMP bin\*.dll diff --git a/build/windows/installer/data_configoverride.isi b/build/windows/installer/data_configoverride.isi index 2cc20c4ac9..ec76a5c0f7 100644 --- a/build/windows/installer/data_configoverride.isi +++ b/build/windows/installer/data_configoverride.isi @@ -28,9 +28,5 @@ Source: "{code:GetExternalConfDir}\{#FileName}"; DestDir: "{app}\32\{#ConfigDir} #define public ConfigDir "etc\gimp\" + GIMP_API_VERSION #expr ProcessConfigDir -#define public BaseDir DEPS_DIR32 -#define public ConfigDir "etc\gtk-3.0" -#expr ProcessConfigDir - #define public ConfigDir "etc\fonts" #expr ProcessConfigDir