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.
This commit is contained in:
Bruno 2024-06-13 08:47:40 -03:00
parent 08701da730
commit c808d13b6e
7 changed files with 135 additions and 143 deletions

View File

@ -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

View File

@ -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:

View File

@ -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

View File

@ -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)

View File

@ -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)

View File

@ -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

View File

@ -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