diff --git a/files/setup/autodesk_fusion_installer_x86-64.sh b/files/setup/autodesk_fusion_installer_x86-64.sh index 0c4a0e2..b072989 100755 --- a/files/setup/autodesk_fusion_installer_x86-64.sh +++ b/files/setup/autodesk_fusion_installer_x86-64.sh @@ -7,8 +7,8 @@ # Author URI: https://cryinkfly.com # # License: MIT # # Copyright (c) 2020-2026 # -# Time/Date: 00:55/25.01.2026 # -# Version: 2.0.6-Alpha # +# Time/Date: 11:57/21.02.2026 # +# Version: 2.0.7-Alpha # #################################################################################################### ############################################################################################################################################################### @@ -25,59 +25,62 @@ NOCOLOR=$'\033[0m' SELECTED_OPTION="$1" SELECTED_DIRECTORY="$2" SELECTED_EXTENSIONS="$3" +DOWNLOAD_EXTENSIONS=0 if [ -z "$SELECTED_DIRECTORY" ] || [ "$SELECTED_DIRECTORY" == "--default" ]; then SELECTED_DIRECTORY="$HOME/.autodesk_fusion" fi +WINE_PFX="$SELECTED_DIRECTORY/wineprefixes/default" # if selected_extensions is set to --full, then all extensions will be installed if [ "$SELECTED_EXTENSIONS" == "--full" ]; then SELECTED_EXTENSIONS="CzechlocalizationforF360,HP3DPrintersforAutodesk®Fusion®,MarkforgedforAutodesk®Fusion®,OctoPrintforAutodesk®Fusion360™,UltimakerDigitalFactoryforAutodeskFusion360™" -else - SELECTED_EXTENSIONS="" + DOWNLOAD_EXTENSIONS=1 fi +REPO_URL="https://codeberg.org/cryinkfly/Autodesk-Fusion-360-on-Linux/raw/branch/main" + # URL to download translations po. files <-- Still in progress!!! -UPDATER_TRANSLATIONS_URL="https://raw.githubusercontent.com/cryinkfly/Autodesk-Fusion-360-for-Linux/main/files/setup/locale/update-locale.sh" +UPDATER_TRANSLATIONS_URL="$REPO_URL/files/setup/locale/update-locale.sh" declare -A TRANSLATION_URLS=( - ["cs_CZ"]="https://raw.githubusercontent.com/cryinkfly/Autodesk-Fusion-360-for-Linux/main/files/setup/locale/cs_CZ/LC_MESSAGES/autodesk_fusion.po" - ["de_DE"]="https://raw.githubusercontent.com/cryinkfly/Autodesk-Fusion-360-for-Linux/main/files/setup/locale/de_DE/LC_MESSAGES/autodesk_fusion.po" - ["en_US"]="https://raw.githubusercontent.com/cryinkfly/Autodesk-Fusion-360-for-Linux/main/files/setup/locale/en_US/LC_MESSAGES/autodesk_fusion.po" - ["es_ES"]="https://raw.githubusercontent.com/cryinkfly/Autodesk-Fusion-360-for-Linux/main/files/setup/locale/es_ES/LC_MESSAGES/autodesk_fusion.po" - ["fr_FR"]="https://raw.githubusercontent.com/cryinkfly/Autodesk-Fusion-360-for-Linux/main/files/setup/locale/fr_FR/LC_MESSAGES/autodesk_fusion.po" - ["it_IT"]="https://raw.githubusercontent.com/cryinkfly/Autodesk-Fusion-360-for-Linux/main/files/setup/locale/it_IT/LC_MESSAGES/autodesk_fusion.po" - ["ja_JP"]="https://raw.githubusercontent.com/cryinkfly/Autodesk-Fusion-360-for-Linux/main/files/setup/locale/ja_JP/LC_MESSAGES/autodesk_fusion.po" - ["ko_KR"]="https://raw.githubusercontent.com/cryinkfly/Autodesk-Fusion-360-for-Linux/main/files/setup/locale/ko_KR/LC_MESSAGES/autodesk_fusion.po" - ["pl_PL"]="https://raw.githubusercontent.com/cryinkfly/Autodesk-Fusion-360-for-Linux/main/files/setup/locale/pl_PL/LC_MESSAGES/autodesk_fusion.po" - ["pt_BR"]="https://raw.githubusercontent.com/cryinkfly/Autodesk-Fusion-360-for-Linux/main/files/setup/locale/pt_BR/LC_MESSAGES/autodesk_fusion.po" - ["tr_TR"]="https://raw.githubusercontent.com/cryinkfly/Autodesk-Fusion-360-for-Linux/main/files/setup/locale/tr_TR/LC_MESSAGES/autodesk_fusion.po" - ["zh_CN"]="https://raw.githubusercontent.com/cryinkfly/Autodesk-Fusion-360-for-Linux/main/files/setup/locale/zh_CN/LC_MESSAGES/autodesk_fusion.po" - ["zh_TW"]="https://raw.githubusercontent.com/cryinkfly/Autodesk-Fusion-360-for-Linux/main/files/setup/locale/zh_TW/LC_MESSAGES/autodesk_fusion.po" + ["cs_CZ"]="$REPO_URL/files/setup/locale/cs_CZ/LC_MESSAGES/autodesk_fusion.po" + ["de_DE"]="$REPO_URL/files/setup/locale/de_DE/LC_MESSAGES/autodesk_fusion.po" + ["en_US"]="$REPO_URL/files/setup/locale/en_US/LC_MESSAGES/autodesk_fusion.po" + ["es_ES"]="$REPO_URL/files/setup/locale/es_ES/LC_MESSAGES/autodesk_fusion.po" + ["fr_FR"]="$REPO_URL/files/setup/locale/fr_FR/LC_MESSAGES/autodesk_fusion.po" + ["it_IT"]="$REPO_URL/files/setup/locale/it_IT/LC_MESSAGES/autodesk_fusion.po" + ["ja_JP"]="$REPO_URL/files/setup/locale/ja_JP/LC_MESSAGES/autodesk_fusion.po" + ["ko_KR"]="$REPO_URL/files/setup/locale/ko_KR/LC_MESSAGES/autodesk_fusion.po" + ["pl_PL"]="$REPO_URL/files/setup/locale/pl_PL/LC_MESSAGES/autodesk_fusion.po" + ["pt_BR"]="$REPO_URL/files/setup/locale/pt_BR/LC_MESSAGES/autodesk_fusion.po" + ["tr_TR"]="$REPO_URL/files/setup/locale/tr_TR/LC_MESSAGES/autodesk_fusion.po" + ["zh_CN"]="$REPO_URL/files/setup/locale/zh_CN/LC_MESSAGES/autodesk_fusion.po" + ["zh_TW"]="$REPO_URL/files/setup/locale/zh_TW/LC_MESSAGES/autodesk_fusion.po" ) # URL to download winetricks WINETRICKS_URL="https://raw.githubusercontent.com/Winetricks/winetricks/master/src/winetricks" # URL 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" +#AUTODESK_FUSION_INSTALLER_URL="https://dl.appstreaming.autodesk.com/production/installers/Fusion%20360%20Admin%20Install.exe" <-- Old Link!!! # 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" # Testing a newer version (144.0.3719.93): WEBVIEW2_INSTALLER_URL="https://msedge.sf.dl.delivery.mp.microsoft.com/filestreamingservice/files/ba1bb4b1-79ea-47b5-a0e0-967253cd7900/MicrosoftEdgeWebView2RuntimeInstallerX64.exe" # URL to download the patched Qt6WebEngineCore.dll file -QT6_WEBENGINECORE_URL="https://raw.githubusercontent.com/cryinkfly/Autodesk-Fusion-360-for-Linux/main/files/extras/patched-dlls/Qt6WebEngineCore-06-2025.7z" +QT6_WEBENGINECORE_URL="$REPO_URL/files/extras/patched-dlls/Qt6WebEngineCore-06-2025.7z" # 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" +SIAPPDLL_URL="$REPO_URL/files/extras/patched-dlls/siappdll.dll" ############################################################################################################################################################################## # CHECK THE REQUIRED PACKAGES FOR THE INSTALLER: # ############################################################################################################################################################################## -function check_required_packages() { +check_required_packages() { # Extracting the Linux distribution ID and version DISTRO=$(grep "^ID=" /etc/*-release | cut -d'=' -f2 | tr -d '"') VERSION=$(grep "^VERSION_ID=" /etc/*-release | cut -d'=' -f2 | tr -d '"') @@ -179,7 +182,7 @@ function check_required_packages() { # INSTALLATION OF THE REQUIRED PACKAGES FOR THE INSTALLER: # ############################################################################################################################################################################## -function install_required_packages { +install_required_packages() { echo -e "$(gettext "${YELLOW}The installer will install the required packages for the installation!")${NOCOLOR}" echo -e "$(gettext "${RED}Missing package: ${cmd}")${NOCOLOR}" sleep 2 @@ -274,7 +277,7 @@ function install_required_packages { ############################################################################################################################################################################## # <-- Still in progress!!! -function download_translations { +download_translations() { curl -o "./locale/update-locale.sh" "$UPDATER_TRANSLATIONS_URL" chmod +x "./locale/update-locale.sh" @@ -302,7 +305,7 @@ function download_translations { # CHECK THE OPTIONS FOR THE INSTALLER: # ############################################################################################################################################################################## -function check_option() { +check_option() { case "$1" in "--uninstall") clear @@ -393,7 +396,7 @@ function check_option() { # DEACTIVATE THE WINDOW NOT RESPONDING DIALOG: # ############################################################################################################################################################################## -function deactivate_window_not_responding_dialog() { +deactivate_window_not_responding_dialog() { # Check if desktop environment is GNOME if [ "$XDG_CURRENT_DESKTOP" = "GNOME" ]; then # Disable the "Window not responding" Dialog in GNOME for 30 minutes: @@ -406,15 +409,14 @@ function deactivate_window_not_responding_dialog() { # CREATE THE DATA STRUCTURE FOR THE INSTALLER: # ############################################################################################################################################################################## -function create_data_structure() { +create_data_structure() { mkdir -p "$SELECTED_DIRECTORY/bin" \ - "$SELECTED_DIRECTORY/config" \ "$SELECTED_DIRECTORY/downloads/extensions" \ "$SELECTED_DIRECTORY/logs" \ - "$SELECTED_DIRECTORY/locale" \ + "$SELECTED_DIRECTORY/.desktop" \ "$SELECTED_DIRECTORY/resources/graphics" \ "$SELECTED_DIRECTORY/resources/styles" \ - "$SELECTED_DIRECTORY/wineprefixes/default" + "$WINE_PFX" } ############################################################################################################################################################################## @@ -422,19 +424,19 @@ function create_data_structure() { ############################################################################################################################################################################## # Function to check if Secure Boot is activated -function check_secure_boot { +check_secure_boot() { if ! command -v mokutil &> /dev/null; then echo "${RED} mokutil command not found. Please install it to check Secure Boot status.${NOCOLOR}" exit 1 fi # Check if Secure Boot is enabled - if mokutil --sb-state | grep -q 'Secure Boot enabled'; then + if mokutil --sb-state | grep -qE 'Secure Boot enabled|SecureBoot enabled'; then echo "Secure Boot is enabled." - SECURE_BOOT="1" + SECURE_BOOT=1 else echo "Secure Boot is not enabled." - SECURE_BOOT="0" + SECURE_BOOT=0 fi } @@ -442,7 +444,7 @@ function check_secure_boot { # CHECKING THE MINIMUM RAM (RANDOM ACCESS MEMORY) REQUIREMENT: # ############################################################################################################################################################################## -function check_ram { +check_ram() { # Get total RAM space in kilobytes GET_RAM_KILOBYTES=$(grep MemTotal /proc/meminfo | awk '{print $2}') @@ -475,13 +477,13 @@ function check_ram { # CHECK GPU DRIVER FOR THE INSTALLER: # ############################################################################################################################################################################## -function check_gpu_driver { +check_gpu_driver() { echo -e "$(gettext "${YELLOW}Checking the GPU drivers for the installer...${NOCOLOR}")" - if [[ $SECURE_BOOT == "0" ]]; then + if (( !SECURE_BOOT )); then # If Secure Boot is disabled, check NVIDIA GPU if nvidia-smi &>/dev/null; then - NVIDIA_PRESENT=true + NVIDIA_PRESENT=1 NVIDIA_VRAM=$(nvidia-smi --query-gpu=memory.total --format=csv,noheader,nounits | head -n1) echo -e "$(gettext "${GREEN}NVIDIA GPU detected with ${NVIDIA_VRAM}MB VRAM${NOCOLOR}")" fi @@ -491,24 +493,26 @@ function check_gpu_driver { INTEL_AMD_VRAM=$(glxinfo | grep -i "Video memory" | grep -Eo '[0-9]+MB' | grep -Eo '[0-9]+' | head -n1) if [[ $INTEL_AMD_GPU == "AMD" ]]; then - AMD_PRESENT=true + AMD_PRESENT=1 AMD_VRAM=$(glxinfo | grep -i "Video memory" | grep -Eo '[0-9]+MB' | grep -Eo '[0-9]+' | head -n1) echo -e "$(gettext "${GREEN}${INTEL_AMD_GPU} GPU recognized with ${AMD_VRAM}MB VRAM${NOCOLOR}")" elif [[ $INTEL_AMD_GPU == "Intel" ]]; then - INTEL_PRESENT=true + INTEL_PRESENT=1 INTEL_VRAM=$(glxinfo | grep -i "Video memory" | grep -Eo '[0-9]+MB' | grep -Eo '[0-9]+' | head -n1) echo -e "$(gettext "${GREEN}${INTEL_AMD_GPU} GPU recognized with ${INTEL_VRAM}MB VRAM${NOCOLOR}")" fi - if [[ $SECURE_BOOT == "1" && $NVIDIA_PRESENT ]]; then + if (( SECURE_BOOT && NVIDIA_PRESENT )); then # If Secure Boot is enabled and the NVIDIA GPU is detected, the NVIDIA GPU should use OpenGL. GPU_DRIVER="OpenGL" - GET_VRAM_MEGABYTES=$NVIDIA_VRAM + GET_VRAM_MEGABYTES="$NVIDIA_VRAM" echo -e "$(gettext "${GREEN}Secure Boot is enabled. The OpenGL GPU driver is being used for the NVIDIA GPU.${NOCOLOR}")" - elif [[ $SECURE_BOOT == "0" ]]; then + #elif (( !SECURE_BOOT )); then # WHY???? + else + echo -e "$(gettext "${GREEN}Secure Boot is disabled. Checking available GPU drivers...${NOCOLOR}")" # If Secure Boot is disabled, handle GPU selection - if [[ $NVIDIA_PRESENT && ($INTEL_PRESENT || $AMD_PRESENT) ]]; then - echo -e "$(gettext "${YELLOW}MMultiple GPUs detected. Please select which one to use (default is DXVK):${NOCOLOR}")" + if (( NVIDIA_PRESENT && (INTEL_PRESENT || AMD_PRESENT) )); then + echo -e "$(gettext "${YELLOW}Multiple GPUs detected. Please select which one to use (default is DXVK):${NOCOLOR}")" echo "1) NVIDIA" echo "2) ${INTEL_AMD_GPU}" read -p "Enter your choice (1 or 2): " gpu_choice @@ -516,44 +520,44 @@ function check_gpu_driver { case $gpu_choice in 1) GPU_DRIVER="DXVK" - GET_VRAM_MEGABYTES=$NVIDIA_VRAM + GET_VRAM_MEGABYTES="$NVIDIA_VRAM" echo -e "$(gettext "${GREEN}NVIDIA GPU selected. The DXVK GPU driver will be used for installation.${NOCOLOR}")" ;; 2) GPU_DRIVER="OpenGL" - GET_VRAM_MEGABYTES=$INTEL_AMD_VRAM + GET_VRAM_MEGABYTES="$INTEL_AMD_VRAM" echo -e "$(gettext "${GREEN}The OpenGL GPU fallback driver is used for the installation.${NOCOLOR}")" ;; *) GPU_DRIVER="OpenGL" - GET_VRAM_MEGABYTES=$INTEL_VRAM + GET_VRAM_MEGABYTES="$INTEL_VRAM" ;; esac - elif [[ $NVIDIA_PRESENT ]]; then + elif (( NVIDIA_PRESENT )); then GPU_DRIVER="DXVK" - GET_VRAM_MEGABYTES=$NVIDIA_VRAM + GET_VRAM_MEGABYTES="$NVIDIA_VRAM" echo -e "$(gettext "${GREEN}The DXVK GPU driver is used for the installation.${NOCOLOR}")" - elif [[ $AMD_PRESENT ]]; then + elif (( AMD_PRESENT )); then GPU_DRIVER="DXVK" - GET_VRAM_MEGABYTES=$AMD_VRAM + GET_VRAM_MEGABYTES="$AMD_VRAM" echo -e "$(gettext "${GREEN}The DXVK GPU driver is used for the installation.${NOCOLOR}")" - elif [[ $INTEL_PRESENT ]]; then + elif (( INTEL_PRESENT )); then GPU_DRIVER="OpenGL" - GET_VRAM_MEGABYTES=$INTEL_VRAM + GET_VRAM_MEGABYTES="$INTEL_VRAM" echo -e "$(gettext "${GREEN}The OpenGL GPU fallback driver is used for the installation.${NOCOLOR}")" else echo -e "$(gettext "${RED}No GPU driver detected on your system!${NOCOLOR}")" GET_VRAM_MEGABYTES=0 fi - else - echo -e "$(gettext "${RED}No GPU driver detected on your system!${NOCOLOR}")" - GET_VRAM_MEGABYTES=0 + #else + # echo -e "$(gettext "${RED}No GPU driver detected on your system!${NOCOLOR}")" + # GET_VRAM_MEGABYTES=0 fi sleep 2 # Get the current display resolution of the main monitor if more than one is connected. - MONITOR_RESOLUTION=$(xrandr | grep '*' | awk '{print $1}') + MONITOR_RESOLUTION=$(xrandr 2>/dev/null | grep 'primary' | awk '{print $4}' | cut -d'+' -f1) # If the $MONITOR_RESOLUTION value is empty, set it to "1920x1080" if [ -z "$MONITOR_RESOLUTION" ]; then @@ -570,7 +574,7 @@ function check_gpu_driver { # CHECKING THE MINIMUM VRAM (VIDEO RAM) REQUIREMENT: # ############################################################################################################################################################################## -function check_gpu_vram { +check_gpu_vram() { # Get the total memory of the graphics card in megabytes from check_gpu_driver if [ -z "$GET_VRAM_MEGABYTES" ]; then @@ -601,7 +605,7 @@ function check_gpu_vram { # CHECKING THE MINIMUM DISK SPACE (DEFAULT: HOME-PARTITION) REQUIREMENT: # ############################################################################################################################################################################## -function check_disk_space { +check_disk_space() { # Get the free disk space in the selected directory GET_DISK_SPACE=$(df -h "$SELECTED_DIRECTORY" 2>/dev/null | awk 'NR==2 {print $4}') @@ -639,7 +643,7 @@ function check_disk_space { # CHECK FIREFOX VERSION FOR THE INSTALLER: # ############################################################################################################################################################################## -function get_firefox_version { +get_firefox_version() { if command -v firefox &>/dev/null; then firefox --version | grep -oP '\d+\.\d+(\.\d+)?' else @@ -647,7 +651,7 @@ function get_firefox_version { fi } -function is_snap_firefox_installed { +is_snap_firefox_installed() { if snap list | grep -q firefox; then return 0 else @@ -655,9 +659,9 @@ function is_snap_firefox_installed { fi } -function check_install_firefox_deb { +check_install_firefox_deb() { # Function to check if Firefox is installed via Snap - function is_snap_firefox_installed { + is_snap_firefox_installed { snap list firefox &> /dev/null return $? } @@ -708,82 +712,93 @@ Pin-Priority: 1000 # DOWNLOAD THE REQUIRED FILES FOR THE INSTALLER: # ############################################################################################################################################################################## -function download_files() { +download_files() { echo -e "$(gettext "${GREEN}Downloading the required files for the installation ...${NOCOLOR}")" sleep 2 # Download the newest winetricks version: - echo -e "$(gettext "${YELLOW}Downloading the newest winetricks version ...${NOCOLOR}")" - curl -L "$WINETRICKS_URL" -o "$SELECTED_DIRECTORY/bin/winetricks" + download_file "winetricks" "$WINETRICKS_URL" "$SELECTED_DIRECTORY/bin" chmod +x "$SELECTED_DIRECTORY/bin/winetricks" + # Search for an existing installer of Autodesk Fusion and download it if it doesn't exist or is older than 7 days - AUTODESK_FUSION_INSTALLER="$SELECTED_DIRECTORY/downloads/FusionClientInstaller.exe" - if [ -f "$AUTODESK_FUSION_INSTALLER" ]; then - echo -e "$(gettext "${GREEN}The Autodesk Fusion installer exists!${NOCOLOR}")" - if find "$AUTODESK_FUSION_INSTALLER" -mtime +7 | grep -q .; then - echo -e "$(gettext "${YELLOW}The Autodesk Fusion installer exists but is older than 7 days and will be updated!")${NOCOLOR}" - rm -rf "$AUTODESK_FUSION_INSTALLER" - curl -L "$AUTODESK_FUSION_INSTALLER_URL" -o "$AUTODESK_FUSION_INSTALLER" - fi - else - echo -e "$(gettext "${YELLOW}The Autodesk Fusion installer doesn't exist and will be downloaded for you!${NOCOLOR}")" - curl -L "$AUTODESK_FUSION_INSTALLER_URL" -o "$AUTODESK_FUSION_INSTALLER" - fi + download_file "FusionClientInstaller.exe" "$AUTODESK_FUSION_INSTALLER_URL" + # Search for an existing installer of WEBVIEW2 and download it if it doesn't exist or is older than 7 days - WEBVIEW2_INSTALLER="$SELECTED_DIRECTORY/downloads/WebView2installer.exe" - if [ -f "$WEBVIEW2_INSTALLER" ]; then - echo -e "$(gettext "${GREEN}The WebView2installer installer exists!${NOCOLOR}")" - if find "$WEBVIEW2_INSTALLER" -mtime +7 | grep -q .; then - echo -e "$(gettext "${YELLOW}The WebView2installer installer exists but is older than 7 days and will be updated!")${NOCOLOR}" - rm -rf "$WEBVIEW2_INSTALLER" - curl -L "$WEBVIEW2_INSTALLER_URL" -o "$WEBVIEW2_INSTALLER" - fi - else - echo -e "$(gettext "${YELLOW}The WebView2installer installer doesn't exist and will be downloaded for you!${NOCOLOR}")" - curl -L "$WEBVIEW2_INSTALLER_URL" -o "$WEBVIEW2_INSTALLER" - fi + download_file "WebView2installer.exe" "$WEBVIEW2_INSTALLER_URL" + # Download all tested extensions for Autodesk Fusion 360 on Linux - download_extensions_files + if (( DOWNLOAD_EXTENSIONS )); then + download_extensions_files + fi + # Download the patched Qt6WebEngineCore.dll file - curl -L "$QT6_WEBENGINECORE_URL" -o "$SELECTED_DIRECTORY/downloads/Qt6WebEngineCore.dll.7z" + download_file "Qt6WebEngineCore.dll.7z" "$QT6_WEBENGINECORE_URL" + # Download the patched siappdll.dll file - curl -L "$SIAPPDLL_URL" -o "$SELECTED_DIRECTORY/downloads/siappdll.dll" + download_file "siappdll.dll" "$SIAPPDLL_URL" + + mkdir -p "$SELECTED_DIRECTORY/downloads/$GPU_DRIVER" + # Download the DXVK registry file if the DXVK GPU driver is selected + if [[ $GPU_DRIVER == "DXVK" ]]; then + download_file "DXVK.reg" "$REPO_URL/files/setup/resource/video_driver/DXVK/DXVK.reg" "$SELECTED_DIRECTORY/downloads/DXVK" + fi + download_file "NMachineSpecificOptions.xml" "$REPO_URL/files/setup/resource/video_driver/$GPU_DRIVER/NMachineSpecificOptions.xml" "$SELECTED_DIRECTORY/downloads/$GPU_DRIVER" + + # Download Autodesk Fusion SVG! + download_file "autodesk_fusion.svg" "$REPO_URL/files/setup/resource/graphics/autodesk_fusion.svg" "$SELECTED_DIRECTORY/resources/graphics" + download_file "Autodesk Fusion.desktop" "$REPO_URL/files/setup/resource/.desktop/Autodesk%20Fusion.desktop" "$SELECTED_DIRECTORY/.desktop" + download_file "adskidmgr-opener.desktop" "$REPO_URL/files/setup/resource/.desktop/adskidmgr-opener.desktop" "$SELECTED_DIRECTORY/.desktop" + + # Download some script files for Autodesk Fusion 360! + download_file "autodesk_fusion_launcher.sh" "$REPO_URL/files/setup/data/autodesk_fusion_launcher.sh" "$SELECTED_DIRECTORY/bin" + chmod +x "$SELECTED_DIRECTORY/bin/autodesk_fusion_launcher.sh" } -# Download an extension if it doesn't exist or is older than 7 days -function download_extensions_files { +download_extensions_files() { echo -e "$(gettext "${YELLOW}Downloading the tested extensions for Autodesk Fusion on Linux ...${NOCOLOR}")" - download_extension "Ceska_lokalizace_pro_Autodesk_Fusion.exe" \ - "https://www.cadstudio.cz/dl/Ceska_lokalizace_pro_Autodesk_Fusion_360.exe" - download_extension "HP_3DPrinters_for_Fusion360-win64.msi" \ - "https://github.com/cryinkfly/Autodesk-Fusion-360-for-Linux/raw/main/files/extensions/HP_3DPrinters_for_Fusion360-win64.msi" - download_extension "Markforged_for_Fusion360-win64.msi" \ - "https://github.com/cryinkfly/Autodesk-Fusion-360-for-Linux/raw/main/files/extensions/Markforged_for_Fusion360-win64.msi" - download_extension "OctoPrint_for_Fusion360-win64.msi" \ - "https://github.com/cryinkfly/Autodesk-Fusion-360-for-Linux/raw/main/files/extensions/OctoPrint_for_Fusion360-win64.msi" - download_extension "Ultimaker_Digital_Factory-win64.msi" \ - "https://github.com/cryinkfly/Autodesk-Fusion-360-for-Linux/raw/main/files/extensions/Ultimaker_Digital_Factory-win64.msi" + EXTENSION_FILE_DIRECTORY="$SELECTED_DIRECTORY/downloads/extensions" + download_file "Ceska_lokalizace_pro_Autodesk_Fusion.exe" \ + "https://www.cadstudio.cz/dl/Ceska_lokalizace_pro_Autodesk_Fusion_360.exe" \ + "$EXTENSION_FILE_DIRECTORY" + download_file "HP_3DPrinters_for_Fusion360-win64.msi" \ + "https://github.com/cryinkfly/Autodesk-Fusion-360-for-Linux/raw/main/files/extensions/HP_3DPrinters_for_Fusion360-win64.msi" \ + "$EXTENSION_FILE_DIRECTORY" + download_file "Markforged_for_Fusion360-win64.msi" \ + "https://github.com/cryinkfly/Autodesk-Fusion-360-for-Linux/raw/main/files/extensions/Markforged_for_Fusion360-win64.msi" \ + "$EXTENSION_FILE_DIRECTORY" + download_file "OctoPrint_for_Fusion360-win64.msi" \ + "https://github.com/cryinkfly/Autodesk-Fusion-360-for-Linux/raw/main/files/extensions/OctoPrint_for_Fusion360-win64.msi" \ + "$EXTENSION_FILE_DIRECTORY" + download_file "Ultimaker_Digital_Factory-win64.msi" \ + "https://github.com/cryinkfly/Autodesk-Fusion-360-for-Linux/raw/main/files/extensions/Ultimaker_Digital_Factory-win64.msi" \ + "$EXTENSION_FILE_DIRECTORY" echo -e "$(gettext "${GREEN}All tested extensions for Autodesk Fusion on Linux are downloaded!${NOCOLOR}")" } -function download_extension { - local EXTENSION_FILE_NAME="$1" - local EXTENSION_FILE_URL="$2" - local EXTENSION_FILE_DIRECTORY="$SELECTED_DIRECTORY/downloads/extensions/$EXTENSION_FILE_NAME" - - if [ -f "$EXTENSION_FILE_DIRECTORY" ]; then - if find "$EXTENSION_FILE_DIRECTORY" -mtime +7 | grep -q .; then - curl -L "$EXTENSION_FILE_URL" -o "$EXTENSION_FILE_DIRECTORY" +download_file() { + local FILE_NAME="$1" + local FILE_URL="$2" + local DESTINATION_DIRECTORY="${3:-$SELECTED_DIRECTORY/downloads/}" + local FILE="$DESTINATION_DIRECTORY/$FILE_NAME" + + if [ -f "$FILE" ]; then + echo -e "$(gettext "${GREEN}$FILE_NAME exists!${NOCOLOR}")" + if find "$FILE" -mtime +7 | grep -q .; then + echo -e "$(gettext "${YELLOW}$FILE_NAME exists but is older than 7 days and will be updated!")${NOCOLOR}" + rm -rf "$FILE" + curl -L "$FILE_URL" -o "$FILE" fi else - curl -L "$EXTENSION_FILE_URL" -o "$EXTENSION_FILE_DIRECTORY" + echo -e "$(gettext "${YELLOW}$FILE_NAME doesn't exist and will be downloaded for you!${NOCOLOR}")" + curl -L "$FILE_URL" -o "$FILE" fi + } ############################################################################################################################################################################## # CHECK AND INSTALL WINE FOR THE INSTALLER: # ############################################################################################################################################################################## -function check_and_install_wine() { +check_and_install_wine() { # Check if wine is installed if [ -x "$(command -v wine)" ]; then echo "Wine is installed!" @@ -1041,9 +1056,9 @@ function check_and_install_wine() { # Helper function for the following function. The AdskIdentityManager.exe can be installed # into a variable alphanumeric folder. # This function finds that folder alphanumeric folder name. -function determine_variable_folder_name_for_identity_manager { +determine_variable_folder_name_for_identity_manager() { echo "Searching for the variable location of the Autodesk Fusion identity manager..." - IDENT_MAN_PATH=$(find "$SELECTED_DIRECTORY/wineprefixes/default" -name 'AdskIdentityManager.exe') + IDENT_MAN_PATH=$(find "$WINE_PFX" -name 'AdskIdentityManager.exe') # Get the dirname of the identity manager's alphanumeric folder. # With the full path of the identity manager, go 2 folders up and isolate the folder name. IDENT_MAN_VARIABLE_DIRECTORY=$(basename "$(dirname "$(dirname "$IDENT_MAN_PATH")")") @@ -1052,108 +1067,59 @@ function determine_variable_folder_name_for_identity_manager { ######################################################################################## # Load the icons and .desktop-files: -function autodesk_fusion_shortcuts_load { +autodesk_fusion_shortcuts_load() { # Create a .desktop file (launcher.sh) for Autodesk Fusion! - curl -L https://raw.githubusercontent.com/cryinkfly/Autodesk-Fusion-360-for-Linux/main/files/setup/resource/graphics/autodesk_fusion.svg -o "$SELECTED_DIRECTORY/resources/graphics/autodesk_fusion.svg" - cat > "$HOME/.local/share/applications/wine/Programs/Autodesk/Autodesk Fusion.desktop" << EOF -[Desktop Entry] -Name=Autodesk Fusion -GenericName=CAD Application -GenericName[cs]=Aplikace CAD -GenericName[de]=CAD-Anwendung -GenericName[es]=Aplicación CAD -GenericName[fr]=Application CAO -GenericName[it]=Applicazione CAD -GenericName[ja]=CADアプリケーション -GenericName[ko]=CAD 응용 -GenericName[zh_CN]=计算机辅助设计应用 -Comment=Autodesk Fusion is a cloud-based 3D modeling, CAD, CAM, and PCB software platform for product design and manufacturing. -Comment[cs]=Autodesk Fusion je cloudová platforma pro 3D modelování, CAD, CAM a PCB určená k navrhování a výrobě produktů. -Comment[de]=Autodesk Fusion ist eine cloudbasierte Softwareplattform für Modellierung, CAD, CAM, CAE und Leiterplatten in 3D für Produktdesign und Fertigung. -Comment[es]=Autodesk Fusion es una plataforma de software de modelado 3D, CAD, CAM y PCB basada en la nube destinada al diseño y la fabricación de productos. -Comment[fr]=Autodesk Fusion est une plate-forme logicielle 3D cloud de modélisation, de CAO, de FAO, d’IAO et de conception de circuits imprimés destinée à la conception et à la fabrication de produits. -Comment[it]=Autodesk Fusion è una piattaforma software di modellazione 3D, CAD, CAM, CAE e PCB basata sul cloud per la progettazione e la realizzazione di prodotti. -Comment[ja]=Autodesk Fusion、製品の設計と製造のためのクラウドベースの3Dモデリング、CAD、CAM、およびPCBソフトウェアプラットフォームです。 -Comment[ko]=Autodesk Fusion 제품 설계 및 제조를 위한 클라우드 기반 3D 모델링, CAD, CAM 및 PCB 소프트웨어 플랫폼입니다. -Comment[zh_CN]=Autodesk Fusion 是一个基于云的 3D 建模、CAD、CAM 和 PCB 软件平台,用于产品设计和制造。 -Exec=$SELECTED_DIRECTORY/bin/autodesk_fusion_launcher.sh -Type=Application -Categories=Education;Engineering;Graphics;Science -StartupNotify=true -Icon=$SELECTED_DIRECTORY/resources/graphics/autodesk_fusion.svg -Terminal=false -Path=$SELECTED_DIRECTORY/bin -EOF + DESKTOP_DIRECTORY="$HOME/.local/share/applications/wine/Programs/Autodesk" + mkdir -p "$DESKTOP_DIRECTORY" + rm -f "$DESKTOP_DIRECTORY/Autodesk Fusion.desktop" + cp "$SELECTED_DIRECTORY/.desktop/Autodesk Fusion.desktop" "$DESKTOP_DIRECTORY/Autodesk Fusion.desktop" + echo "Exec=$SELECTED_DIRECTORY/bin/autodesk_fusion_launcher.sh" >> "$DESKTOP_DIRECTORY/Autodesk Fusion.desktop" + echo "Icon=$SELECTED_DIRECTORY/resources/graphics/autodesk_fusion.svg" >> "$DESKTOP_DIRECTORY/Autodesk Fusion.desktop" + echo "Path=$SELECTED_DIRECTORY/bin" >> "$DESKTOP_DIRECTORY/Autodesk Fusion.desktop" # Set the permissions for the .desktop file to read-only - chmod 444 "$HOME/.local/share/applications/wine/Programs/Autodesk/Autodesk Fusion.desktop" + chmod 444 "$DESKTOP_DIRECTORY/Autodesk Fusion.desktop" + # Execute function determine_variable_folder_name_for_identity_manager #Create mimetype link to handle web login call backs to the Identity Manager - cat > $HOME/.local/share/applications/adskidmgr-opener.desktop << EOL -[Desktop Entry] -Type=Application -Name=adskidmgr Scheme Handler -Exec=sh -c 'env WINEPREFIX="$SELECTED_DIRECTORY/wineprefixes/default" wine "$(find $SELECTED_DIRECTORY/wineprefixes/default/ -name "AdskIdentityManager.exe" | head -1 | xargs -I '{}' echo {})" "%u"' -StartupNotify=false -MimeType=x-scheme-handler/adskidmgr; -EOL + rm -f "$DESKTOP_DIRECTORY/adskidmgr-opener.desktop" + cp "$SELECTED_DIRECTORY/.desktop/adskidmgr-opener.desktop" "$DESKTOP_DIRECTORY/adskidmgr-opener.desktop" + echo "Exec=sh -c 'env WINEPREFIX=$WINE_PFX wine \"\$(find $WINE_PFX -name AdskIdentityManager.exe | head -1)\" \"%u\"'" >> "$DESKTOP_DIRECTORY/adskidmgr-opener.desktop" #Set the permissions for the .desktop file to read-only - chmod 444 $HOME/.local/share/applications/adskidmgr-opener.desktop + chmod 444 "$DESKTOP_DIRECTORY/adskidmgr-opener.desktop" #Set the mimetype handler for the Identity Manager xdg-mime default adskidmgr-opener.desktop x-scheme-handler/adskidmgr #Disable Debug messages on regular runs, we dont have a terminal, so speed up the system by not wasting time prining them into the Void - sed -i 's/=env WINEPREFIX=/=env WINEDEBUG=-all env WINEPREFIX=/g' "$HOME/.local/share/applications/wine/Programs/Autodesk/Autodesk Fusion.desktop" - - # Download some script files for Autodesk Fusion 360! - curl -L https://raw.githubusercontent.com/cryinkfly/Autodesk-Fusion-360-for-Linux/main/files/setup/data/autodesk_fusion_launcher.sh -o "$SELECTED_DIRECTORY/bin/autodesk_fusion_launcher.sh" - chmod +x "$SELECTED_DIRECTORY/bin/autodesk_fusion_launcher.sh" -} - -############################################################################################################################################################### - -function dxvk_opengl_1 { - if [[ $GPU_DRIVER = "DXVK" ]]; then - WINEPREFIX="$SELECTED_DIRECTORY/wineprefixes/default" sh "$SELECTED_DIRECTORY/bin/winetricks" -q dxvk - curl -L https://raw.githubusercontent.com/cryinkfly/Autodesk-Fusion-360-for-Linux/main/files/setup/resource/video_driver/dxvk/DXVK.reg -o "$SELECTED_DIRECTORY/wineprefixes/default/drive_c/users/$USER/Downloads/DXVK.reg" - # Add the "return"-option. Here you can read more about it -> https://github.com/koalaman/shellcheck/issues/592 - cd "$SELECTED_DIRECTORY/wineprefixes/default/drive_c/users/$USER/Downloads" || return - WINEPREFIX="$SELECTED_DIRECTORY/wineprefixes/default" wine regedit.exe DXVK.reg - fi -} - -function dxvk_opengl_2 { - if [[ $GPU_DRIVER = "DXVK" ]]; then - curl -L https://raw.githubusercontent.com/cryinkfly/Autodesk-Fusion-360-for-Linux/main/files/setup/resource/video_driver/dxvk/NMachineSpecificOptions.xml -o "NMachineSpecificOptions.xml" - else - curl -L https://raw.githubusercontent.com/cryinkfly/Autodesk-Fusion-360-for-Linux/main/files/setup/resource/video_driver/opengl/NMachineSpecificOptions.xml -o "NMachineSpecificOptions.xml" - fi + sed -i 's/=env WINEPREFIX=/=env WINEDEBUG=-all env WINEPREFIX=/g' "$DESKTOP_DIRECTORY/Autodesk Fusion.desktop" } ############################################################################################################################################################### # Execute the installation of Autodesk Fusion -function autodesk_fusion_run_install_client { - cd "$SELECTED_DIRECTORY/wineprefixes/default/drive_c/users/$USER/Downloads" - #WINEPREFIX="$selected_directory/wineprefixes/default" timeout -k 5m 1m wine "$selected_directory/wineprefixes/default/drive_c/users/$USER/Downloads/Fusion360Clientinstaller.exe" --quiet - WINEPREFIX="$SELECTED_DIRECTORY/wineprefixes/default" timeout -k 10m 9m wine "$SELECTED_DIRECTORY/wineprefixes/default/drive_c/users/$USER/Downloads/FusionClientInstaller.exe" --quiet - sleep 5s - WINEPREFIX="$SELECTED_DIRECTORY/wineprefixes/default" timeout -k 5m 1m wine "$SELECTED_DIRECTORY/wineprefixes/default/drive_c/users/$USER/Downloads/FusionClientInstaller.exe" --quiet +autodesk_fusion_run_install_client() { + echo -e "$(gettext "${YELLOW}Installing Autodesk Fusion 360 Client ...${NOCOLOR}")" + sleep 2 + WINEPREFIX="$WINE_PFX" timeout -k 10m 9m wine "$SELECTED_DIRECTORY/downloads/FusionClientInstaller.exe" --quiet 2>> "$SELECTED_DIRECTORY/logs/FusionClientInstaller_1.log" + sleep 5 + echo -e "$(gettext "${YELLOW}Finalizing Autodesk Fusion 360 installation...${NOCOLOR}")" + WINEPREFIX="$WINE_PFX" timeout -k 5m 1m wine "$SELECTED_DIRECTORY/downloads/FusionClientInstaller.exe" --quiet 2>> "$SELECTED_DIRECTORY/logs/FusionClientInstaller_2.log" + echo -e "$(gettext "${GREEN}Autodesk Fusion 360 Client installation completed!${NOCOLOR}")" } ############################################################################################################################################################### # Patch the Qt6WebEngineCore.dll to fix the login issue and other issues -function autodesk_fusion_patch_qt6webenginecore { +autodesk_fusion_patch_qt6webenginecore() { # Find the Qt6WebEngineCore.dll file in the Autodesk Fusion directory - QT6_WEBENGINECORE=$(find "$SELECTED_DIRECTORY/wineprefixes/default" -name 'Qt6WebEngineCore.dll' -printf "%T+ %p\n" | sort -r | head -n 1 | sed -r 's/^[^ ]+ //') + QT6_WEBENGINECORE=$(find "$WINE_PFX" -name 'Qt6WebEngineCore.dll' -printf "%T+ %p\n" | sort -r | head -n 1 | sed -r 's/^[^ ]+ //') QT6_WEBENGINECORE_DIR=$(dirname "$QT6_WEBENGINECORE") - clear + echo "$QT6_WEBENGINECORE_DIR" echo -e "${YELLOW}The old Qt6WebEngineCore.dll file is located in the following directory: $QT6_WEBENGINECORE_DIR${NOCOLOR}" @@ -1172,7 +1138,7 @@ function autodesk_fusion_patch_qt6webenginecore { sleep 2 # Copy the patched Qt6WebEngineCore.dll file to the Autodesk Fusion directory - cp -f "$SELECTED_DIRECTORY/wineprefixes/default/drive_c/users/$USER/Downloads/Qt6WebEngineCore.dll" "$QT6_WEBENGINECORE_DIR/Qt6WebEngineCore.dll" + cp -f "$SELECTED_DIRECTORY/downloads/Qt6WebEngineCore.dll" "$QT6_WEBENGINECORE_DIR/Qt6WebEngineCore.dll" echo -e "${GREEN}The Qt6WebEngineCore.dll file is patched successfully!${NOCOLOR}" } @@ -1180,7 +1146,7 @@ function autodesk_fusion_patch_qt6webenginecore { # Add/Patch the siappdll.dll to fix the SpaceMouse issue -function autodesk_fusion_patch_siappdll { +autodesk_fusion_patch_siappdll() { echo -e "${YELLOW}Patching the siappdll.dll file for Autodesk Fusion ...${NOCOLOR}" sleep 2 @@ -1201,134 +1167,121 @@ function autodesk_fusion_patch_siappdll { ############################################################################################################################################################### # Wine configuration for Autodesk Fusion -function wine_autodesk_fusion_install() { +wine_autodesk_fusion_install() { # Note that the winetricks sandbox verb merely removes the desktop integration and Z: drive symlinks and is not a "true" sandbox. # It protects against errors rather than malice. It's useful for, e.g., keeping games from saving their settings in random subdirectories of your home directory. # But it still ensures that wine, for example, no longer has access permissions to Home! # For this reason, the EXE files must be located directly in the Wineprefix folder! - mkdir -p "$SELECTED_DIRECTORY/wineprefixes/default" - cd "$SELECTED_DIRECTORY/wineprefixes/default" || return - WINEPREFIX="$SELECTED_DIRECTORY/wineprefixes/default" sh "$SELECTED_DIRECTORY/bin/winetricks" -q sandbox - sleep 5s + echo -e "$(gettext "${YELLOW}Setting up the Wine prefix for Autodesk Fusion 360 in Sandbox... (suppressed)${NOCOLOR}")" + WINEPREFIX="$WINE_PFX" sh "$SELECTED_DIRECTORY/bin/winetricks" -q sandbox >> "$SELECTED_DIRECTORY/logs/winetricks_sandbox.log" 2>&1 + + echo -e "$(gettext "${YELLOW}Linking the downloads folder to the Wine prefix...${NOCOLOR}")" + rm -r "$WINE_PFX/drive_c/users/$USER/Downloads" + ln -s "$SELECTED_DIRECTORY/downloads" "$WINE_PFX/drive_c/users/$USER/Downloads" + + echo -e "$(gettext "${YELLOW}Configuring the Wine prefix for Autodesk Fusion 360...${NOCOLOR}")" + sleep 5 # If Mono or Gecko were not installed correctly in your Wine prefix: - WINEPREFIX="$SELECTED_DIRECTORY/wineprefixes/default" wine control.exe appwiz.cpl install_mono - WINEPREFIX="$SELECTED_DIRECTORY/wineprefixes/default" wine control.exe appwiz.cpl install_gecko - sleep 5s + WINEPREFIX="$WINE_PFX" wine control.exe appwiz.cpl install_mono + WINEPREFIX="$WINE_PFX" wine control.exe appwiz.cpl install_gecko + sleep 5 # We must install some packages! - WINEPREFIX="$SELECTED_DIRECTORY/wineprefixes/default" sh "$SELECTED_DIRECTORY/bin/winetricks" -q atmlib gdiplus arial corefonts cjkfonts dotnet452 msxml4 msxml6 vcrun2017 fontsmooth=rgb winhttp win10 + WINEPREFIX="$WINE_PFX" sh "$SELECTED_DIRECTORY/bin/winetricks" -q atmlib gdiplus arial corefonts cjkfonts dotnet452 msxml4 msxml6 vcrun2017 fontsmooth=rgb winhttp win10 2>> "$SELECTED_DIRECTORY/logs/winetricks_dotnet452.log" # We must install cjkfonts again then sometimes it doesn't work in the first time! - sleep 5s - WINEPREFIX="$SELECTED_DIRECTORY/wineprefixes/default" sh "$SELECTED_DIRECTORY/bin/winetricks" -q cjkfonts + echo -e "$(gettext "${YELLOW}Re-installing cjkfonts... (suppressed)${NOCOLOR}")" + sleep 5 + WINEPREFIX="$WINE_PFX" sh "$SELECTED_DIRECTORY/bin/winetricks" -q cjkfonts >> "$SELECTED_DIRECTORY/logs/winetricks_cjkfonts_2.log" 2>&1 # We must set to Windows 10 or 11 again because some other winetricks sometimes set it back to Windows XP! - sleep 5s - WINEPREFIX="$SELECTED_DIRECTORY/wineprefixes/default" sh "$SELECTED_DIRECTORY/bin/winetricks" -q win11 + echo -e "$(gettext "${YELLOW}Setting Windows 11 as the Windows version... (suppressed)${NOCOLOR}")" + sleep 5 + WINEPREFIX="$WINE_PFX" sh "$SELECTED_DIRECTORY/bin/winetricks" -q win11 >> "$SELECTED_DIRECTORY/logs/winetricks_win11.log" 2>&1 # Remove tracking metrics/calling home - sleep 5s - WINEPREFIX="$SELECTED_DIRECTORY/wineprefixes/default" wine REG ADD "HKCU\Software\Wine\DllOverrides" /v "adpclientservice.exe" /t REG_SZ /d "" /f + sleep 5 + WINEPREFIX="$WINE_PFX" wine REG ADD "HKCU\Software\Wine\DllOverrides" /v "adpclientservice.exe" /t REG_SZ /d "" /f # Navigation bar does not work well with anything other than the wine builtin DX9 - WINEPREFIX="$SELECTED_DIRECTORY/wineprefixes/default" wine REG ADD "HKCU\Software\Wine\DllOverrides" /v "AdCefWebBrowser.exe" /t REG_SZ /d builtin /f + WINEPREFIX="$WINE_PFX" wine REG ADD "HKCU\Software\Wine\DllOverrides" /v "AdCefWebBrowser.exe" /t REG_SZ /d builtin /f # Use Visual Studio Redist that is bundled with the application - WINEPREFIX="$SELECTED_DIRECTORY/wineprefixes/default" wine REG ADD "HKCU\Software\Wine\DllOverrides" /v "msvcp140" /t REG_SZ /d native /f - WINEPREFIX="$SELECTED_DIRECTORY/wineprefixes/default" wine REG ADD "HKCU\Software\Wine\DllOverrides" /v "mfc140u" /t REG_SZ /d native /f + WINEPREFIX="$WINE_PFX" wine REG ADD "HKCU\Software\Wine\DllOverrides" /v "msvcp140" /t REG_SZ /d native /f + WINEPREFIX="$WINE_PFX" wine REG ADD "HKCU\Software\Wine\DllOverrides" /v "mfc140u" /t REG_SZ /d native /f # Fixed the problem with the bcp47langs issue and now the login works again! - WINEPREFIX="$SELECTED_DIRECTORY/wineprefixes/default" wine reg add "HKCU\Software\Wine\DllOverrides" /v "bcp47langs" /t REG_SZ /d "" /f - sleep 5s + WINEPREFIX="$WINE_PFX" wine reg add "HKCU\Software\Wine\DllOverrides" /v "bcp47langs" /t REG_SZ /d "" /f + sleep 5 # 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. - WINEPREFIX="$SELECTED_DIRECTORY/wineprefixes/default" sh "$SELECTED_DIRECTORY/bin/winetricks" -q 7zip - cp "$SELECTED_DIRECTORY/downloads/Qt6WebEngineCore.dll.7z" "$SELECTED_DIRECTORY/wineprefixes/default/drive_c/users/$USER/Downloads/Qt6WebEngineCore.dll.7z" - WINEPREFIX="$SELECTED_DIRECTORY/wineprefixes/default" wine "$SELECTED_DIRECTORY/wineprefixes/default/drive_c/Program Files/7-Zip/7z.exe" x "C:\\users\\$USER\\Downloads\\Qt6WebEngineCore.dll.7z" -o"C:\\users\\$USER\\Downloads\\" + WINEPREFIX="$WINE_PFX" sh "$SELECTED_DIRECTORY/bin/winetricks" -q 7zip >> "$SELECTED_DIRECTORY/logs/winetricks_7zip.log" 2>&1 + WINEPREFIX="$WINE_PFX" wine "$WINE_PFX/drive_c/Program Files/7-Zip/7z.exe" x "C:\\users\\$USER\\Downloads\\Qt6WebEngineCore.dll.7z" -o"C:\\users\\$USER\\Downloads\\" # Disabled by Default - Configure the correct virtual desktop resolution - # WINEPREFIX="$SELECTED_DIRECTORY/wineprefixes/default" sh "$SELECTED_DIRECTORY/bin/winetricks" -q vd="$MONITOR_RESOLUTION" + # WINEPREFIX="$WINE_PFX" sh "$SELECTED_DIRECTORY/bin/winetricks" -q vd="$MONITOR_RESOLUTION" # Download and install WebView2 to handle Login attempts, required even though we redirect to your default browser - # sleep 5s - cp "$SELECTED_DIRECTORY/downloads/WebView2installer.exe" "$SELECTED_DIRECTORY/wineprefixes/default/drive_c/users/$USER/Downloads/WebView2installer.exe" - WINEPREFIX="$SELECTED_DIRECTORY/wineprefixes/default" wine "$SELECTED_DIRECTORY/wineprefixes/default/drive_c/users/$USER/Downloads/WebView2installer.exe" /silent /install + echo -e "$(gettext "${YELLOW}Installing Microsoft Edge WebView2 Runtime for Autodesk Fusion ...${NOCOLOR}")" + sleep 2 + WINEPREFIX="$WINE_PFX" wine "$SELECTED_DIRECTORY/downloads/WebView2installer.exe" /silent /install 2>> "$SELECTED_DIRECTORY/logs/WebView2_install.log" + echo -e "$(gettext "${GREEN}Microsoft Edge WebView2 Runtime installation completed!${NOCOLOR}")" # Pre-create shortcut directory for latest re-branding Microsoft Edge WebView2 - mkdir -p "$SELECTED_DIRECTORY/wineprefixes/default/drive_c/users/$USER/AppData/Roaming/Microsoft/Internet Explorer/Quick Launch/User Pinned/" - dxvk_opengl_1 - cp "$SELECTED_DIRECTORY/downloads/FusionClientInstaller.exe" "$SELECTED_DIRECTORY/wineprefixes/default/drive_c/users/$USER/Downloads" + APPDATA_DIRECTORY="$WINE_PFX/drive_c/users/$USER/AppData" + APPLICATION_DATA_DIRECTORY="$WINE_PFX/drive_c/users/$USER/Application Data" + mkdir -p "$APPDATA_DIRECTORY/Roaming/Microsoft/Internet Explorer/Quick Launch/User Pinned" + + if [[ $GPU_DRIVER = "DXVK" ]]; then + WINEPREFIX="$WINE_PFX" sh "$SELECTED_DIRECTORY/bin/winetricks" -q dxvk + # Add the "return"-option. Here you can read more about it -> https://github.com/koalaman/shellcheck/issues/592 + WINEPREFIX="$WINE_PFX" wine regedit.exe "C:\\users\\$USER\\Downloads\\DXVK\\DXVK.reg" + fi autodesk_fusion_run_install_client - mkdir -p "$SELECTED_DIRECTORY/wineprefixes/default/drive_c/users/$USER/AppData/Roaming/Autodesk/Neutron Platform/Options" - cd "$SELECTED_DIRECTORY/wineprefixes/default/drive_c/users/$USER/AppData/Roaming/Autodesk/Neutron Platform/Options" || return - dxvk_opengl_2 - mkdir -p "$SELECTED_DIRECTORY/wineprefixes/default/drive_c/users/$USER/AppData/Local/Autodesk/Neutron Platform/Options" - cd "$SELECTED_DIRECTORY/wineprefixes/default/drive_c/users/$USER/AppData/Local/Autodesk/Neutron Platform/Options" || return - dxvk_opengl_2 - mkdir -p "$SELECTED_DIRECTORY/wineprefixes/default/drive_c/users/$USER/Application Data/Autodesk/Neutron Platform/Options" - cd "$SELECTED_DIRECTORY/wineprefixes/default/drive_c/users/$USER/Application Data/Autodesk/Neutron Platform/Options" || return - dxvk_opengl_2 - cd "$SELECTED_DIRECTORY/bin" || return + mkdir -p "$APPDATA_DIRECTORY/Roaming/Autodesk/Neutron Platform/Options" + mkdir -p "$APPDATA_DIRECTORY/Local/Autodesk/Neutron Platform/Options" + mkdir -p "$APPLICATION_DATA_DIRECTORY/Autodesk/Neutron Platform/Options" + cp "$SELECTED_DIRECTORY/downloads/$GPU_DRIVER/NMachineSpecificOptions.xml" "$APPDATA_DIRECTORY/Roaming/Autodesk/Neutron Platform/Options/NMachineSpecificOptions.xml" || return + cp "$SELECTED_DIRECTORY/downloads/$GPU_DRIVER/NMachineSpecificOptions.xml" "$APPDATA_DIRECTORY/Local/Autodesk/Neutron Platform/Options/NMachineSpecificOptions.xml" || return + cp "$SELECTED_DIRECTORY/downloads/$GPU_DRIVER/NMachineSpecificOptions.xml" "$APPLICATION_DATA_DIRECTORY/Autodesk/Neutron Platform/Options/NMachineSpecificOptions.xml" || return } ############################################################################################################################################################### # Check and install the selected extensions -function wine_autodesk_fusion_install_extensions() { +wine_autodesk_fusion_install_extensions() { if [[ "$SELECTED_EXTENSIONS" == *"CzechlocalizationforF360"* ]]; then - autodesk_fusion_extension_czech_locale + run_install_extension_client "Ceska_lokalizace_pro_Autodesk_Fusion.exe" fi if [[ "$SELECTED_EXTENSIONS" == *"HP3DPrintersforAutodesk®Fusion®"* ]]; then - autodesk_fusion_extension_hp_3dprinter_connector + run_install_extension_client "HP_3DPrinters_for_Fusion360-win64.msi" fi if [[ "$SELECTED_EXTENSIONS" == *"MarkforgedforAutodesk®Fusion®"* ]]; then - autodesk_fusion_extension_markforged + run_install_extension_client "Markforged_for_Fusion360-win64.msi" fi if [[ "$SELECTED_EXTENSIONS" == *"OctoPrintforAutodesk®Fusion360™"* ]]; then - autodesk_fusion_extension_octoprint + run_install_extension_client "OctoPrint_for_Fusion360-win64.msi" fi if [[ "$SELECTED_EXTENSIONS" == *"UltimakerDigitalFactoryforAutodeskFusion360™"* ]]; then - autodesk_fusion_extension_ultimaker_digital_factory + run_install_extension_client "Ultimaker_Digital_Factory-win64.msi" fi } -function autodesk_fusion_extension_czech_locale { - run_install_extension_client "Ceska_lokalizace_pro_Autodesk_Fusion.exe" -} - -function autodesk_fusion_extension_hp_3dprinter_connector { - run_install_extension_client "HP_3DPrinters_for_Fusion360-win64.msi" -} - -function autodesk_fusion_extension_markforged { - run_install_extension_client "Markforged_for_Fusion360-win64.msi" -} - -function autodesk_fusion_extension_octoprint { - run_install_extension_client "OctoPrint_for_Fusion360-win64.msi" -} - -function autodesk_fusion_extension_ultimaker_digital_factory { - run_install_extension_client "Ultimaker_Digital_Factory-win64.msi" -} - -function run_install_extension_client { +run_install_extension_client() { local EXTENSION_FILE="$1" - cp "$SELECTED_DIRECTORY/extensions/$EXTENSION_FILE" "$SELECTED_DIRECTORY/wineprefixes/default/drive_c/users/$USER/Downloads" + local WIN_EXTENSION_DIRECTORY="C:\\users\\$USER\\Downloads\\extensions" if [[ "$EXTENSION_FILE" == *.msi ]]; then - cd "$SELECTED_DIRECTORY/wineprefixes/default/drive_c/users/$USER/Downloads" || return - WINEPREFIX="$SELECTED_DIRECTORY/wineprefixes/default" wine msiexec /i "$EXTENSION_FILE" + WINEPREFIX="$WINE_PFX" wine msiexec /i "$WIN_EXTENSION_DIRECTORY\\$EXTENSION_FILE" /quiet else - cd "$SELECTED_DIRECTORY/wineprefixes/default/drive_c/users/$USER/Downloads" || return - WINEPREFIX="$SELECTED_DIRECTORY/wineprefixes/default" wine "$EXTENSION_FILE" + WINEPREFIX="$WINE_PFX" wine "$SELECTED_DIRECTORY/downloads/$EXTENSION_FILE" fi } ############################################################################################################################################################### -function autodesk_fusion_safe_logfile() { +autodesk_fusion_safe_logfile() { # Log the Wineprefixes echo "$GPU_DRIVER" >> "$SELECTED_DIRECTORY/logs/wineprefixes.log" echo "$SELECTED_DIRECTORY" >> "$SELECTED_DIRECTORY/logs/wineprefixes.log" - echo "$SELECTED_DIRECTORY/wineprefixes/default" >> "$SELECTED_DIRECTORY/logs/wineprefixes.log" + echo "$WINE_PFX" >> "$SELECTED_DIRECTORY/logs/wineprefixes.log" } ############################################################################################################################################################################## # ACTIVATE THE WINDOW NOT RESPONDING DIALOG: # ############################################################################################################################################################################## -function reset_window_not_responding_dialog() { +reset_window_not_responding_dialog() { # Check if desktop environment is GNOME if [ "$XDG_CURRENT_DESKTOP" = "GNOME" ]; then # Reset the "Window not responding" Dialog in GNOME @@ -1341,7 +1294,7 @@ function reset_window_not_responding_dialog() { # RUN AUTODESK FUSION: # ############################################################################################################################################################################## -function run_wine_autodesk_fusion() { +run_wine_autodesk_fusion() { # Execute the Autodesk Fusion 360 echo -e "$(gettext "${GREEN}Starting Autodesk Fusion 360 ...${NOCOLOR}")" sleep 2 diff --git a/files/setup/resource/.desktop/Autodesk Fusion.desktop b/files/setup/resource/.desktop/Autodesk Fusion.desktop new file mode 100644 index 0000000..87a95b9 --- /dev/null +++ b/files/setup/resource/.desktop/Autodesk Fusion.desktop @@ -0,0 +1,24 @@ +[Desktop Entry] +Name=Autodesk Fusion +GenericName=CAD Application +GenericName[cs]=Aplikace CAD +GenericName[de]=CAD-Anwendung +GenericName[es]=Aplicación CAD +GenericName[fr]=Application CAO +GenericName[it]=Applicazione CAD +GenericName[ja]=CADアプリケーション +GenericName[ko]=CAD 응용 +GenericName[zh_CN]=计算机辅助设计应用 +Comment=Autodesk Fusion is a cloud-based 3D modeling, CAD, CAM, and PCB software platform for product design and manufacturing. +Comment[cs]=Autodesk Fusion je cloudová platforma pro 3D modelování, CAD, CAM a PCB určená k navrhování a výrobě produktů. +Comment[de]=Autodesk Fusion ist eine cloudbasierte Softwareplattform für Modellierung, CAD, CAM, CAE und Leiterplatten in 3D für Produktdesign und Fertigung. +Comment[es]=Autodesk Fusion es una plataforma de software de modelado 3D, CAD, CAM y PCB basada en la nube destinada al diseño y la fabricación de productos. +Comment[fr]=Autodesk Fusion est une plate-forme logicielle 3D cloud de modélisation, de CAO, de FAO, d’IAO et de conception de circuits imprimés destinée à la conception et à la fabrication de produits. +Comment[it]=Autodesk Fusion è una piattaforma software di modellazione 3D, CAD, CAM, CAE e PCB basata sul cloud per la progettazione e la realizzazione di prodotti. +Comment[ja]=Autodesk Fusion、製品の設計と製造のためのクラウドベースの3Dモデリング、CAD、CAM、およびPCBソフトウェアプラットフォームです。 +Comment[ko]=Autodesk Fusion 제품 설계 및 제조를 위한 클라우드 기반 3D 모델링, CAD, CAM 및 PCB 소프트웨어 플랫폼입니다. +Comment[zh_CN]=Autodesk Fusion 是一个基于云的 3D 建模、CAD、CAM 和 PCB 软件平台,用于产品设计和制造。 +Type=Application +Categories=Education;Engineering;Graphics;Science +StartupNotify=true +Terminal=false diff --git a/files/setup/resource/.desktop/adskidmgr-opener.desktop b/files/setup/resource/.desktop/adskidmgr-opener.desktop new file mode 100644 index 0000000..9b6e58c --- /dev/null +++ b/files/setup/resource/.desktop/adskidmgr-opener.desktop @@ -0,0 +1,5 @@ +[Desktop Entry] +Type=Application +Name=adskidmgr Scheme Handler +StartupNotify=false +MimeType=x-scheme-handler/adskidmgr; diff --git a/files/setup/resource/video_driver/dxvk/DXVK.reg b/files/setup/resource/video_driver/DXVK/DXVK.reg similarity index 100% rename from files/setup/resource/video_driver/dxvk/DXVK.reg rename to files/setup/resource/video_driver/DXVK/DXVK.reg diff --git a/files/setup/resource/video_driver/dxvk/NMachineSpecificOptions.xml b/files/setup/resource/video_driver/DXVK/NMachineSpecificOptions.xml similarity index 100% rename from files/setup/resource/video_driver/dxvk/NMachineSpecificOptions.xml rename to files/setup/resource/video_driver/DXVK/NMachineSpecificOptions.xml diff --git a/files/setup/resource/video_driver/opengl/NMachineSpecificOptions.xml b/files/setup/resource/video_driver/OpenGL/NMachineSpecificOptions.xml similarity index 100% rename from files/setup/resource/video_driver/opengl/NMachineSpecificOptions.xml rename to files/setup/resource/video_driver/OpenGL/NMachineSpecificOptions.xml