Jump to content

Recommended Posts

Posted
On 4/16/2025 at 5:19 AM, ElementalWarrior said:

Don't use ai to answer questions for technical projects like this. It does a garbage job.

Affinity does not get to choose whether opencl uses d12 under the hood. Its opencl implementation dependent. OpenCL is akin to defining a Car with 2 doors and an engine. It could be a mercedes, or a ford, but the application doesn't care as long as you tell it that you have 2 doors and an engine.

If you see vkd3d logs when running affinity with vkd3d installed, then it is in some manner using d12. Their feature list page lists d3d10. So likely most of their application is written to use that functionality. https://affinity.serif.com/en-us/designer/full-feature-list/

But any advanced graphics application often support multiple libraries (metal/d3d/opengl/vulkan) and a varying combination of these, these days.

---

Wine already has built-in DirectX12 to satisfy Affinity

This is false. Although I wouldn't be surprised if most package libraries install vkd3d as a dependency for you.

If vkd3d is available when building Wine, then Wine will use it to support
Direct3D 12 applications.

https://gitlab.winehq.org/wine/vkd3d


Note on https://affinity.serif.com/en-us/designer/full-feature-list/  it says:
Hardware GPU acceleration**  
** Requires: Direct3D level 12.0-capable card

And also under input devices it says:
DirectX 11 and Direct 2D rendering with Windows Advanced Rasterization Platform (WARP) fallback

Also Wine built with default configuration does indeed come with vkd3d. It is listed as being bundled here: https://gitlab.winehq.org/wine/wine/-/releases/wine-10.2 , and you can see it in the dll compile folder and in the built syswow64 and system32 as d3d12.dll and d3d12core.dll

Another confusing thing I found out is that Winetricks does not install Wine vkd3d, in actuality 'winetricks vkd3d' is installing vkd3d-proton, to see that for yourself watch the winetricks log.

---

So just to recap:
Installing 'vk3d' is unnecessary as Wine already has built-in DirectX12 support; which at most satisfies the Affinity GPU requirement because Affinity is using DirectX 11 and OpenCl for acceleration.

---

Additional:

I believe I have found the link between the requirement for DirectX12, Hardware Acceleration, and OpenCl. See here: https://devblogs.microsoft.com/directx/in-the-works-opencl-and-opengl-mapping-layers-to-directx/

Posted (edited)

This is amazing! :) Just finished installation of latest Affinity Designer 2.6.2 on bazzite 41 using ElementalWarrior Wine 1.1

I'm running on wine64, so I can confirm that this is working! Thanks for everyone who made this possible!
Some advice for anyone who wants to do this, too:

Install wine
To install Affinity Software, in general, follow the instructions at
https://github.com/ryzendew/AffinityOnLinux
However, the script mentioned on this page is not running if you do not have wine installed. However, on bazzite (my Distro of choice), I don't want to install software via package management or rpm-ostree, so I recommened another method to use wine:

  1. install ProtonPlus to manage Wine Versions https://flathub.org/apps/com.vysp3r.ProtonPlus
  2. In ProtonPlus, install Wine Staging 10.5
  3. Open ~/.bashrc and add this to the end (adjust the path to your wine version)
    if ! [[ "$PATH" =~ ".local/share/lutris/runners/wine/wine-10.5-staging-amd64/bin/" ]]; then
        PATH="/home/$USER/.local/share/lutris/runners/wine/wine-10.5-staging-amd64/bin/:$PATH"
    fi
    export PATH
  4. Reopen your terminal window or run

    . ~/.bashrc

After that, you should  be fine to follow instructions at https://github.com/ryzendew/AffinityOnLinux   

Bildschirmfoto_20250422_024923.thumb.png.04b1dfb16b91c69667bbcd5ce34fd7d9.png

Edited by TechArtGuy
Posted

Thank you all for the guides, managed to install Photo on Fedora 42, but it gives an aero disabled error when I'm trying to launch, even though I set the windows version to 10 or 11.

What should I try?

Kpernykp_20250420_224306.png.535d495dab85adb5248169d6f4b74bc0.png

  • 2 weeks later...
Posted
On 4/21/2025 at 9:49 PM, TechArtGuy said:

This is amazing! :) Just finished installation of latest Affinity Designer 2.6.2 on bazzite 41 using ElementalWarrior Wine 1.1

I'm running on wine64, so I can confirm that this is working! Thanks for everyone who made this possible!
Some advice for anyone who wants to do this, too:

Install wine
To install Affinity Software, in general, follow the instructions at
https://github.com/ryzendew/AffinityOnLinux
However, the script mentioned on this page is not running if you do not have wine installed. However, on bazzite (my Distro of choice), I don't want to install software via package management or rpm-ostree, so I recommened another method to use wine:

  1. install ProtonPlus to manage Wine Versions https://flathub.org/apps/com.vysp3r.ProtonPlus
  2. In ProtonPlus, install Wine Staging 10.5
  3. Open ~/.bashrc and add this to the end (adjust the path to your wine version)
    if ! [[ "$PATH" =~ ".local/share/lutris/runners/wine/wine-10.5-staging-amd64/bin/" ]]; then
        PATH="/home/$USER/.local/share/lutris/runners/wine/wine-10.5-staging-amd64/bin/:$PATH"
    fi
    export PATH
  4. Reopen your terminal window or run

    . ~/.bashrc

After that, you should  be fine to follow instructions at https://github.com/ryzendew/AffinityOnLinux   

Bildschirmfoto_20250422_024923.thumb.png.04b1dfb16b91c69667bbcd5ce34fd7d9.png

Oh wow, I had a new computer install and fired these scripts up and they were absolutely beautiful. So much better than installing manually like I did so long ago.

Posted (edited)

Hi everyone,

I want to give a big thank you to @ElementalWarrior, @Wanesty, and @__avg__ for their invaluable work in getting Affinity Photo to run on Wine. With the help of this thread, I was able to build a Flatpak of Affinity Photo 2.6.2 that automatically configures Wine and gets everything running.

You can find it here and try it for yourself.

What works:

  • Runs on the latest Wine 10.7.
  • Shows a progress dialog on first run while the Wine dependencies are installing.
  • Automatically detects and sets DPI.

What doesn't work:

  • The "New" dialog is missing all the default templates.
  • The settings still don't save.
  • Exporting PNGs still crashes.
  • I wasn't able to get it to run stable on Wayland.
  • I wasn't able to get it to run stable with DXVK.
Edited by quentez
Posted
8 hours ago, quentez said:

Hi everyone,

