graph TD
A[📥 Create Autodesk Deployment] --> B[📁 Add Optional Folders]
B --> C[📦 Create WIM File]
C --> D[⚙️ Configure Install-ADSK.ps1]
D --> E[▶️ Execute Installation]
A1[Download deployment locally<br/>Modify Collection.xml if needed] --> A
B1[Updates/ - Additional updates<br/>Cideon/ - Cideon tools<br/>Local/ - Configuration files] --> B
C1[Use 7-Zip to compress folder] --> C
D1[Customize functions & code sections] --> D
E1[Run via batch file or PowerShell] --> E
- 📥 Download your Autodesk deployment locally
- 📝 Copy the
Collection.xmland modify it for your needs- Example: Remove AutoCAD to create an Inventor-only deployment
- 💾 Save as custom XML file (e.g.,
Inventor_only.xml)
Create these hardcoded folder names for additional content:
| Folder | Purpose | Content Example |
|---|---|---|
| 📁 Updates/ | Product updates | Update_Inventor_20XX.X.exe |
| 📁 Cideon/ | Cideon tools | CIDEON.Inventor.Toolbox_x64.msi |
| 📁 Local/ | Config files | ProgramData/, Users/ folders |
- 🗜️ Use 7-Zip to create a WIM file from your deployment folder
- 📁 Include all subfolders (
image/,Updates/,Cideon/,Local/) - 💾 Name the WIM file descriptively (e.g.,
PDC_2026.wim)
The solution now consists of installer + module:
# Install-ADSK.ps1
# - Parameters
# - Module loader (GitHub + signature validation)
# - Invoke-DeploymentWorkflow with your mode-specific logic
# CIDEON.AutodeskDeployment.psm1
# - All helper, deployment and orchestration functions
# - Signed and loaded by installer
#region Code
Invoke-DeploymentWorkflow -ModeHandler {
switch ($Mode) {
'Install' { <# 🎯 Your install steps #> }
'Update' { <# 🎯 Your update steps #> }
'Uninstall' { <# 🎯 Your uninstall steps #> }
}
}
#endregion💡 Tip: Function implementations are now located in
CIDEON.AutodeskDeployment.psm1.
Choose your preferred method:
# 🎯 Direct PowerShell execution
.\Install-ADSK.ps1 -WIM "PDC_2026" -Mode "Install" -Logging
# 📦 Via batch file (see samples/ folder)
Install-Example.bat# 📍 Navigate to script location
cd \\SERVER\SHARE\ScriptLocation
# 🚀 Run installation with logging and cleanup
.\Install-ADSK.ps1 -WIM "PDC_2026" -Mode "Install" -Path "\\SERVER\SHARE\DEPLOYMENT" -Logging -Purge- 🔄 Version Updates: Just create a new WIM file for deployment changes
- 📁 Batch Files: Check the
samples/folder for common scenarios - 🛠️ Local Copies: Use
Copy-Local.ps1as a thin module-backed wrapper for post-installation file copying - 📝 Logging: Always use
-Loggingfor troubleshooting
The folder structure is based on the default Autodesk deployments. This could look like this:
📁 PDC_20XX # Autodesk deployment name
├── 📁 image/ # Default Autodesk deployment
│ ├── 📁 AMECH_PP_20XX_de-DE/
│ │ ├── 📄 setup.xml # Products to install
│ │ ├── 📄 setup_ext.xml # Updates and language packs
│ │ └── 📄 ...
│ ├── 📁 INVPROSA_20XX_de-DE/
│ ├── 📄 Collection.xml # Main deployment config
│ ├── 📄 Inventor_only.xml # Modified deployment config
│ └── 📄 ...
│
├── 📁 Updates/ # Additional updates
│ ├── 🔧 Update_Inventor_20XX.X.exe
│ ├── 🔧 Update_AutoCAD_20XX.X.exe
│ └── 🔧 cer.msi
│
├── 📁 Cideon/ # Cideon Tools
│ ├── 📦 CIDEON.VAULT.TOOLBOX.SETUP_XXXX.X.X.XXXXX.msi
│ ├── 📦 CIDEON.VAULT.TOOLBOX.SETUP.SERVICEPACK_XXXX.X.X.XXXXX.msi
│ ├── 📦 CIDEON.Inventor.Toolbox_x64_XXXX.X.X.XXXXX.msi
│ └── 📦 CDN_DataStandards_Setup_XXXX.X.X.XXXXX.msi
│
├── 📁 Local/ # Local configuration files
│ ├── 📁 ProgramData/
│ └── 📁 Users/
│ ├── 📁 Public/ # Public user folder
│ │ └── 📁 Documents/
│ │ └── 📁 CIDEON/
│ │ └── 📁 LicenseFiles/
│ │ └── 📁 20XX/
│ └── 📁 USERNAME/ # Local user folder (renamed to actual username)
│ └── 📁 AppData/
│ └── 📁 Roaming/
│ └── 📁 Autodesk/
│
└── ⚡ Install-ADSK.ps1 # Main installation script
| Folder | Purpose | Required |
|---|---|---|
| 📁 image/ | Contains the default Autodesk deployment files | ✅ |
| 📁 Updates/ | Additional product updates to install | ❌ |
| 📁 Cideon/ | Cideon-specific tools and extensions | ❌ |
| 📁 Local/ | Local configuration files and user settings | ❌ |
Use 7-zip to create a wim File from the deployment folder.
The script has two sections:
- Module Loader — Loads
CIDEON.AutodeskDeployment.psm1from GitHub and validates the Authenticode signature. - Code — Calls
Invoke-DeploymentWorkflow -ModeHandler { … }. The module handles version validation, logging, WIM discovery, mount paths, error handling and WIM dismount. You only supply the mode-specific logic (Install/Update/Uninstall) inside theswitch ($Mode)block.
All helper functions are documented in CIDEON.AutodeskDeployment.psm1.
- Installer:
Install-ADSK.ps1 - Module:
CIDEON.AutodeskDeployment.psm1 - Public certificate:
CIDEON-CodeSigning.cer - Certificate guide:
Certificate.md
The installer loads the module from GitHub Release assets, validates the downloaded certificate against a pinned thumbprint allowlist, validates the module signature against that same signer allowlist, and falls back to the local module in the script directory if remote loading fails.
Current pinned code-signing thumbprint:
53D03841EC43C1C545F56919F9A6AEF0C7D2E783
If the code-signing certificate is rotated, update the pinned thumbprint allowlist in Install-ADSK.ps1 before trusting the new release certificate.
The installer resolves the module and certificate from GitHub Release assets:
- default: latest release
- optional: pinned release version via
-ModuleVersionPin
The fastest way is just to create a new WIM file from the deployment folder
You can find batch files in the subfolder "samples" for all the basic scenarios.
Ha, I got you! For this you can find the Copy-Local.ps1. It now uses the same signed module loader as Install-ADSK.ps1, including the optional pinned release version.
This allows you to copy (by default the ProgramData and Users Folder) from the central stored deployment folders.
Optional module pin example:
.\Copy-Local.ps1 -Path "\\vaultsrv\CIDEON\_DPL" -Folder "Users" -ModuleVersionPin "1.2.0"@ECHO OFF
skript="\\vaultsrv\CIDEON\_DPL\Copy-Local.ps1"
powershell.exe -ExecutionPolicy Bypass %skript% -Path "\\vaultsrv\CIDEON\_DPL" -Folder "Users"
REM Default folders are "Users" and "ProgramData"
REM powershell.exe -ExecutionPolicy Bypass %skript% -Path "\\vaultsrv\CIDEON\_DPL"You can find this in the file itself, but here is an overview.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| WIM | String | ✅ | - | Name of the WIM file you want to use |
| Mode | String | ✅ | - | Mode to execute: Install, Uninstall, Update |
| Path | String | ❌ | Script location | Path to the WIM file. Not needed if WIM is in same folder as script |
| LocalFolder | String | ❌ | C:\Temp |
Local folder where WIM file should be downloaded and mapped |
| Files | String Array | ❌ | @("Collection") |
XML filenames WITHOUT extension for installation. Before each install, LoggingSettings in the selected XML is enforced to Logging=true and Path=<LocalFolder>\\Install-ADSK-Deployment-<WIM>.log |
| Version | String | ❌ | Auto-extracted | Software version for Cideon tools and logging |
| ModuleVersionPin | String | ❌ | Latest Release | Pins online module/certificate download to a specific release version (e.g. 1.2.0) |
| Logging | Switch | ❌ | $false |
Enable log file creation in local folder |
| NoDownload | Switch | ❌ | $false |
Mount WIM from server instead of copying locally |
| Purge | Switch | ❌ | $false |
Delete WIM file after completion (cannot be combined with -NoDownload) |
| WhatIf | Switch | ❌ | $false |
Dry run mode: shows what would happen without making changes |
| Confirm | Switch | ❌ | $false |
Prompts for confirmation before executing actions |
| ForceQuit | Switch | ❌ | $false |
Quits running Autodesk Applications (Inventor, AutoCAD, Vault) |
# Go to the script location
cd \\SERVER\SHARE\ScriptLocation
# Call Installation
## Path is needed because the deployment is stored on another location
## Logging enabled
## Purge enabled (deletes WIM locally)
.\Install-ADSK.ps1 -WIM "PDC_20XX" -Mode "Install" -Path "\\SERVER\SHARE\DEPLOYMENT" -Logging -Purge# Call Installation
## Path is not needed, because Install-ADSK.ps1 is parallel to the deployment folder
## Logging enabled
## The WIM will not be downloaded, it will be mounted from the server directly (slower installation)
### Instead of default Collection.xml, the Inventor_only.xml is used
.\Install-ADSK.ps1 -WIM "PDC_20XX" -Mode "Install" -Logging -NoDownload -Files "Inventor_only"# Dry run (preview all actions)
.\Install-ADSK.ps1 -WIM "PDC_20XX" -Mode "Install" -Path "\\SERVER\SHARE\DEPLOYMENT" -WhatIf# Pin online module download to release 1.2.0 (default is latest release)
.\Install-ADSK.ps1 -WIM "PDC_20XX" -Mode "Install" -ModuleVersionPin "1.2.0"# Uninstall mode
.\Install-ADSK.ps1 -WIM "PDC_20XX" -Mode "Uninstall" -Path "\\SERVER\SHARE\DEPLOYMENT" -Logging# Update mode
.\Install-ADSK.ps1 -WIM "PDC_20XX" -Mode "Update" -Path "\\SERVER\SHARE\DEPLOYMENT" -Logging| Function | Description | Required Parameters | Optional Parameters |
|---|---|---|---|
| Set-InstallContext | Stores deployment context values (Version, LogFile, wimFile, mountPath, etc.) as global variables so all module functions share state | Context |
- |
| Invoke-DeploymentWorkflow | Orchestrates the full WIM deployment lifecycle (version validation, logging, WIM discovery, mount/dismount, error handling) and invokes a caller-supplied ScriptBlock for mode-specific logic | ModeHandler |
- |
| Write-InstallLog | Writes log entries to file (if logging enabled) | text |
Info, Fail |
| Write-InstallProgress | Writes compact progress status to the host; suppressed when -Quiet is active |
Text |
Fail |
| Update-WIMInspectionCache | Inspects and caches WIM folder/file metadata for later use | MountedPath |
- |
| Get-CachedFiles | Returns cached file-like entries for WhatIf scenarios | Path, OperationText |
CachedFiles |
| Install-Update | Installs updates from Updates subfolder | - | Path |
| Install-AutodeskDeployment | Installs Autodesk deployment from Image subfolder | - | Path |
| Uninstall-AutodeskDeployment | Uninstalls Autodesk deployment | - | Path, Product |
| Set-AutodeskDeployment | Configures Autodesk deployment settings | - | - |
| Install-CideonTool | Installs Cideon tools from Cideon subfolder | - | Various Cideon switches |
| Disable-VaultExtension | Moves Vault extensions to disable them | - | Filter, Version, Keep |
| Get-RealUserName | Gets actual username when running as admin | - | - |
| Get-UserSID | Gets user Security Identifier (SID) | - | UserName, DomainUser, LocalUser |
| Set-InventorProjectFile | Sets Inventor project file path in registry | - | Version, File |
| Remove-UserSystemVariable | Removes user system environment variables | - | - |
| Copy-Local | Copies local configuration files | - | Path, SourceFolder, TargetFolder |
| Uninstall-Program | Uninstalls programs by display name/publisher | DisplayName OR Publisher |
FilterOperator |
| Get-InstalledProgram | Gets list of installed programs | - | DisplayName, Publisher, FilterOperator |
| Set-CIDEONLanguageVariable | Sets Cideon language environment variables | - | - |
| Set-CIDEONVariable | Sets Cideon environment variables | - | Version |
| Rename-RegistryInstallationPath | Renames registry installation paths | - | - |
| Copy-WIM | Copies WIM file from network share to local machine | File |
Folder |
| Mount-WIM | Mounts WIM file to specified path; in WhatIf mode performs read-only inspection mount | File |
Path |
| Dismount-WIM | Dismounts WIM file | Name |
purge, all |
| Register-WIMDismountTask | Registers scheduled task for WIM dismount | - | - |
| Set-AutodeskUpdate | Configures Autodesk update settings | One of: Enable, ShowOnly, Disable |
- |
| Get-AppLogError | Retrieves application log errors | - | - |
| Get-AutodeskProcesses | Returns all running Autodesk processes (Inventor, AutoCAD, Vault, JobProcessor) | - | - |
| Test-AutodeskProcessesRunning | Checks whether any Autodesk processes are currently running; returns $true if at least one is found |
- | - |
| Stop-AutodeskProcess | Stops all running Autodesk processes; used by -ForceQuit in Install-ADSK.ps1 |
- | Force |
Set-InstallContext,Invoke-DeploymentWorkflow
Install-AutodeskDeployment,Uninstall-AutodeskDeployment,Set-AutodeskDeploymentInstall-Update,Install-CideonTool
Copy-WIM,Mount-WIM,Dismount-WIM,Register-WIMDismountTask
Update-WIMInspectionCache,Get-CachedFiles
Set-InventorProjectFile,Set-AutodeskUpdate,Disable-VaultExtensionSet-CIDEONVariable,Set-CIDEONLanguageVariable
Get-RealUserName,Get-UserSID,Get-InstalledProgram,Get-AppLogError
Copy-Local,Remove-UserSystemVariable,Rename-RegistryInstallationPath
Get-AutodeskProcesses,Test-AutodeskProcessesRunning,Stop-AutodeskProcess
Write-InstallLog,Write-InstallProgress,Uninstall-Program