WineHQ
Category: Main Multimedia Video HitFilm HitFilm 12 (Pro/Express)

HitFilm

No Screenshot

Submit Screenshot

HitFilm 12 featured a redesigned UI and many performance improvements.

Application Details:

Version: HitFilm 12 (Pro/Express)
License: Retail
URL: https://fxhome.com/
Votes: 0
Latest Rating: Silver
Latest Wine Version Tested: 4.9

Maintainers: About Maintainership

Test Results

Selected Test Results

What works

-Once Wine has been configured correctly, the program loads as normal

-basic editing tools work fine

-export is fine

What does not

-the program doesn't work out-of-the-box, requires a dll override

-the activation app doesn't work, requires a workaround

-the program is displayed inside a generic frame, which is not present on Windows and obstructs the program's custom UI including file, edit menus etc. (This can be fixed using winecfg, see notes)

Workarounds

-To get the program to start, use winecfg to add a dll overide for "fusion". If using application-specific dll-overrides, then it is also necessary to apply the same dll override for "HitFilmRenderClient.exe".

-The activation app is (mostly) javascript, which is then run using nw.js. Since nw.js is cross-platform and open source, it is straightforward to obtain a native Linux version of nw.js and use that to run the activation app, with relatively few alterations. See "How to activate the software".

What was not tested

-the effects library

-pre-renders

-re-arranging UI panels

-compositing

Hardware tested

Graphics:

  • GPU: Nvidia
  • Driver: proprietary

Additional Comments

selected in Test Results table below
Operating systemTest dateWine versionInstalls?Runs?Used
Workaround?
RatingSubmitter
CurrentLinux Mint 18.3 "Sylvia" x86_64May 25 20194.9Yes Yes YesSilverA. Sealy 

Known Bugs

Bug # Description Status Resolution Other apps affected

Show all bugs

HowTo / Notes

Issues with playback

If you have issues with videos not playing back inside HitFilm, try using winecfg to add a dll override for Xaudio2_7. 

On recent versions of wine (confirmed on Wine 4.9) this should not be necessary

generic window header blocking UI

in wine 4.9, HitFilm 12 displays with a window header that is not supposed to be there, this blocks part of the UI that contains the menus. This can be disabled by going to winecfg and, in the "Graphics" tab, disabling the option "Allow the window manager to decorate the windows".

HOW TO ACTIVATE THE SOFTWARE

At time of writing (May 2019), the activation app for HitFilm does not work in Wine, and will only show a blank white screen (if it loads at all).

Fortunately, the activation app is (mostly) javascript, which is then run using nw.js. Since nw.js is cross-platform and open source, it is straightforward to obtain a native Linux version of nw.js and use that to run the activation app, with relatively few alterations.

For the lazy (like myself), I have written a bash script to automate the process (attatched in a different how-to).

For the curious, the procedure is as follows:
-Download a copy of the program nw.js, which can be obtained from https://nwjs.io (or if you prefer to build from source code, you can find it on github)

-In the program files for HitFilm (by default it will be [wineprefix]/drive_c/Program Files/FXHOME/HitFilm Pro (or HitFilm Express if you are installing Express)) there is a directory "ActivationApp" containing all the files for the activation app. You will need a copy of the directory "ActivationApp/Resources". (I would advise not to modify any of the original files, HitFilm appears to check some of them and may not run if they have been modified). To keep things tidy you may wish to create a new directory "ActivationAppLinux" and place your copy of "Resources" inside this directory.

-in "Resources/bin" there is a program called "DumpInfo.exe". If you run it through Wine with WINEDEBUG=-all, the output should look something like:

hardwareId:NTYFJDSLK
licenseFilePath:C:\ProgramData/FXhome/Hitfilm Pro/Hitfilm Pro.license
programCode:hitfilm-pro
version:10.0.8218.60494
maxProgramDate:1539817200
winGUID:5ed7d8f3-91e7-441d-8ed9-897f349874g5

(N.B your hardware ID will be different - it is generated based on the hardware of the computer that the program is run on)

-Copy the terminal output from DumpInfo.exe. The activation app runs this program to obtain the information required for activation. Since your activation app is running in Linux you will need to make a Linux program that prints the same information to the terminal. A simple bash script will do.

-Make sure that your variable "hardwareId" exactly matches the one that is output from DumpInfo.exe - otherwise the activation will not be valid on your computer.

-Also make sure to change the variable "licenseFilePath" to the actual path. The correct directory will already have been created by the HitFilm Pro installer, and should be:
[wineprefix]/drive_c/ProgramData/FXHOME/HitFilm Pro/Hitfilm Pro.license
(N.B. note the all-caps on FXHOME, and the capital F in HitFilm (although also note that the license file itself has a lower-case f in Hitfilm))
(Again, if installing HitFilm Express, substitute "Express" for "Pro")

-in the directory "Resources/modules" there is a file "constants.js". In the line that starts with "DUMP_INFO_BINARY" replace "DumpInfo.exe" with the name of your replacement program/script. Correct the path if necessary.

-Now navigate to whatever folder contains your nw.js binary, and run:
./nw [path-to-your-activation-app]/Resources/app.nw activate