I want to give a big thank you to @ElementalWarrior, @Wanesty, and @__avg__ for their invaluable work in getting Affinity Photo to run on Wine. With the help of this thread, I was able to build a Flatpak of Affinity Photo 2.6.2 that automatically configures Wine and gets everything running.

You can find it here and try it for yourself.

What works:

  • Runs on the latest Wine 10.7.
  • Shows a progress dialog on first run while the Wine dependencies are installing.
  • Automatically detects and sets DPI.

What doesn't work:

  • The "New" dialog is missing all the default templates.
  • The settings still don't save.
  • Exporting PNGs still crashes.
  • I wasn't able to get it to run stable on Wayland.
  • I wasn't able to get it to run stable with DXVK.

vcrun2022 solves the png export crashing.

Posted
8 hours ago, quentez said:

Hi everyone,

I want to give a big thank you to @ElementalWarrior, @Wanesty, and @__avg__ for their invaluable work in getting Affinity Photo to run on Wine. With the help of this thread, I was able to build a Flatpak of Affinity Photo 2.6.2 that automatically configures Wine and gets everything running.

You can find it here and try it for yourself.

What works:

  • Runs on the latest Wine 10.7.
  • Shows a progress dialog on first run while the Wine dependencies are installing.
  • Automatically detects and sets DPI.

What doesn't work:

  • The "New" dialog is missing all the default templates.
  • The settings still don't save.
  • Exporting PNGs still crashes.
  • I wasn't able to get it to run stable on Wayland.
  • I wasn't able to get it to run stable with DXVK.

and if i may ask does this use dxvk or vkd3d?

Posted

Anyone have tips on getting StudioLink working? I've been happily running Publisher using the tips above, and I've installed Designer and Photo just now (having decided to purchase the universal license in part so that I can use the designer persona sometimes), but I keep getting the "App Launch Required" warning:

image.png.ec87ca1f12b3a054f0b80a889a9c665b.png

 

I'm on Fedora FWIW.

Posted (edited)

Hi @Pacific

17 hours ago, Pacific said:

vcrun2022 solves the png export crashing.

It does, but in my case it resulted in crashes when saving the project file instead, so I thought best to skip it for now.

17 hours ago, Pacific said:

and if i may ask does this use dxvk or vkd3d?

Not at the moment. It would be straightforward to add but I didn't for two reasons:

  1. In my case DXVK was very unstable and the whole window was completely blank most of the time.
     
  2. I got OpenCL acceleration working with @__avg__'s patches and VKD3D as I have an Nvidia GPU, but I wanted to confirm it wouldn't create issues for people with Intel/AMD GPUs before including that in the Flatpak.

One option would be to add flags to the startup script so that end users could easily customize this behavior with Flatseal.

Edited by quentez
Posted
16 hours ago, aaazalea said:

Anyone have tips on getting StudioLink working? I've been happily running Publisher using the tips above, and I've installed Designer and Photo just now (having decided to purchase the universal license in part so that I can use the designer persona sometimes), but I keep getting the "App Launch Required" warning:

image.png.ec87ca1f12b3a054f0b80a889a9c665b.png

 

I'm on Fedora FWIW.

I had the same thing. I launched the individual apps and put in my license details and it started working then. I'm assuming that you are using the trial versions - studio link doesn't work on those.

Posted
On 5/9/2025 at 9:18 AM, Daegalus said:

Hey guys, just letting you know I have a 10.6 build using wine-tkg with the 2 patches built for RoResolveNamespace and the Installer Icon fix. You can find the builds here: https://github.com/daegalus/wine-tkg-affinity/releases/tag/25Y07.598

Currently working on a 10.7 build

I installed both affinity photo and designer (wine-tkg-affinity). None of them go past the small window that shows the version number when launching

I used the following guide: https://github.com/Twig6943/AffinityOnLinux/blob/main/Guides/Lutris/Guide.md

Here's the log:

