Table of Contents

Windows

Download and run the installer. Also have a look at the changelog.

Older versions are available on Bitbucket (2014 and newer) or Google Code (2013 and older).

Photivo for Windows has a portable mode. See below for more information.

Portable Mode

Portable mode makes it possible to carry Photivo around on a USB drive or SD card by keeping all program files and settings together in one place.

To enable portable mode create a file called use-portable-profile (just like this, no file extension) in Photivo’s program folder (where photivo.exe is located). The content of that file is not important, it can be completely empty.

When use-portable-profile is present Photivo stores all user data (settings, presets etc.) inside its program folder instead of in your user application data folder.

Building Photivo from Source

This section covers compiling 64bit Photivo binaries on a Windows machine with the GCC/MinGW compiler.

Photivo has quite a few dependencies, and building all of them manually is a tedious task. Luckily MSys2 provides almost everything through its package manager for easy installation. So, MSys it is. :-)

Setting Up the MSys2 Toolchain

The MSys project provides a detailed installation guide. Here is the short version.

Download the latest version of the msys2-base-x86_64 tar.xz archive and unpack it to wherever you want to run MSys from.

For some people the default repository URL repo.msys2.org is not reachable. In that case get the archive from the MSys2 Github project. After unpacking comment out the unreachable mirror in all mirrorlist files in the <msys-dir>/etc/pacman.d folder.

The project seems to be aware of the problem and is trying to fix it. Keep an eye on issue 1884 for news.

Run the <msys-dir>/msys2_shell.cmd script and let it configure itself. When it’s done close the console window with the close button as explained on screen.

If you’re affected by the unreachable mirror, check the mirrorlist files. You might have to edit them again. Then restart msys2_shell.cmd and update the system by running:

pacman -Syuu

Run it as often as needed until it says there are no packages to update. If prompted to do so, restart the console with msys2_shell.cmd.

Finally install the compiler toolchain and support tools:

pacman -S pactoys git patch zip autoconf automake make
pacboy -S gcc:x pkg-config:x make:x ninja:x cmake:x

Now close the console. We are done with msys2_shell.cmd at this point. It is only needed for the initial installation. Do not use it to build Photivo!

Installing Dependencies

Start the MinGW 64bit Bash console with <msys-dir>/mingw64.exe.

Almost all of Photivo’s dependencies can be installed through the package manager. Note that we’re using the pacboy wrapper to keep the package names short. The :x marks the MinGW 64bit version of the packages:

pacboy -S exiv2:x fftw:x lensfun:x liblqr:x libraw:x qt5:x

The only dependency we need to build manually is GraphicsMagick. Pacman only provides a version built with quantum depth 8 (i.e. 8 bit colour depth), but we need 16.

We’re going to use the official MSys GraphicsMagick build script, modify it for Q16, then build and install it as a normal package managed by Pacman. Run this:

git clone https://github.com/msys2/MINGW-packages.git
cd MINGW-packages/mingw-w64-graphicsmagick
sed -i 's:\(pkgver\}/configure\):\1 --with-quantum-depth=16:' PKGBUILD
sed -i 's:--with-modules:--without-modules:' PKGBUILD
sed -i 's:--with-wmf:--without-wmf --without-trio --without-ttf:' PKGBUILD

The PKGBUILD build script is now modified to create a Q16 GraphicsMagick. Run:

makepkg -si

With this command dependencies are installed, GraphicsMagick is built and finally installed with Pacman. We’re now ready to build Photivo.

Compiling Photivo

Clone the Git repository, create a build directory and run the build in there:

git clone https://bitbucket.org/Photivo/photivo.git
cd photivo
mkdir _build
cd _build
qmake ../photivo.pro CONFIG-=debug INCLUDEPATH=/mingw64/include/lensfun
mingw32-make -j`nproc` && echo Success.

The Gimp plugin is not built by default. Gimp 2.10 does not need it anymore. If you still want to try building it, you probably need to install gimp:x as a dependency.

Packaging Photivo

In this step we’ll create a self contained package directory that contains all the binaries and data files Photivo needs to run.

