2025-08-30 11:18:46 +02:00
#!/usr/bin/env bash
####################################################################################################
# Name: Autodesk Fusion 360 - Setup Wizard (Linux / Flatpak) #
# Description: This script installs Autodesk Fusion 360 inside a Flatpak Wine runtime on Linux. #
# Author: Steve Zabka #
# Author URI: https://cryinkfly.com #
# License: MIT #
2025-08-30 11:24:27 +02:00
# Copyright (c) 2020-2025 #
2025-08-30 11:18:46 +02:00
# Time/Date: 11:15/30.08.2025 #
# Version: 1.0.0-Alpha #
####################################################################################################
2025-08-30 11:24:27 +02:00
# Notes:
# - All commands and procedures are derived from my previous scripts and have been
# specifically adapted for execution within a Flatpak Wine environment.
# - Sets up Wine prefix, required libraries via winetricks, WebView2 runtime, DLL overrides,
# and handles Autodesk installer execution with appropriate timeouts.
# - Designed for a double-sandbox environment (Flatpak + Wine sandbox).
2025-08-30 11:18:46 +02:00
# - EXE files must be placed inside the Wine prefix, as Wine cannot access $HOME directly.
####################################################################################################
# CONFIGURATION OF THE COLOR SCHEME:
RED = $'\033[0;31m'
YELLOW = $'\033[0;33m'
GREEN = $'\033[0;32m'
NOCOLOR = $'\033[0m'
###############################################################################################################################################################
2025-08-30 11:09:11 +02:00
2025-06-22 09:04:47 +02:00
# URL's to download Fusion360Installer.exe files
#AUTODESK_FUSION_INSTALLER_URL="https://dl.appstreaming.autodesk.com/production/installers/Fusion%20360%20Admin%20Install.exe" <-- Old Link!!!
AUTODESK_FUSION_INSTALLER_URL = "https://dl.appstreaming.autodesk.com/production/installers/Fusion%20Admin%20Install.exe"
#AUTODESK_FUSION_INSTALLER_URL="https://dl.appstreaming.autodesk.com/production/installers/Fusion%20Client%20Downloader.exe"
# URL to download Microsoft Edge WebView2.Exec
WEBVIEW2_INSTALLER_URL = "https://github.com/aedancullen/webview2-evergreen-standalone-installer-archive/releases/download/109.0.1518.78/MicrosoftEdgeWebView2RuntimeInstallerX64.exe"
# URL to download the patched Qt6WebEngineCore.dll file
2025-08-30 09:53:04 +02:00
# QT6_WEBENGINECORE_URL="https://raw.githubusercontent.com/cryinkfly/Autodesk-Fusion-360-for-Linux/main/files/extras/patched-dlls/Qt6WebEngineCore.dll.7z" -> OLD Qt6WebEngineCore.dll
2025-08-30 11:09:11 +02:00
QT6_WEBENGINECORE_URL = "https://raw.githubusercontent.com/cryinkfly/Autodesk-Fusion-360-for-Linux/main/files/extras/patched-dlls/Qt6WebEngineCore-06-2025.7z"
2025-06-22 09:04:47 +02:00
# URL to download the patched siappdll.dll file
SIAPPDLL_URL = "https://raw.githubusercontent.com/cryinkfly/Autodesk-Fusion-360-for-Linux/main/files/extras/patched-dlls/siappdll.dll"
2025-08-30 11:18:46 +02:00
###############################################################################################################################################################
2025-08-30 11:09:11 +02:00
2025-06-22 09:04:47 +02:00
# Debian based systems:
# apt install p7zip-full cabextract winbind
2025-08-30 11:18:46 +02:00
###############################################################################################################################################################
2025-08-30 11:09:11 +02:00
2025-08-30 09:53:04 +02:00
flatpak install flathub org.winehq.Wine/x86_64/stable-24.08 -y # Issue solved: Similar refs found for ‘ org.winehq.Wine’ in remote ‘ flathub’ ...
flatpak update org.winehq.Wine -y # Upgrade to the Latest Version
2025-06-15 10:24:58 +02:00
flatpak run org.winehq.Wine --version #Check version of wine
2025-08-30 11:18:46 +02:00
###############################################################################################################################################################
2025-08-30 11:09:11 +02:00
2025-08-30 10:49:14 +02:00
# Note: The winetricks "sandbox" verb only removes desktop integration (e.g. autostart entries, menu shortcuts)
# and the Z: drive symlink that normally maps your entire home directory.
# This is not a "true" security sandbox, but rather a safeguard against misbehavior —
# for example, preventing games from saving settings into random subdirectories of $HOME.
#
# In this setup, however, Wine is already running inside a Flatpak sandbox.
# When you additionally enable the winetricks sandbox mode, you effectively get a "double sandbox":
#
# 1. Flatpak already restricts Wine's access to your system and isolates it from the host.
# 2. Winetricks "sandbox" further removes the Z: drive mapping inside the Wine prefix.
#
# As a result, Wine in this configuration has no direct access to your $HOME directory
# or the host filesystem outside the prefix.
# Therefore, executable files (EXEs) must be placed directly inside the Wine prefix,
# since Wine no longer has permissions to reach outside of that sandboxed environment.
2025-08-30 10:17:21 +02:00
flatpak run --env= " WINEPREFIX= $HOME /.var/app/org.winehq.Wine/data/wineprefixes/fusion360 " --command= "winetricks" org.winehq.Wine -q sandbox
2025-08-30 10:49:14 +02:00
# Install required libraries
2025-08-30 10:17:21 +02:00
flatpak run --env= " WINEPREFIX= $HOME /.var/app/org.winehq.Wine/data/wineprefixes/fusion360 " --command= "winetricks" org.winehq.Wine -q sandbox atmlib gdiplus arial corefonts cjkfonts dotnet452 msxml4 msxml6 vcrun2017 fontsmooth = rgb winhttp win10
2025-08-30 10:49:14 +02:00
# Install CJK fonts separately (only if the first run failed)
2025-08-30 10:17:21 +02:00
flatpak run --env= " WINEPREFIX= $HOME /.var/app/org.winehq.Wine/data/wineprefixes/fusion360 " --command= "winetricks" org.winehq.Wine -q cjkfonts
2025-08-30 10:49:14 +02:00
# We must set to Windows 10 or 11 again because some other winetricks sometimes set it back to Windows XP!
2025-08-30 10:17:21 +02:00
flatpak run --env= " WINEPREFIX= $HOME /.var/app/org.winehq.Wine/data/wineprefixes/fusion360 " --command= "winetricks" org.winehq.Wine -q win10
2025-06-15 10:23:30 +02:00
2025-08-30 10:49:14 +02:00
# Install DXVK for DirectX 9/11/...
2025-08-30 10:17:21 +02:00
flatpak run --env= " WINEPREFIX= $HOME /.var/app/org.winehq.Wine/data/wineprefixes/fusion360 " --command= "winetricks" org.winehq.Wine -q dxvk
2025-08-30 10:49:14 +02:00
# Apply DLL overrides via registry for DirectX, ...
2025-08-30 10:17:21 +02:00
flatpak run --env= " WINEPREFIX= $HOME /.var/app/org.winehq.Wine/data/wineprefixes/fusion360 " org.winehq.Wine reg add "HKCU\\Software\\Wine\\DllOverrides" /v "d3d10core" /t REG_SZ /d "native" /f
flatpak run --env= " WINEPREFIX= $HOME /.var/app/org.winehq.Wine/data/wineprefixes/fusion360 " org.winehq.Wine reg add "HKCU\\Software\\Wine\\DllOverrides" /v "d3d11" /t REG_SZ /d "native" /f
flatpak run --env= " WINEPREFIX= $HOME /.var/app/org.winehq.Wine/data/wineprefixes/fusion360 " org.winehq.Wine reg add "HKCU\\Software\\Wine\\DllOverrides" /v "d3d9" /t REG_SZ /d "builtin" /f
flatpak run --env= " WINEPREFIX= $HOME /.var/app/org.winehq.Wine/data/wineprefixes/fusion360 " org.winehq.Wine reg add "HKCU\\Software\\Wine\\DllOverrides" /v "dxgi" /t REG_SZ /d "native" /f
2025-08-30 10:49:14 +02:00
flatpak run --env= " WINEPREFIX= $HOME /.var/app/org.winehq.Wine/data/wineprefixes/fusion360 " org.winehq.Wine reg add "HKCU\\Software\\Wine\\DllOverrides" /v "adpclientservice.exe" /t REG_SZ /d "" /f # Remove tracking metrics/calling home
2025-08-30 10:17:21 +02:00
flatpak run --env= " WINEPREFIX= $HOME /.var/app/org.winehq.Wine/data/wineprefixes/fusion360 " org.winehq.Wine reg add "HKCU\\Software\\Wine\\DllOverrides" /v "AdCefWebBrowser.exe" /t REG_SZ /d "builtin" /f
flatpak run --env= " WINEPREFIX= $HOME /.var/app/org.winehq.Wine/data/wineprefixes/fusion360 " org.winehq.Wine reg add "HKCU\\Software\\Wine\\DllOverrides" /v "msvcp140" /t REG_SZ /d "native" /f
flatpak run --env= " WINEPREFIX= $HOME /.var/app/org.winehq.Wine/data/wineprefixes/fusion360 " org.winehq.Wine reg add "HKCU\\Software\\Wine\\DllOverrides" /v "mfc140u" /t REG_SZ /d "native" /f
flatpak run --env= " WINEPREFIX= $HOME /.var/app/org.winehq.Wine/data/wineprefixes/fusion360 " org.winehq.Wine reg add "HKCU\\Software\\Wine\\DllOverrides" /v "bcp47langs" /t REG_SZ /d "" /f
2025-08-30 11:18:46 +02:00
###############################################################################################################################################################
2025-08-30 11:09:11 +02:00
2025-08-30 10:49:14 +02:00
# Download and install WebView2 to handle Login attempts, required even though we redirect to your default browser
curl -L " $WEBVIEW2_INSTALLER_URL " -o " $HOME /.var/app/org.winehq.Wine/data/wineprefixes/fusion360/drive_c/users/ $USER /Downloads/MicrosoftEdgeWebView2RuntimeInstallerX64.exe "
flatpak run --env= " WINEPREFIX= $HOME /.var/app/org.winehq.Wine/data/wineprefixes/fusion360 " org.winehq.Wine $HOME /.var/app/org.winehq.Wine/data/wineprefixes/fusion360/drive_c/users/$USER /Downloads/MicrosoftEdgeWebView2RuntimeInstallerX64.exe /silent /install
# Pre-create shortcut directory for latest re-branding Microsoft Edge WebView2
mkdir -p " $HOME /.var/app/org.winehq.Wine/data/wineprefixes/fusion360/drive_c/users/ $USER /AppData/Roaming/Microsoft/Internet Explorer/Quick Launch/User Pinned/ "
2025-08-30 11:18:46 +02:00
###############################################################################################################################################################
2025-08-30 11:09:11 +02:00
2025-08-30 10:49:14 +02:00
# Create mimetype link to handle web login call backs to the Identity Manager
2025-06-22 09:34:28 +02:00
cat > $HOME /.local/share/applications/adskidmgr-opener.desktop << EOL
[ Desktop Entry]
Type = Application
Name = adskidmgr Scheme Handler
2025-08-30 12:41:13 +02:00
Exec = sh -c 'ADSK_EXE=$(find "$HOME/.var/app/org.winehq.Wine/data/wineprefixes/fusion360/drive_c/" -name "AdskIdentityManager.exe" | head -1); flatpak run --env="WINEPREFIX=$HOME/.var/app/org.winehq.Wine/data/wineprefixes/fusion360" org.winehq.Wine "$ADSK_EXE" "%u"'
2025-06-22 09:34:28 +02:00
StartupNotify = false
MimeType = x-scheme-handler/adskidmgr;
EOL
2025-08-30 10:49:14 +02:00
# Set the permissions for the .desktop file to read-only
2025-06-22 09:34:28 +02:00
chmod 444 $HOME /.local/share/applications/adskidmgr-opener.desktop
2025-08-30 10:49:14 +02:00
# Set the mimetype handler for the Identity Manager
2025-06-22 09:34:28 +02:00
xdg-mime default adskidmgr-opener.desktop x-scheme-handler/adskidmgr
2025-08-30 11:18:46 +02:00
###############################################################################################################################################################
2025-08-30 11:09:11 +02:00
2025-08-30 11:14:54 +02:00
# Download the Autodesk Fusion Installer
2025-08-30 10:49:14 +02:00
curl -L " $AUTODESK_FUSION_INSTALLER_URL " -o " $HOME /.var/app/org.winehq.Wine/data/wineprefixes/fusion360/drive_c/users/ $USER /Downloads/Fusion360ClientInstaller.exe "
2025-08-30 11:14:54 +02:00
# --- First run of the installer: allow up to 10 minutes ---
timeout 600 flatpak run --env= " WINEPREFIX= $HOME /.var/app/org.winehq.Wine/data/wineprefixes/fusion360 " org.winehq.Wine $HOME /.var/app/org.winehq.Wine/data/wineprefixes/fusion360/drive_c/users/$USER /Downloads/Fusion360ClientInstaller.exe --quiet || echo "First run timed out."
# Kill Wine to ensure clean state
flatpak kill org.winehq.Wine
# --- Second run of the installer: allow up to 1 minute ---
timeout 60 flatpak run --env= " WINEPREFIX= $HOME /.var/app/org.winehq.Wine/data/wineprefixes/fusion360 " org.winehq.Wine $HOME /.var/app/org.winehq.Wine/data/wineprefixes/fusion360/drive_c/users/$USER /Downloads/Fusion360ClientInstaller.exe --quiet || echo "Second run timed out."
# Kill Wine to ensure clean state
2025-06-22 09:34:28 +02:00
flatpak kill org.winehq.Wine
2025-06-22 09:04:47 +02:00
2025-08-30 11:18:46 +02:00
###############################################################################################################################################################
2025-08-30 11:09:11 +02:00
# Find the Qt6WebEngineCore.dll file in the Autodesk Fusion directory
QT6_WEBENGINECORE = $( find " $HOME /.var/app/org.winehq.Wine/data/wineprefixes/fusion360 " -name 'Qt6WebEngineCore.dll' -printf "%T+ %p\n" | sort -r | head -n 1 | sed -r 's/^[^ ]+ //' )
QT6_WEBENGINECORE_DIR = $( dirname " $QT6_WEBENGINECORE " )
# Download the patched Qt6WebEngineCore.dll
curl -L " $QT6_WEBENGINECORE_URL " -o " $HOME /.var/app/org.winehq.Wine/data/wineprefixes/fusion360/drive_c/users/ $USER /Downloads/Qt6WebEngineCore.dll.7z "
2025-08-30 12:03:03 +02:00
# Old method required 7-Zip on the host system for extracting files.
#7za e -y "$HOME/.var/app/org.winehq.Wine/data/wineprefixes/fusion360/drive_c/users/$USER/Downloads/Qt6WebEngineCore.dll.7z" -o"$HOME/.var/app/org.winehq.Wine/data/wineprefixes/fusion360/drive_c/users/$USER/Downloads/downloads/"
# Install 7-Zip inside the Wine prefix via winetricks.
# This method does NOT require 7-Zip on the host system and is more stable/reliable than previous approaches.
flatpak run --env= " WINEPREFIX= $HOME /.var/app/org.winehq.Wine/data/wineprefixes/fusion360 " --command= "winetricks" org.winehq.Wine -q 7zip
2025-08-30 11:09:11 +02:00
# Excract the compressed Qt6WebEngineCore.dll.7z file
2025-08-30 12:03:03 +02:00
flatpak run --env= " WINEPREFIX= $HOME /.var/app/org.winehq.Wine/data/wineprefixes/fusion360 " org.winehq.Wine \
" $HOME /.var/app/org.winehq.Wine/data/wineprefixes/fusion360/drive_c/Program Files/7-Zip/7z.exe " x " C:\\users\\ $USER \\Downloads\\Qt6WebEngineCore.dll.7z " -o" C:\\users\\ $USER \\Downloads\\ "
2025-08-30 11:09:11 +02:00
# Backup the original Qt6WebEngineCore.dll file of Autodesk Fusion
cp -f " $QT6_WEBENGINECORE_DIR /Qt6WebEngineCore.dll " " $QT6_WEBENGINECORE_DIR /Qt6WebEngineCore.dll.bak "
# Copy the patched Qt6WebEngineCore.dll file to the Autodesk Fusion directory
cp -f " $HOME /.var/app/org.winehq.Wine/data/wineprefixes/fusion360/drive_c/users/ $USER /Downloads/Qt6WebEngineCore.dll " " $QT6_WEBENGINECORE_DIR /Qt6WebEngineCore.dll "
# Download the patched siappdll.dll file
curl -L " $SIAPPDLL_URL " -o " $HOME /.var/app/org.winehq.Wine/data/wineprefixes/fusion360/drive_c/users/ $USER /Downloads/siappdll.dll "
# Backup the original siappdll.dll file of Autodesk Fusion
cp -f " $QT6_WEBENGINECORE_DIR /siappdll.dll " " $QT6_WEBENGINECORE_DIR /siappdll.dll.bak "
# Copy the patched siappdll.dll file to the Autodesk Fusion directory
cp -f " $HOME /.var/app/org.winehq.Wine/data/wineprefixes/fusion360/drive_c/users/ $USER /Downloads/siappdll.dll " " $QT6_WEBENGINECORE_DIR /siappdll.dll "
2025-08-30 11:18:46 +02:00
###############################################################################################################################################################
# Continue ... Plugins, ...
###############################################################################################################################################################
2025-08-30 11:09:11 +02:00
2025-08-30 11:19:29 +02:00
#cd $HOME/.var/app/org.winehq.Wine/data/wineprefixes/fusion360/drive_c/Program Files/Autodesk/webdeploy/production/PRODUCTION-ID
#flatpak run --env=WINEDEBUG=-all --env=WINEPREFIX=$HOME/.var/app/org.winehq.Wine/data/wineprefixes/fusion360 org.winehq.Wine FusionLauncher.exe
2025-08-30 12:41:13 +02:00
# Workaround after the login in the web browser your must copy the callback code an replace the XXXXXXXXXX with it and run this command in a seperate terminal window
flatpak run --env= " WINEPREFIX=/var/home/ $USER /.var/app/org.winehq.Wine/data/wineprefixes/fusion360 " org.winehq.Wine xdg-open "https://signin.autodesk.com/idmgr/callback#code=XXXXXXXXXX"