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

No maintainers. Volunteer today!

Test Results

Old test results
The test results you have selected are very old and may not represent the current state of Wine.
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 open 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, 07/08/2020

# 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 &&

#check where we are?
wearehere=$(pwd)
wineprefix="${wearehere%drive_c*}"

# 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/
fi &&

# We need copies of various files in ActivationApp/Resources, the simplest thing is just to copy the entire folder
if [ ! -e ActivationAppLinux/Resources ]; then
    echo 'Copying files from ActivationApp/Resources' &&
    cp -r ActivationApp/Resources ActivationAppLinux/Resources
fi &&

cd ActivationAppLinux/Resources/bin &&
# We need to recreate the Windows binary "DumpInfo.exe".
# The simplest approach is to simply copy the terminal output of the windows binary to a new file, edit it as necessary, and then make a script that will print the results to terminal
if [ ! -e DumpInfo.txt ]; then
    echo "Reading DumpInfo.exe" &&
    # DumpInfo.exe is called through Wine, for simplicity the output is dumped in a file "DumpInfo.txt"
    WINEDEBUG=-all WINEPREFIX="$wineprefix" wine DumpInfo.exe > DumpInfo.txt
fi &&

if [ ! -e DumpInfo.sh ]; then
    echo "Building DumpInfo.sh" &&

    # There used to be a whole extra block of code to work around the fact that at some point I found DumpInfo had given "l.i.c.e.n.s.e." instead of "license".
    # I'm pretty sure it was a wine bug and I havent seen it for a while so I'm gonna assume that doesn't happen.
    # And if it does, well, there are instructions to do this stuff manually on the AppDB page
    
    # The licenseFilePath needs to be modified to change it to a linux filepath, but everything else should be copied verbatim.
    otherInfo=$(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=$(find "$wineprefix" -ipath "${linuxFilePathvar%/*}") && #this returns the correct (absolute path to the) directory, but has stripped the license file name

    # make new DumpInfo.sh script
    echo "#!/bin/bash

echo "'"'"$otherInfo
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
fi &&

#finally we must return to the directory outside the Activation app
cd ../../..

if [ -e ActivationAppLinux/Resources/bin/DumpInfo.sh ]; then
    cd ActivationAppLinux &&
    echo "launching activation app" &&
    ./nw Resources/app.nw
else
    echo "Found incomplete Activation App. Something has gone wrong - aborting"
fi

Comments

Comments Disabled

Comments for this application have been disabled because there are no maintainers.
Back