Make sure you still have a console open in the build directory from the previous step. Then run the following commands.

The version numbers of the DLLs might differ depending on the exact version you installed earlier through the MSys package manager.
mkdir deploy
cd deploy

cp ../photivo.exe .
cp ../ptClear.exe .

mkdir -p Translations
cp ../../Translations/*.qm Translations
cp -r ../../ChannelMixers .
cp -r ../../Curves .
cp -r ../../LensfunDatabase .
cp -r ../../Presets .
cp -r ../../Profiles .
cp -r ../../Themes .
cp -r ../../UISettings .

cp /mingw64/bin/Qt5Core.dll .
cp /mingw64/bin/Qt5Gui.dll .
cp /mingw64/bin/Qt5Network.dll .
cp /mingw64/bin/Qt5Widgets.dll .
cp /mingw64/bin/libGraphicsMagick++-12.dll .
cp /mingw64/bin/libGraphicsMagick-3.dll .
cp /mingw64/bin/libGraphicsMagickWand-2.dll .
cp /mingw64/bin/libbrotlicommon.dll .
cp /mingw64/bin/libbrotlidec.dll .
cp /mingw64/bin/libbz2-1.dll .
cp /mingw64/bin/libcrypto-1_1-x64.dll .
cp /mingw64/bin/libcurl-4.dll .
cp /mingw64/bin/libdouble-conversion.dll .
cp /mingw64/bin/libexiv2.dll .
cp /mingw64/bin/libexpat-1.dll .
cp /mingw64/bin/libfftw3-3.dll .
cp /mingw64/bin/libfreetype-6.dll .
cp /mingw64/bin/libgcc_s_seh-1.dll .
cp /mingw64/bin/libglib-2.0-0.dll .
cp /mingw64/bin/libgomp-1.dll .
cp /mingw64/bin/libgraphite2.dll .
cp /mingw64/bin/libharfbuzz-0.dll .
cp /mingw64/bin/libiconv-2.dll .
cp /mingw64/bin/libicudt67.dll .
cp /mingw64/bin/libicuin67.dll .
cp /mingw64/bin/libicuuc67.dll .
cp /mingw64/bin/libidn2-0.dll .
cp /mingw64/bin/libintl-8.dll .
cp /mingw64/bin/libjasper-4.dll .
cp /mingw64/bin/libjbig-0.dll .
cp /mingw64/bin/libjbig2dec-0.dll .
cp /mingw64/bin/libjpeg-8.dll .
cp /mingw64/bin/liblcms2-2.dll .
cp /mingw64/bin/liblensfun.dll .
cp /mingw64/bin/liblqr-1-0.dll .
cp /mingw64/bin/libltdl-7.dll .
cp /mingw64/bin/liblzma-5.dll .
cp /mingw64/bin/libnghttp2-14.dll .
cp /mingw64/bin/libpcre-1.dll .
cp /mingw64/bin/libpcre2-16-0.dll .
cp /mingw64/bin/libpng16-16.dll .
cp /mingw64/bin/libpsl-5.dll .
cp /mingw64/bin/libraw-20.dll .
cp /mingw64/bin/libssh2-1.dll .
cp /mingw64/bin/libssl-1_1-x64.dll .
cp /mingw64/bin/libstdc++-6.dll .
cp /mingw64/bin/libsystre-0.dll .
cp /mingw64/bin/libtiff-5.dll .
cp /mingw64/bin/libtiffxx-5.dll .
cp /mingw64/bin/libtre-5.dll .
cp /mingw64/bin/libunistring-2.dll .
cp /mingw64/bin/libwebp-7.dll .
cp /mingw64/bin/libwebpmux-3.dll .
cp /mingw64/bin/libwinpthread-1.dll .
cp /mingw64/bin/libxml2-2.dll .
cp /mingw64/bin/libzstd.dll .
cp /mingw64/bin/zlib1.dll .

mkdir -p platforms
cp /mingw64/share/qt5/plugins/platforms/qwindows.dll platforms
cp -r /mingw64/share/qt5/plugins/imageformats .