Cava Packager 2.0 can successfully package Gtk2 based applications on Windows.
Tested against the CamelBox Perl distibution, the following additional steps are required.
Firstly, all of the Gtk2 releated dlls need to be added as Additional Shared Libraries. In the CamelBox distribution these are all distributed in the Perl/bin directory.
charset.dll freetype6.dll iconv.dll intl.dll jpeg62.dll libart_lgpl_2-2.dll libatk-1.0-0.dll libcairo-2.dll libexpat-1.dll libfontconfig-1.dll libgailutil-18.dll libgdk-win32-2.0-0.dll libgdk_pixbuf-2.0-0.dll libgio-2.0-0.dll libglade-2.0-0.dll libgladeui-1-7.dll libglib-2.0-0.dll libgmodule-2.0-0.dll libgnomecanvas-2-0.dll libgobject-2.0-0.dll libgoocanvas-3.dll libgthread-2.0-0.dll libgtk-win32-2.0-0.dll libpango-1.0-0.dll libpangocairo-1.0-0.dll libpangoft2-1.0-0.dll libpangowin32-1.0-0.dll libpng12-0.dll libtiff3.dll libxml2.dll zlib1.dll
Finally, you need to add the Gtk2 configuration files and some gtk-2.0 libraries. The best way to do this is to add a Post Build Script to your project configuration and use that to add the necessary files to your dll directory after each build.
An example post build script that adds the necessary files from the CamelBox distribution is:
use strict; use warnings; use File::Copy::Recursive; use Cava::Packager::Release; my $release = Cava::Packager::Release->new(); my $dllpath = $release->get_dll_path; my $targetpath = qq($dllpath/etc); mkdir($targetpath, 0644); my $sourcefolder = q(c:/camelbox/etc); File::Copy::Recursive::dircopy($sourcefolder, $targetpath); $targetpath = qq($dllpath/lib); mkdir($targetpath, 0755); $targetpath = qq($dllpath/lib/gtk-2.0); mkdir($targetpath, 0755); $sourcefolder = q(c:/camelbox/lib/gtk-2.0); File::Copy::Recursive::dircopy($sourcefolder, $targetpath); 1;