Started initial process 80112 from /home/desktop/.local/share/lutris/runners/wine/wine-tkg-affinity-x86_64/bin/wine /home/desktop/AffinityOnLinux/drive_c/Program Files/Affinity/Photo 2/Photo.exe
Start monitoring process.
fsync: up and running.
/usr/src/debug/rocm-opencl-runtime/clr-rocm-6.3.3/rocclr/os/os_posix.cpp:321: static void amd::Os::currentStackInfo(unsigned char**, size_t*): Assertion `Os::currentStackPtr() >= *base - *size && Os::currentStackPtr() < *base && "just checking"' failed.

Unhandled Exception: System.IO.FileFormatException: The image format is unrecognized. ---> System.Runtime.InteropServices.COMException: Exception from HRESULT: 0x88982F07
   --- End of inner exception stack trace ---
   at System.Windows.Media.Imaging.BitmapDecoder.SetupDecoderFromUriOrStream(Uri uri, Stream stream, BitmapCacheOption cacheOption, Guid& clsId, Boolean& isOriginalWritable, Stream& uriStream, UnmanagedMemoryStream& unmanagedMemoryStream, SafeFileHandle& safeFilehandle)
   at System.Windows.Media.Imaging.BitmapDecoder.CreateFromUriOrStream(Uri baseUri, Uri uri, Stream stream, BitmapCreateOptions createOptions, BitmapCacheOption cacheOption, RequestCachePolicy uriCachePolicy, Boolean insertInDecoderCache)
   at System.Windows.Media.Imaging.BitmapDecoder.Create(Uri bitmapUri, BitmapCreateOptions createOptions, BitmapCacheOption cacheOption, RequestCachePolicy uriCachePolicy)
   at Serif.Affinity.ResourceManager.GetIconSourceCore(String name, Int32 desiredPixelWidth)
   at Photo.Application.get_Icon()
   at Serif.Affinity.UI.AffinityWindow..ctor(IServiceProvider serviceProvider)
   at Serif.Affinity.Services.WindowService..ctor(IServiceProvider serviceProvider, ISettingsService settingsService)
   at Serif.Affinity.Application.InitialiseServices(ServiceManager services)
   at Photo.Application.InitialiseServices(ServiceManager services)
   at Serif.Affinity.Application.OnStartup(StartupEventArgs e)
   at System.Windows.Application.<.ctor>b__1_0(Object unused)
   at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
   at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)
   at System.Windows.Threading.DispatcherOperation.InvokeImpl()
   at MS.Internal.CulturePreservingExecutionContext.CallbackWrapper(Object obj)
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
   at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
   at MS.Internal.CulturePreservingExecutionContext.Run(CulturePreservingExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Windows.Threading.DispatcherOperation.Invoke()
   at System.Windows.Threading.Dispatcher.ProcessQueue()
   at System.Windows.Threading.Dispatcher.WndProcHook(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
   at MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
   at MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o)
   at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
   at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(Object source, Delegate callback, Object args, Int32 numArgs, Delegate catchHandler)
   at System.Windows.Threading.Dispatcher.LegacyInvokeImpl(DispatcherPriority priority, TimeSpan timeout, Delegate method, Object args, Int32 numArgs)
   at MS.Win32.HwndSubclass.SubclassWndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam)
   at MS.Win32.UnsafeNativeMethods.DispatchMessage(MSG& msg)
   at System.Windows.Threading.Dispatcher.PushFrameImpl(DispatcherFrame frame)
   at System.Windows.Application.RunDispatcher(Object ignore)
   at System.Windows.Application.RunInternal(Window window)
   at Photo.Application.Main(String[] args)
Monitored process exited.
Initial process has exited (return code: 20992)
Exit with return code 20992

 

Posted
On 4/22/2025 at 3:49 AM, TechArtGuy said:

This is amazing! :) Just finished installation of latest Affinity Designer 2.6.2 on bazzite 41 using ElementalWarrior Wine 1.1

I'm running on wine64, so I can confirm that this is working! Thanks for everyone who made this possible!
Some advice for anyone who wants to do this, too:

Install wine
To install Affinity Software, in general, follow the instructions at
https://github.com/ryzendew/AffinityOnLinux
However, the script mentioned on this page is not running if you do not have wine installed. However, on bazzite (my Distro of choice), I don't want to install software via package management or rpm-ostree, so I recommened another method to use wine:

  1. install ProtonPlus to manage Wine Versions https://flathub.org/apps/com.vysp3r.ProtonPlus
  2. In ProtonPlus, install Wine Staging 10.5
  3. Open ~/.bashrc and add this to the end (adjust the path to your wine version)
    if ! [[ "$PATH" =~ ".local/share/lutris/runners/wine/wine-10.5-staging-amd64/bin/" ]]; then
        PATH="/home/$USER/.local/share/lutris/runners/wine/wine-10.5-staging-amd64/bin/:$PATH"
    fi
    export PATH
  4. Reopen your terminal window or run

    . ~/.bashrc

After that, you should  be fine to follow instructions at https://github.com/ryzendew/AffinityOnLinux   

Bildschirmfoto_20250422_024923.thumb.png.04b1dfb16b91c69667bbcd5ce34fd7d9.png

I have just followed your guide with Bazzite 42, I just had to make one change because, for whatever reason, 7z is called 7za in 42, which means the script fails the dependency check.

mkdir -p ~/bin
ln -s "$(which 7za)" ~/bin/7z
Posted

Just signed up to say thanks so much for everyone's efforts involved. I recently installed Fedora 42 to see how it goes and it's amazing to what state it's reached. I tried all sorts of ways of installing the app. In the end I tried the guides and scripts of: 

The last installation attempts were with Twig's Bottles and Lutris guides since they have scripts to do the installation for you. Worked immediately!

The only thing I'm seeing with the usage (With Affinity Designer 2) is that working with a document or, the resizing the window creates black stutters. As if the screen is a bit slow to refresh, wondering if anyone else experiences this 🤔

Otherwise, great stuff 😁thanks again!

Posted

Hi everyone, after several weeks of banging my head against the wall, I’ve finally decided to write and ask for help. I usually try to solve problems by weighing different options, reading online, and doing research—but this time I’m completely stuck. I’ve tried everything. At first, I thought the issue was with the distros I was using. I tried Garuda, Fedora, and EndeavourOS, but nothing worked. I followed Wanesty’s step-by-step guide, and I also tried the AffinityOnLinux script, but I still can’t install the Affinity suite.

This is the last thread tying me to a thirty-year professional experience with Apple’s ecosystem, from which I’ve been gradually moving away—first by switching from Adobe to Affinity, and now with my current goal: to leave Apple entirely and move to Linux. This is a transition I’ve been wanting to make for a very, very long time.

That said, could someone please help me install the three Affinity suite programs on EndeavourOS? Maybe with a foolproof step-by-step guide? I’ve already wiped and reinstalled my PC at least three times over the past few months, and I’m really getting to the point of giving up. I would be extremely grateful if someone could help.

Posted

I am in the same boat as Open Grafica. Cycled through all the different instructions and feel they are missing steps, likely because I do not have the Linux system knowledge required to understand it properly.

https://github.com/ryzendew/AffinityOnLinux/blob/patch-1/Guide/Guide.md seems to bounce between instructions for Heroic and Lutris

Quote

 

Extract the Elemental Warrior's Pre-built wine binaries to Heroic/Lutris wine directory

/home/USER/.config/heroic/tools/wine

 

Didn't have that directory, put it in the place mentioned in the next line instead and that seemed to register correctly:

Flatpak's Wine location
/home/USER/.var/app/com.heroicgameslauncher.hgl/config/heroic/tools/wine

Quote

Initialize the prefix
In order to initialize the prefix run the setup file from heroic. (It'll probably crash wait for it to crash if it somehow opens up close it yourself)

My install actually completed here!

Got as far as here, once again didn't have that directory.

Quote

 

Placing WinMetadata
Unzip WinMetadata.zip

to $HOME/.Affinitywine/drive_c/windows/system32

 

Granted, Winetricks was screaming at me the whole time that the ancient Wine version was no longer supported upstream.

From https://github.com/Twig6943/AffinityOnLinux/blob/main/Guides/Heroic/Guide.md

 

Quote

Wine-TKG-Affinity (Recommended) (You're supposed to extract the usr folder inside the archive and then rename it to wine-tkg-affinity)

Can't find a 'usr' folder anywhere in this! 

Can't wrap my head around the scripts metioned in either repo at all.

 

Posted
1 hour ago, aspiring_geek83 said:

I am in the same boat as Open Grafica. Cycled through all the different instructions and feel they are missing steps, likely because I do not have the Linux system knowledge required to understand it properly.

https://github.com/ryzendew/AffinityOnLinux/blob/patch-1/Guide/Guide.md seems to bounce between instructions for Heroic and Lutris

Didn't have that directory, put it in the place mentioned in the next line instead and that seemed to register correctly:

Flatpak's Wine location
/home/USER/.var/app/com.heroicgameslauncher.hgl/config/heroic/tools/wine

My install actually completed here!

Got as far as here, once again didn't have that directory.

Granted, Winetricks was screaming at me the whole time that the ancient Wine version was no longer supported upstream.

From https://github.com/Twig6943/AffinityOnLinux/blob/main/Guide

Can't find a 'usr' folder anywhere in this! 

Can't wrap my head around the scripts metioned in either repo at all.

 

For the wine-tkg-affinity, if you download the Fedorabuilt one, the `usr` folder is the top level folder with the long wine-tkg name and random string. (See the screenshot of the with just the one folder). Just rename that folder to `usr`

If you download the Archbuilt one, the usr folder is right there.

Screenshot_20250525-160918.png

Screenshot_20250525-161045.png

Posted
27 minutes ago, Daegalus said:

Per wine-tkg-affinity, se scarichi quello Fedorabuilt, la cartella `usr` è la cartella di primo livello con il nome lungo wine-tkg e una stringa casuale. (Vedi lo screenshot con una sola cartella). Basta rinominare quella cartella in `usr`

Se scarichi la versione Archbuilt, la cartella usr si trova proprio lì.

Screenshot_20250525-160918.png

Screenshot_20250525-161045.png

I tried again now but nothing, I followed the Wanesty guide step by step, but the program does not start, maybe I am the one who can not understand, I ask you users much more expert than me, what is the best way to have the suite working?

1) use the script that automates everything AffinityOnLinux?
(https://github.com/Twig6943/AffinityOnLinux)

2) the Wanesty guide?

in case it is the first option, it is very easy as there is little to do except choosing the options presented by the script

I followed the Wanesty guide for the 6th time step by step, going to modify the paths where necessary but nothing, both Photo, and Designer, and Publisher do not start, I do not know what to do anymore.

my PC is a DELL PRECISION T1500 composed of Intel i7 870 CPU, gtx 1060, 16gb RAM, SSD, proprietary DELL motherboard. could it be a nvidia graphics card problem?

Posted
1 hour ago, Daegalus said:

No clue. I don't use those guides or scripts. I just add the wine as a runner in Bottles, and use bottles for everything after that. 

Could you tell me what you did? What wine configuration do you use? Do all 3 programs work Affinity, Photo, Publisher and Designer?

Posted

Hello, I couldn't find anywhere to post bug reports on the GitLab repo so here are some issues I noticed.

I got a lot of warnings while running

/home/USER/Documents/ElementalWarrior-wine/configure --prefix=/home/YOUR-USER-FOLDER/Documents/ElementalWarrior-wine/wine-install --enable-win64

I needed to install flex and bison.

Then running the above reports:

checking build system type... x86_64-pc-linux-gnu
checking host system type... x86_64-pc-linux-gnu
checking whether make sets $(MAKE)... yes
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables... 
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether the compiler supports GNU C... yes
checking whether gcc accepts -g... yes
checking for gcc option to enable C11 features... none needed
checking for g++... g++
checking whether the compiler supports GNU C++... yes
checking whether g++ accepts -g... yes
checking for g++ option to enable C++11 features... none needed
checking for cpp... cpp
checking for ld... ld
checking whether gcc supports __builtin_ms_va_list... yes
checking for the directory containing the Wine tools... 
checking for flex... flex
checking whether flex is recent enough... yes
checking for bison... bison
checking whether bison is recent enough... yes
checking for ar... ar
checking for strip... strip
checking for ranlib... ranlib
checking whether ln -s works... yes
checking for grep that handles long lines and -e... /usr/bin/grep
checking for egrep... /usr/bin/grep -E
checking for ldconfig... /sbin/ldconfig
checking for msgfmt... no
checking for pkg-config... pkg-config
checking for i386_set_ldt in -li386... no
checking for special C compiler options needed for large files... no
checking for _FILE_OFFSET_BITS value needed for large files... no
checking for stdio.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for strings.h... yes
checking for sys/stat.h... yes
checking for sys/types.h... yes
checking for unistd.h... yes
checking for CL/cl.h... no
checking for EGL/egl.h... yes
checking for OpenCL/opencl.h... no
checking for arpa/inet.h... yes
checking for arpa/nameser.h... yes
checking for asm/types.h... yes
checking for asm/user.h... no
checking for elf.h... yes
checking for float.h... yes
checking for gettext-po.h... no
checking for libproc.h... no
checking for link.h... yes
checking for linux/cdrom.h... yes
checking for linux/filter.h... yes
checking for linux/hdreg.h... yes
checking for linux/hidraw.h... yes
checking for linux/input.h... yes
checking for linux/ioctl.h... yes
checking for linux/major.h... yes
checking for linux/param.h... yes
checking for linux/serial.h... yes
checking for linux/types.h... yes
checking for linux/ucdrom.h... no
checking for lwp.h... no
checking for mach-o/loader.h... no
checking for mach/mach.h... no
checking for machine/cpu.h... no
checking for machine/sysarch.h... no
checking for mntent.h... yes
checking for netdb.h... yes
checking for netinet/in.h... yes
checking for netinet/in_systm.h... yes
checking for netinet/tcp.h... yes
checking for netinet/tcp_fsm.h... no
checking for pcap/pcap.h... no
checking for port.h... no
checking for pthread.h... yes
checking for pwd.h... yes
checking for sched.h... yes
checking for scsi/scsi.h... yes
checking for scsi/scsi_ioctl.h... yes
checking for scsi/sg.h... yes
checking for stdint.h... (cached) yes
checking for sys/attr.h... no
checking for sys/auxv.h... yes
checking for sys/cdio.h... no
checking for sys/epoll.h... yes
checking for sys/event.h... no
checking for sys/extattr.h... no
checking for sys/filio.h... no
checking for sys/ipc.h... yes
checking for sys/link.h... no
checking for sys/modem.h... no
checking for sys/mtio.h... yes
checking for sys/param.h... yes
checking for sys/prctl.h... yes
checking for sys/ptrace.h... yes
checking for sys/queue.h... yes
checking for sys/random.h... yes
checking for sys/resource.h... yes
checking for sys/scsiio.h... no
checking for sys/shm.h... yes
checking for sys/signal.h... yes
checking for sys/socketvar.h... yes
checking for sys/sockio.h... no
checking for sys/statvfs.h... yes
checking for sys/strtio.h... no
checking for sys/syscall.h... yes
checking for sys/sysinfo.h... yes
checking for sys/times.h... yes
checking for sys/uio.h... yes
checking for sys/user.h... yes
checking for sys/utsname.h... yes
checking for sys/vnode.h... no
checking for sys/xattr.h... yes
checking for syscall.h... yes
checking for utime.h... yes
checking for valgrind/memcheck.h... no
checking for valgrind/valgrind.h... no
checking for sys/mkdev.h... no
checking for sys/sysmacros.h... yes
checking whether stat file-mode macros are broken... no
checking for sys/conf.h... no
checking for sys/mount.h... yes
checking for sys/statfs.h... yes
checking for sys/user.h... (cached) yes
checking for sys/vfs.h... yes
checking for sys/sysctl.h... no
checking for netinet/ip.h... yes
checking for net/if.h... yes
checking for net/if_arp.h... yes
checking for net/if_dl.h... no
checking for net/if_types.h... no
checking for net/route.h... yes
checking for netinet/if_ether.h... yes
checking for netinet/in_pcb.h... no
checking for netinet/ip_icmp.h... yes
checking for netinet/ip_var.h... no
checking for netinet/udp.h... yes
checking for netinet6/ip6_var.h... no
checking for netipx/ipx.h... yes
checking for sys/un.h... yes
checking for netinet/udp_var.h... no
checking for netinet/icmp_var.h... no
checking for netinet/icmp6.h... yes
checking for netinet/tcp_var.h... no
checking for linux/ipx.h... no
checking for linux/irda.h... no
checking for linux/rtnetlink.h... yes
checking for resolv.h... yes
checking for ifaddrs.h... yes
checking for sys/ucontext.h... yes
checking for sys/thr.h... no
checking for pthread_np.h... no
checking for linux/videodev2.h... yes
checking for libprocstat.h... no
checking whether getxattr takes additional arguments... no
checking for ldd... /usr/bin/ldd
checking for otool... no
checking for readelf... readelf
checking whether the compiler supports -Wl,-z,defs... yes
checking whether the compiler supports -Wl,--export-dynamic... yes
checking whether the compiler supports -Wl,-Ttext-segment=0x7bc00000... yes
checking whether the compiler supports -Wl,-z,max-page-size=0x1000... yes
checking for x86_64-w64-mingw32-gcc... no
checking for amd64-w64-mingw32-gcc... no
checking for x86_64-w64-mingw32-clang... no
checking for amd64-w64-mingw32-clang... no
checking for clang... no
checking for pthread_create... yes
checking how to run the C preprocessor... gcc -m64 -E
checking for X... libraries , headers 
checking for gethostbyname... yes
checking for connect... yes
checking for remove... yes
checking for shmat... yes
checking for IceConnectionNumber in -lICE... yes
checking for -lX11... libX11.so.6
checking for -lXext... libXext.so.6
checking for X11/Xlib.h... yes
checking for X11/XKBlib.h... yes
checking for X11/Xutil.h... yes
checking for X11/Xcursor/Xcursor.h... yes
checking for X11/extensions/shape.h... yes
checking for X11/extensions/XInput.h... yes
checking for X11/extensions/XInput2.h... yes
checking for X11/extensions/XShm.h... yes
checking for X11/extensions/Xcomposite.h... yes
checking for X11/extensions/Xfixes.h... yes
checking for X11/extensions/Xinerama.h... yes
checking for X11/extensions/Xrandr.h... yes
checking for X11/extensions/Xrender.h... yes
checking for X11/extensions/xf86vmode.h... no
checking for X11/extensions/xf86vmproto.h... yes
checking for -lXcursor... libXcursor.so.1
checking for -lXi... libXi.so.6
checking for XShmQueryExtension in -lXext... yes
checking for XShapeQueryExtension in -lXext... yes
checking for -lXxf86vm... not found
checking for -lXrender... libXrender.so.1
checking for XRenderSetPictureTransform in -lXrender... yes
checking for XRenderCreateLinearGradient in -lXrender... yes
checking for -lXrandr... libXrandr.so.2
checking for -lXfixes... libXfixes.so.3
checking for -lXinerama... libXinerama.so.1
checking for -lXcomposite... libXcomposite.so.1
checking for XICCallback.callback... yes
checking for XEvent.xcookie... yes
checking for -lGL... libGL.so.1
checking for -lOSMesa... not found
checking for SCardEstablishContext in -lpcsclite... no
checking for sys/inotify.h... yes
checking for inotify_add_watch in -linotify... no
checking for dbus/dbus.h... yes
checking for -ldbus-1... libdbus-1.so.3
checking for gnutls/gnutls.h... no
checking for sane/sane.h... no
checking for libusb.h... no
checking for -lv4l2... not found
checking for gphoto2-camera.h... no
checking for gphoto2-port.h... no
checking for resolver library... -lresolv
checking for res_getservers... no
checking for ft2build.h... yes
checking for -lfreetype... libfreetype.so.6
checking for FT_TrueTypeEngineType... yes
checking for pthread_getthreadid_np... no
checking for pulse/pulseaudio.h... no
checking for gst/gst.h... no
checking for snd_pcm_hw_params_get_access_mask in -lasound... no
checking for sys/soundcard.h... yes
checking for oss_sysinfo.numaudioengines... no
checking for libudev.h... no
checking for unw_step... no
checking for unw_step in libunwind... no
checking for SDL.h... no
checking for capi20.h... no
checking for linux/capi.h... yes
checking for cups/cups.h... no
checking for cups/ppd.h... no
checking for fontconfig/fontconfig.h... yes
checking for -lfontconfig... libfontconfig.so.1
checking for krb5/krb5.h... no
checking for -lodbc... not found
checking for -lnetapi... not found
checking for -lvulkan... not found
checking for -lMoltenVK... not found
checking whether the compiler supports -Werror=unknown-warning-option... no
checking whether the compiler supports -Werror=unused-command-line-argument... no
checking whether the compiler supports -Werror=ignored-optimization-argument... no
checking whether the compiler supports -fcf-protection=none... yes
checking whether the compiler supports -fno-stack-protector... yes
checking whether the compiler supports -fno-strict-aliasing... yes
checking whether the compiler supports -Wdeclaration-after-statement... yes
checking whether the compiler supports -Wempty-body... yes
checking whether the compiler supports -Wignored-qualifiers... yes
checking whether the compiler supports -Winit-self... yes
checking whether the compiler supports -Wpacked-not-aligned... yes
checking whether the compiler supports -Wpragma-pack... no
checking whether the compiler supports -Wshift-overflow=2... yes
checking whether the compiler supports -Wstrict-prototypes... yes
checking whether the compiler supports -Wtype-limits... yes
checking whether the compiler supports -Wunused-but-set-parameter... yes
checking whether the compiler supports -Wvla... yes
checking whether the compiler supports -Wwrite-strings... yes
checking whether the compiler supports -Wpointer-arith... yes
checking for broken string.h that generates warnings with -Wpointer-arith... no
checking whether the compiler supports -Wlogical-op... yes
checking for broken string.h that generates warnings with -Wlogical-op... no
checking for flags needed for 64-bit compare-and-swap support... none needed
checking whether the compiler supports -gdwarf-4... yes
checking whether the compiler supports -fno-builtin... yes
checking whether the compiler supports -fshort-wchar... yes
checking whether the compiler supports -Wno-format... yes
checking for working -mabi=ms... yes
checking for the need to disable Fortify... no
checking whether CFI directives are supported in assembly code... yes
checking for library containing dlopen... none required
checking for library containing gethostbyname... none required
checking for library containing connect... none required
checking for library containing inet_aton... none required
checking for dladdr1... yes
checking for dlinfo... yes
checking for epoll_create... yes
checking for fstatfs... yes
checking for futimens... yes
checking for futimes... yes
checking for futimesat... yes
checking for getaddrinfo... yes
checking for getattrlist... no
checking for getauxval... yes
checking for getifaddrs... yes
checking for getrandom... yes
checking for kqueue... no
checking for mach_continuous_time... no
checking for pipe2... yes
checking for port_create... no
checking for posix_fadvise... yes
checking for posix_fallocate... yes
checking for prctl... yes
checking for proc_pidinfo... no
checking for sched_yield... yes
checking for setproctitle... no
checking for setprogname... no
checking for sigprocmask... yes
checking for sysinfo... yes
checking for tcdrain... yes
checking for thr_kill2... no
checking for library containing clock_gettime... none required
checking for sched_setaffinity... yes
checking for inline... inline
checking for request_sense... no
checking for struct xinpgen... no
checking whether we can use re-entrant gethostbyname_r Linux style... yes
checking for struct msghdr.msg_accrights... no
checking for struct sockaddr_un.sun_len... no
checking for scsireq_t.cmd... no
checking for sg_io_hdr_t.interface_id... yes
checking for siginfo_t.si_fd... yes
checking for struct mtget.mt_blksiz... no
checking for struct mtget.mt_gstat... yes
checking for struct mtget.mt_blkno... yes
checking for struct stat.st_mtim... yes
checking for struct stat.st_mtimespec... no
checking for struct stat.st_ctim... yes
checking for struct stat.st_ctimespec... no
checking for struct stat.st_atim... yes
checking for struct stat.st_atimespec... no
checking for struct stat.st_birthtime... no
checking for struct stat.st_birthtim... no
checking for struct stat.st_birthtimespec... no
checking for struct stat.__st_birthtime... no
checking for struct stat.__st_birthtim... no
checking for struct sockaddr_in6.sin6_scope_id... yes
checking for struct __res_state._u._ext.nscount6... yes
checking for struct in6_pktinfo.ipi6_addr... yes
checking for struct ipstat.ips_total... no
checking for struct ip_stats.ips_total... no
checking for struct ip6stat.ip6s_total... no
checking for struct icmpstat.icps_error... no
checking for struct icmp6stat.icp6s_error... no
checking for struct tcpstat.tcps_connattempt... no
checking for struct tcp_stats.tcps_connattempt... no
checking for struct udpstat.udps_ipackets... no
checking for struct ifreq.ifr_hwaddr... yes
checking for struct sysinfo.totalram... yes
checking for struct sysinfo.mem_unit... yes
checking for __builtin_popcount... yes
checking for __clear_cache... yes
checking whether we need to define __x86_64__... no
creating Makefile rules... done
configure: creating ./config.status
config.status: creating include/config.h
config.status: linking /home/travis/Documents/07_CONTAINERS/ElementalWarrior-wine/tools/winewrapper to wine
config.status: linking /home/travis/Documents/07_CONTAINERS/ElementalWarrior-wine/tools/winewrapper to wine64
config.status: executing include/stamp-h commands
config.status: executing tools/makedep commands
config.status: executing Makefile commands

configure: MinGW compiler not found, cross-compiling PE files won't be supported.
configure: libXxf86vm 64-bit development files not found, XFree86 Vidmode won't be supported.
configure: libOSMesa 64-bit development files not found (or too old), OpenGL rendering in bitmaps won't be supported.
configure: OpenCL 64-bit development files not found, OpenCL won't be supported.
configure: pcap 64-bit development files not found, wpcap won't be supported.
configure: libpcsclite not found, smart cards won't be supported.
configure: libsane 64-bit development files not found, scanners won't be supported.
configure: libusb-1.0 64-bit development files not found (or too old), USB devices won't be supported.
configure: libv4l2 64-bit development files not found.
configure: libgphoto2 64-bit development files not found, digital cameras won't be supported.
configure: libgphoto2_port 64-bit development files not found, digital cameras won't be auto-detected.
configure: libpulse 64-bit development files not found or too old, Pulse won't be supported.
configure: gstreamer-1.0 base plugins 64-bit development files not found, GStreamer won't be supported.
configure: OSS sound system found but too old (OSSv4 needed), OSS won't be supported.
configure: libudev 64-bit development files not found, plug and play won't be supported.
configure: libSDL2 64-bit development files not found, SDL2 won't be supported.
configure: libcapi20 64-bit development files not found, ISDN won't be supported.
configure: libcups 64-bit development files not found, CUPS won't be supported.
configure: libkrb5 64-bit development files not found (or too old), Kerberos won't be supported.
configure: libnetapi not found, Samba NetAPI won't be supported.
configure: libvulkan and libMoltenVK 64-bit development files not found, Vulkan won't be supported.

configure: WARNING: gettext tools not found (or too old), translations won't be built.

configure: WARNING: libgnutls 64-bit development files not found, no schannel support.

configure: WARNING: No sound system was found. Windows applications will be silent.

configure: Finished.  Do 'make' to compile Wine.

Should everything be saying "yes" supported or installed? So should I be installing Vulkan and all the other dependencies mentioned beforehand?

Also trying to run this part for win32 after wine64 make succeeded lead to some errors where it reported it could not proceed because it was missing win32 development libraries. So when I tried running:

sudo apt-get install win32

The installer warns it will remove gimp, blender, among other programs I need... which seems like a bug of some kind with either apt or wine, I'm not sure what. In any case I was unsure why these programs needed to be installed so needed to abort the install.

Recently I upgraded from Bookworm to Trixie (Debian) (by accident, beginner mistake) so it's possible there are some conflicting libraries leftover in my system so I'll try this again when trixie has a stable release. I'm using XFCE.

Posted

Re: the last several posts:

With so many "moving parts", there's a lot that could be wrong. To get anywhere with a request, you need to provide more information - which presupposes that you know what information to provide and where to find it.

At a minimum, an error message noting a failure point from the command line is a good place to start. If you give that along with the specifics of which versions of software you're using (OS, Wine and related tools, and Affinity software) as well as the method you're using with a link to the guide, if it exists, would be helpful.

Unfortunately, a lot of us on this thread don't really know what's going on deep in the internals, so it's a lot of guessing based on our own experiences. So you also need to have some patience and persistence, and also be willing to dig in even more and learn more. This isn't for the faint of heart :)

A piece of advice I'd give is to make sure you're following a guide with the exact versions of software specified in that guide (especially Wine version), and follow the directions as closely as possible. I know that I can get a working version of the software on my Arch based distro using a method with an older version of Wine that's installed apart from the package manager, and I haven't been able to get it to work otherwise. It's tricky and time consuming.

Give us an update with the information above, and someone may be able to help!

Posted
37 minutes ago, JFIA said:

Re: the last several posts:

With so many "moving parts", there's a lot that could be wrong. To get anywhere with a request, you need to provide more information - which presupposes that you know what information to provide and where to find it.

At a minimum, an error message noting a failure point from the command line is a good place to start. If you give that along with the specifics of which versions of software you're using (OS, Wine and related tools, and Affinity software) as well as the method you're using with a link to the guide, if it exists, would be helpful.

Unfortunately, a lot of us on this thread don't really know what's going on deep in the internals, so it's a lot of guessing based on our own experiences. So you also need to have some patience and persistence, and also be willing to dig in even more and learn more. This isn't for the faint of heart :)

A piece of advice I'd give is to make sure you're following a guide with the exact versions of software specified in that guide (especially Wine version), and follow the directions as closely as possible. I know that I can get a working version of the software on my Arch based distro using a method with an older version of Wine that's installed apart from the package manager, and I haven't been able to get it to work otherwise. It's tricky and time consuming.

Give us an update with the information above, and someone may be able to help!

ok rightly so, tonight I'll do everything and post detailed info.

Posted
21 hours ago, Open Grafica said:

Could you tell me what you did? What wine configuration do you use? Do all 3 programs work Affinity, Photo, Publisher and Designer?

Yes all 3 work. I have it working in both Bottles and Lutris. I use Flatpaks versions of both

Disclaimer: I am writing this entirely from memory on my phone. I am not 100% sure on the Lutris runner path , only like 90%.

Bottles:

1. Launch at least once after install to setup, then turn it off.

2. Download the Fedorabuilt version, extract it, and move the whole folder to `~/.var/app/com.usebottles.bottles/data/bottles/runners`

3. Launch bottles and add a new Application. I call mine Affinity because I install all 3 in the same bottle. Set the Runner to the Wine-tkg-affinity one you added earlier.

4. Let it create, then select the Affinity bottle.

5. Go to Dependencies and install allfonts, dotnet48

6. Download vcredist latest from https://learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist?view=msvc-170. The one in bottles is buggy.

7. Go to Settings, Advanced Display Options, and scroll down and set Renderer to Vulkan.

8. Back to main page, hit Run Executable and install vcredist.

9. Get WinMetada and install it into `~/.var/app/com.usebottles.bottles/data/bottles/bottles/Affinity/drive_c/windows/system32`

10. Go back to Bottles and hit the power button in the top right corner, and hit Force Stop All Processes (so when they are started again it has proper references to WinMetadata)

11. Hit Run Executable and select the affinity photo installer. Should run, install, etc. then just launch Photos. Do the same for Other affinity apps.

Lutris:

1. Install lutris Flatpaks, launch once and close it.

2. Install wine to `~/.var/app/com.lutris.Lutris/data/lutris/runners/wine` the same way as Bottles. You can even copy your bottles runners folder to this one. The `wine` folder might not exist, make it. If you want to be extra sure, launch Lutris and install wine-8.x from the little packing box next to Wine in the runners when you hover over it. It will make the folders and you can find it, then close it again before doing this setup.

3. Start up Lutris and Create a blank Lutris entry for Affinity Photo (use the last manually option in the add dialog)

4. Configure the new entry (little arrow next to Play or right click to entry) And select the wine you want as the Runner and in the next tab, set the Prefix path (you might need to make the new folder) and save.

5. Run Winetricks (little wine glass next to Play) and install corefonts, dotnet48, dxvk-latest, vkd3d-latest. Also set the Renderer to Vulkan with Winetricks and the windows version to Window 10.

6. Hit the wine glass again and select Run EXE in Wineprefix, and select the vcredist.exe like in the bottles instructions, install that.

6.1. install WinMetada into the prefix system32. `<path to prefix>/drive_c/windows/system32`

7. Hit Run in Prefix again and select your Photos installer. Should run.

8. Once installed, go to the Configure tab, go to The tab with path stuff and working directory. Use the browse to find the Photo.exe, and then save.

9. Hit Play and it should run and work with export working and all.

10. Use the Run EXE in Prefix to install all other Affinity products you want.

11. Once you are done installing, right-click and hit Duplicate. In the new entry change the name and in the next tab for the path to the app you want. And save. 

12. Do this for all off them. Done.

 

Most people have better success with Lutris. The Bottles sandbox can cause issues for some. I recorded a video of the working result, but forgot to upload it from my work computer and currently busy. So I can post it later.

 

And if needed, I might record a video of a fresh install in Lutris to show it working and how its setup.

Posted

Last year I’ve had success with compiling ElementalWarrior’s initial wine forks and getting Affinity mostly working, but I subsequently had lots and lots of errors and issues following guides using these newer pre-compiled versions. I never wanted to use Bottles or Heroic or other game launchers because of the overhead. As I’m already using the official Wine for other apps, this meant using rum to manage the Affinity prefixes in an easy and seamless way. Since a lot of folks are having trouble installing Affinity I thought I’d chime in with my method as it could prove useful. 

All this has proven to be simpler for me, once I figured out the proper commands and sequences, though many may still prefer to use a GUI manager. By now I’ve done this multiple times on an Ryzen 5 AMD laptop with integrated AMD graphics and on a desktop with an Nvidia GPU, with several pre-compiled versions of wine, and it works very well. I only installed Photo 2, but I see no reason why this wouldn’t apply to the whole suite. Note that I am on Arch so YMMV on other distros, older hardware etc.

I’ll try to explain things as clearly as I can and be as granular as I can, while keeping it simple and easy to follow. Obviously I can’t explain every single variable, option or nuance, but I think following along is possible even with just a basic understanding of Linux. At the very least winetricks needs to be installed on the machine, and there may be some other requirements I’m not aware of that I have installed previously. There are also multiple instances where things could be done differently, or altered slightly to preference, but again, this is easy for those who are already familiar with how things work, but might be too much for folks who just want to get it working.

Prep work

Before we get to the install there are some minor things to get in order to make the process much clearer. Any file manager will do for these steps.

0. Create a folder named Affinity in the root of the home directory
1. Create an Apps folder inside it
2. Download rum and move it to ~/.local/bin
3. Download wine-tkg-affinity and move archive to ~/Affinity
4. Download WinMetadata and move archive to ~/Affinity
5. Download affinity exe installer and move it to ~/Affinity
6. Extract WinMetadata folder, extract wine-tkg-affinity "usr" folder and rename it "wine-tkg-affinity"
7. Edit rum script

Regarding step 7, open rum in a text editor, find line 3 and give it the full path of the Affinity folder we just created. It should look something like this: 

wines="/home/uname/Affinity"

Simply replace the uname with your username.

8. Open a terminal and run 

chmod +x ~/.local/bin/rum

to make rum executable.
 

At the end of this process we should have a folder structure that looks like this:

├── Affinity
│   ├── affinity-photo-msi-2.6.3.exe
│   ├── Apps
│   ├── wine-tkg-affinity
│   │   ├── bin
│   │   ├── include
│   │   ├── lib
│   │   ├── share
│   │   └── src
│   ├── wine-tkg-affinity-archbuilt.tar.zst
│   ├── WinMetadata
│   │   ├── Windows.AI.winmd
│   │   ├── ...
│   │   └── Windows.Web.winmd
└   └── WinMetadata.zip

So, we created an Affinity folder in the home directory and told rum to look for wine prefixes there. Moving forward, we’ll actually be installing our apps within that same Affinity folder to keep everything neat and tidy.

Installation

We’ll be using the terminal to install everything, and thanks to all the prep work we’ve done, it should all be very simple.

Note that on my machine ~/.local/bin is in my PATH, meaning that any executable files I run are auto-detected. If the commands below won’t work because the system doesn’t detect rum, it might be necessary to replace "rum" with "~/.local/bin/rum".

Here we go.

1.

rum wine-tkg-affinity ~/Affinity/Apps wineboot --init

Notice the sequence - we’re telling rum to use a specific wine located in the folder we told it to monitor, and initialise a prefix in a specific folder. Wine tends to have very chatty output that can clutter things up, so once this command and it’s finished, I run clear to erase all that mess, but closing the terminal window after the command has finished and running the next command in a fresh terminal is good too.

2.

rum wine-tkg-affinity ~/Affinity/Apps winetricks vcrun2022 dotnet35 dotnet48 dxvk vkd3d renderer=vulkan win11

This is the big one, basically we’re using winetricks to download and install all the different packages we need as well as preferred settings in a single go. Installers will pop up and we’ll need to click through them, I prefer this interactive way as can monitor the progress. Many error/warning messages will be scrolling in the terminal and that’s completely fine. As long as every installer completes successfully and winetricks moves on to the next one, we’re good. I haven’t had any errors with this sequence, but again, YMMV. Note that there is no allfonts package (see below).

3.

rm -r ~/Affinity/Apps/drive_c/windows/Fonts

This removes the empty Fonts directory in the Affinity prefix we created so that we can run the next command.

4.

ln -s ~/.local/share/fonts/ ~/Affinity/Apps/drive_c/windows/Fonts

Since I’m not using Windows, I like to point Affinity fonts to my Linux user fonts folder where I place all the custom fonts I use. The benefit of this approach is that any future fonts I add there will be available to Affinity. If this isn’t useful, then Affinity can point to the Linux system fonts directory, or to Windows/Fonts for dual boot systems, to prevent needless duplication. If, on the other hand you’d rather not do any of this, simply add allfonts before vcrun2022 in step 2, and skip steps 3 and 4.

5.

cp -r ~/Affinity/WinMetadata ~/Affinity/Apps/drive_c/windows/system32/

Here we are just copying the WinMetadata info to the prefix.

6.

rum wine-tkg-affinity ~/Affinity/Apps wine ~/Affinity/affinity-photo-msi-2.6.3.exe

Here we are telling rum to use the specified wine version and install Affinity. The installer should appear and it should look normal. Sometimes it might be just a black rectangle, no text or options, but pressing enter will actually install Affinity anyway. As long as there are no explicit error popups, you should be good to go.

7.

rum wine-tkg-affinity ~/Affinity/Apps wine ~/Affinity/Apps/drive_c/Program\ Files/Affinity/Photo\ 2/Photo.exe

After the install has completed, we should run it and test it out. Depending on... something, in some cases the Affinity splash screen will be either all black, or with glitched rounded corners, or it could look normal. AFAIK this doesn’t affect the rest of the software in any way.

8. Follow wanesty’s guide for creating a .desktop shortcut

Note that the Exec path will be slightly different than the guide. Also note that full paths are needed for the shortcut (uname = your username): 

/home/uname/.local/bin/rum wine-tkg-affinity /home/uname/Affinity/Apps wine '/home/uname/Affinity/Apps/drive_c/Program Files/Affinity/Photo 2/Photo.exe

Additional notes

Modifying settings

You can clone the settings from your Windows install and copy them over to Affinity, or get the defaults from here. Either way, they go in ~/Affinity/Apps/drive_c/users/uname/AppData/Roaming/Affinity/Photo/2.0/Settings.

Using ElementalWarrior’s fork

Note that you don’t have to use wine-tkg-affinity, you can download a pre-compiled version of ElementalWarrior’s fork and use that instead. You will need to modify the rum commands - replace all instances of "wine-tkg-affinity" with "affinity-photo3-wine9.13-part3", which is the folder where you should extract the archive into (ex. "rum affinity-photo3-wine9.13-part3 ~/Affinity/Apps wineboot --init").

If you create a separate install folder next to Apps, using rum you can have two installs of Affinity in two different folders using different wine versions active at the same time, though this is only useful for testing purposes. So you’d run one set of commands to install one version, for instance using "rum wine-tkg-affinity ~/Affinity/Apps wineboot --init", and another using something like this: "rum affinity-photo3-wine9.13-part3 ~/Affinity/TestInstall wineboot --init".

The pre-compiled ElementalWarrior’s fork is much larger than the tkg version and also much older wine. However, unless you plan on using that version of wine for everything on your system, this is no obstacle. I’ve found that tkg version works basically the same except for the splash screen which always renders correctly using Elemental’s fork. In case the tkg version doesn’t work for you, I would certainly try the older Elemental one and see how it goes. On the other hand, if you have a working setup and have no issues with it, I wouldn’t mess with it just for the sake of having a newer wine version as a base.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...

Important Information

Terms of Use | Privacy Policy | Guidelines | We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.