Resources

Autodesk Auto-Deploy

How to silently deploy Autodesk without using SCCM

Last updated on February 7, 2024

Overview

Autodesk Revit is used for architectural design, and is the piece of software for the industry. Frustratingly, it’s also a complete misery to install remotely and/or silently. The only approved method is to use Windows SCCM, which is not an option for some. I have identified a workaround, and I wanted to share it here.

TL;DR (My final script)

### Set parameters $folderPath = "C:\coop\autodesk_deploy\R24" $folderPath2 = "C:\coop\autodesk_deploy\RevitInstallerFiles" $output = "C:\coop\autodesk_deploy\RevitInstallerFiles\R24_1_1.exe" $url = "https://samplecompany.sharepoint.com/:u:/s/casp/<lots of random characters here>?download=1" # Make sure you remove the final text in the URL after the ? and replace it with "download=1" $knownGoodHash = "<SHA256 Output of your installer>" # Sha256 hash of file, just for certainty nothing went wrong in the up- or download ### Create folders or, if already created, delete contents of folders. # $folderPath if (-not (Test-Path -Path $folderPath -PathType Container)) { New-Item -Path $folderPath -ItemType Directory Write-Host "Folder '$folderPath' created." } else { Write-Host "Folder '$folderPath' already exists." Get-ChildItem -Path $folderPath | Remove-Item -Recurse -Force Write-Host "All items inside folder '$folderPath' deleted." } # $folderPath2 if (-not (Test-Path -Path $folderPath2 -PathType Container)) { New-Item -Path $folderPath2 -ItemType Directory Write-Host "Folder '$folderPath2' created." } else { Write-Host "Folder '$folderPath2' already exists." Get-ChildItem -Path $folderPath2 | Remove-Item -Recurse -Force Write-Host "All items inside folder '$folderPath2' deleted." } ### Download the deployment $download = Start-BitsTransfer -Source $url -Destination $output -Asynchronous while ($download.JobState -ne "Transferred") { [int] $dlProgress = ($download.BytesTransferred / $download.BytesTotal) * 100; Write-Progress -Activity "Downloading File..." -Status "$dlProgress% Complete:" -PercentComplete $dlProgress; } Complete-BitsTransfer $download.JobId; ### Check if the download was successful. Extract if yes. if (Test-Path $output) { $hash = Get-FileHash -Path $output -Algorithm SHA256 | Select-Object -ExpandProperty Hash if ($hash -eq $knownGoodHash) { Write-Host "Hashes match." & "${env:ProgramFiles}\7-Zip\7z.exe" x $output "-o$($folderPath2)" -y Write-Host "Extraction complete." } else { Write-Host "Zip is corrupted." } } else { Write-Host "Download failed. Please check the URL or network connection." } ### Run deployment package to generate installer & wait & "C:\coop\autodesk_deploy\RevitInstallerFiles\AdOdisDeployTool.exe" -q Start-Sleep -Seconds 600 ### Run installer & "C:\coop\Autodesk_Deploy\R24\image\Installer.exe" -i deploy --offline_mode -q -o "C:\coop\Autodesk_Deploy\R24\image\Collection.xml" --installer_version "1.43.0.186" Start-Sleep -Seconds 1800 ### Cleanup Get-ChildItem -Path $folderPath | Remove-Item -Recurse -Force Write-Host "All items inside folder '$folderPath' deleted." Get-ChildItem -Path $folderPath2 | Remove-Item -Recurse -Force Write-Host "All items inside folder '$folderPath2' deleted." Write-Host "Cleanup complete." ### Complete Write-Host "Script complete."

Prerequisites

Access to manage.autodesk.com

You must be able to sign into manage.autodesk.com with an account that both has the applicable licenses to download the software you are trying to install and is authorized to create Custom Installs.

The ability to run a script as an administrator

Publicly accessible file storage solution

My script utilizes SharePoint, but Google Drive, Dropbox, etc. will work.

7zip

You’ll need 7zip installed on the target computer

Steps

Download deployment package

Sign into manage.autodesk.com and navigate to Custom Install.
Click Create package in the top right.
Select the product you want, confirm the version to install, and configure all settings.
  • Name your package (this will be called YourFilename elsewhere in this post).
  • Choose a deployment image path (this is what you set $folderPath be in the script).
  • Adjust any customizations desired. The only change I made here was to remove unneeded language packs.
Download the deployment package.

Get information from deployment package

Get the SHA256 hash of the downloaded file, add it to $knownGoodHash in the script.
Manually run the deployment package. It will expand files into $folderPath.
  • Navigate to $folderPath, right-click on “Install YourFilename.bat” and select Edit.
  • Copy the commented out line for a silent deployment, and paste in the script under ### Run Installer.
  • Make sure to include the “&” at the beginning on the line.

Upload deployment package to SharePoint

Upload the deployment package (not the extracted contents in $folderPath) to SharePoint.
Share the file, making sure that it is publicly available, and copy the file URL.
Remove any text after the ? and replace with “download=1”.
Copy & paste this into the script as $url.
Autodesk Custom Install
Autodesk Custom Install
notion image
 
notion image

Other parameters to configure

$folderPath2 - This is an arbitrary location for storing temporary installation files. All files inside $folderPath2 will be deleted at the end of script.
$output - This is inside $folderPath2 and named YourFilename.exe

Next steps for me

  • I added Start-Sleep under ### Run deployment … and ### Run installer because initially the script would call those executables and then immediately proceed to the next step. Files were getting deleted under ### Cleanup before the installation was complete. I am still investigating why Start-Sleep was needed in this situation, and there may be a better solution.
  • This does not solve the need for silent updates. Still working on that. I could remotely uninstall any given version, and then run the full installer for the updated version, but I want to see if there is a more time-efficient method first.