The activation app should now run and function as expected, allowing you to activate the software.

(bash script) activate HitFilm

#!/bin/bash


# Please Note:
# this script was designed to be run in the same directory that HitFilm (or whatever other FXHOME software you are installing) was installed into.
# By default this will be [wineprefix]/drive_c/Program Files/FXHOME/[software name]

# If this script is run from a different directory, it will attempt to navigate to the aforementioned install directory, but it will only work if there is only one FXHOME software installed in one wineprefix in your filesystem. Otherwise it may locate the wrong directory, and subsequently activate the wrong software.

# For best results, I would suggest that this script only be run from the correct directory (unless you are certain that there is no other FXHOME software installed in any filepath that matches the above description)

# -A. Sealy, 25/05/2019



# if there is no folder "ActivationApp" in the present directory, then we are not in the folder where the program was installed, and we should therefore locate that directory and navigate to it.
if [ ! -e ActivationApp ]; then
    # make an educated guess about where the program was installed, and cd there
    guesswork=$(locate -n 1 -i "*/drive_c/Program Files/FXHOME/*") && #FIXME doesn't work if the software is installed in multiple wineprefixes or if other FXHOME software has been installed
    echo &&
    echo "Navigating to $guesswork" &&
    echo &&
    cd "$guesswork"
fi &&

# If there is no existing "ActivationAppLinux" then we will create one
# Otherwise, we will assume that this is a functional linux version of FXHOME actvation app
if [ ! -e ActivationAppLinux ]; then
    
    # To stay as close as possible to the original app, we will need a copy of nwjs.
    # If there is a package already downloaded and in the current directory, we will use that.
    # Otherwise we will download one from the website
    if [ ! -e nwjs*.tar.gz ]; then
        echo 'nwjs not found.\nAttempting to download nwjs from https://dl.nwjs.io:\n'
        wget "https://dl.nwjs.io/v0.38.3/nwjs-v0.38.3-linux-x64.tar.gz"
    fi &&
    nwjs_name=$(echo nwjs*.tar.gz) &&
    echo "Found $nwjs_name. Extracting files" &&
    tar -xzf $nwjs_name --transform=s/${nwjs_name%.*.*}/ActivationAppLinux/ &&
    
    # We need copies of various files in ActivationApp/Resources, the simplest thing is just to copy the entire folder
    echo 'Copying files from ActivationApp/Resources' &&
    cp -r ActivationApp/Resources ActivationAppLinux/Resources &&
    
    echo "Building DumpInfo.sh" &&
    # DumpInfo.exe is called through Wine, for simplicity the output is dumped in a file "DumpInfo.txt"
    cd ActivationAppLinux/Resources/bin &&
    WINEDEBUG=-all wine DumpInfo.exe > DumpInfo.txt &&
    
    #new bit, crude way to deal with the fact that DumpInfo sometimes prints funky extra characters and sometimes not
    if grep -a "license" DumpInfo.txt; then
        # The licenseFilePath needs to be modified to change it to a linux filepath, but everything else should be copied verbatim.
        proxy=$(grep -a -v "license" DumpInfo.txt) &&
        # There often seems to be some inconsistency about whether specific characters in the filepath should be upper-case or lower-case.
        # This is not a problem on Windows (or Wine) but since linux filepaths are case-sensitive it is necessary to correct the pathname.
        # Fortunately the correct target directory has already been created by the installer, so all we need to do is identify it.
        licenseFilePathvar=$(grep -a "license" DumpInfo.txt) &&
        linuxFilePathvar="${licenseFilePathvar/'licenseFilePath:C:\'/'*'/}" && #strip the data tag, and replace "C:\" with wildcard
        correctedFilePath=$(locate -i "${linuxFilePathvar%/*}")  #this returns the correct (absolute path to the) directory, but has stripped the license file name
        # FIXME can't rely on this method if the same software is installed in another Wineprefix
    else
        proxy=$(grep -a -v "l.i.c.e.n.s.e" DumpInfo.txt) &&
        licenseFilePathvar=$(grep -a "l.i.c.e.n.s.e" DumpInfo.txt) &&
        linuxFilePathvar="${licenseFilePathvar/'licenseFilePath:C:\'/'*'/}" &&
        correctedFilePath=$(locate -i "${linuxFilePathvar%/*}")
    fi &&
    
    # make new DumpInfo.sh script
    echo "#!/bin/bash

echo "'"'"$proxy
licenseFilePath:$correctedFilePath/${licenseFilePathvar##*/}"'"' > DumpInfo.sh &&
    
    # make DumpInfo.sh executable
    chmod a+x DumpInfo.sh &&
    
    #edit modules/constants.js, to point to "DumpInfo.sh" instead of "DumpInfo.exe"
    echo 'Editing modules/constants.js:' &&
    sed -i s/DumpInfo.exe/DumpInfo.sh/ ../modules/constants.js &&
    
    #finally we must return to the directory outside the Activation app, since that is where we would expect to be if the script had found an existing "ActivationAppLinux" folder
    cd ../../..
fi &&

cd ActivationAppLinux &&
echo "launching activation app" &&
./nw Resources/app.nw

Comments

Back