I am struggling to get pyRevit installed for a team environment via SCCM on Windows 11 Enterprise for Revit 2023-2025. Everyone runs with non-admin permissions.
I have read through all the documentation here: https://pyrevitlabs.notion.site/pyRevit-For-Teams-ddc6c312d6f6488691eed2ec7704fd97, but have found that the instructions appear to be outdated.
Here is my modified PowerShell script, figured out through trial and error:
### .NET 4.8 is already installed, so this step was omitted
# install pyRevit CLI
### silent switches have changed from the original script
Write-Output "Installing pyRevit..."
Start-Process -FilePath ".\pyRevit_CLI_4.8.16.24121_admin_signed.exe" -Wait -ArgumentList "/VERYSILENT /NORESTART"
# set the environment path
### original script does not include the bin subfolder, which causes the pyRevit command to not be found
$env:Path = "C:\Program Files\pyRevit CLI\bin"
# pyRevit deploy root path
### Setting this to "C:\Program Files\pyRevit" throws a permissions error
$pyrevitroot = "C:\pyRevit"
# pyRevit clone path
### new variable declared for later use
$pyrevitcloneroot = "C:\ProgramData\pyRevit"
# the name of the clone we are going to create
### original script uses "ourmain", but if you don't use "master", it does not create the master clone
$cloneMaster = "master"
# pyrevit clone install path
$pyrevitcoredest = $(Join-Path $pyrevitroot $cloneMaster)
# pyRevit extension install path
$pyrevitexts = $(Join-Path $pyrevitroot "Extensions")
# confirms target path exists and is empty. removes existing if found
function Confirm-Path ([string] $targetpath) {
Write-Output "Confirming $($targetpath)"
If (Test-Path $targetpath) {
Remove-Item -Path $targetpath -Recurse -Force
}
New-Item -ItemType Directory -Force -Path $targetpath > $null
}
# test whether a command exists in the environment
# Example: Test-CommandExists "pyrevit"
function Test-CommandExists {
param ($command)
$oldPreference = $ErrorActionPreference
$ErrorActionPreference = 'stop'
try {
if(Get-Command $command){
return $true
}
}
catch {
return $false
}
finally {
$ErrorActionPreference=$oldPreference
}
}
# clone pyRevit
function Clone-PyRevit() {
# make sure paths exits and are clean
Confirm-Path $pyrevitroot
Confirm-Path $pyrevitexts
# close all open Revits first
Write-Output "Closing All Revits..."
pyrevit revits killall
# forget all previous pyRevit clones if any
pyrevit clones forget $pyrevitclonename > $null
# clone pyRevit now
Write-Output "Cloning Core..."
pyrevit clone $cloneMaster --dest=$pyrevitroot
### no extensions are needed in our environment, so the Cloning Extensions script is omitted
# register the clone
pyrevit clones add $cloneMaster $pyrevitcoredest
}
function Configure-PyRevit() {
# make necessary config changes
Write-Output "Configuring pyRevit..."
pyrevit configs logs none
pyrevit configs checkupdates disable
pyrevit configs autoupdate disable
pyrevit configs rocketmode enable
pyrevit configs filelogging disable
pyrevit configs loadbeta disable
### this line throws an error: pyrevit configs usagelogging disable
### original script is missing this line, which causes it to throw an error because the path is missing when seeding the config file
Confirm-Path $pyrevitcloneroot
# this final step is critical
# this seeds the config file for all the future users
pyrevit configs seed
}
function Attach-PyRevit() {
Write-Output "Attaching pyRevit to Installed Revits..."
pyrevit attach $cloneMaster default --installed --allusers
}
# orchestrate the installation
if (Test-CommandExists "pyrevit") {
Clone-PyRevit
Configure-PyRevit
Attach-PyRevit
}
I have also tried running the PowerShell script manually on a fresh computer build using an admin account, with the same results.
Running this script causes it to:
- Silently install pyRevit CLI in
C:\Program Files\pyRevit CLI
- Add
C:\Program Files\pyRevit CLI\bin
to the PATH environment variable - Clone-PyRevit creates
C:\pyRevit
, then takes 5-10 minutes to populateC:\pyRevit\master
, I assume because it is downloading from the GitHub repository - Configure-PyRevit creates the
pyRevit_config.ini
file inC:\ProgramData\pyRevit
with these values:
[environment]
clones = {"master":"C:\\pyRevit\\master"}
[core]
verbose = false
debug = false
checkupdates = false
autoupdate = false
rocketmode = true
filelogging = false
loadbeta = false
- Attach-PyRevit creates the
pyRevit.addin
file inC:\ProgramData\Autodesk\Revit\Addins\2023
C:\ProgramData\Autodesk\Revit\Addins\2024
, andC:\ProgramData\Autodesk\Revit\Addins\2025
with the following content:
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<RevitAddIns>
<AddIn Type = "Application">
<Name>PyRevitLoader</Name>
<Assembly>C:\pyRevit\master\bin\engines\IPY2711PR\pyRevitLoader.dll</Assembly>
<AddInId>B39107C3-A1D7-47F4-A5A1-532DDF6EDB5D</AddInId>
<FullClassName>PyRevitLoader.PyRevitLoaderApplication</FullClassName>
<VendorId>eirannejad</VendorId>
</AddIn>
</RevitAddIns>
However, running any of those versions of Revit as the same signed in admin account does not display the pyRevit add-in on the Add-Ins tab.
Taking a look at this document: https://pyrevitlabs.notion.site/Installation-issues-f6495adb56254e9e8021f8a68e3b2ab7:
pyrevit attached returns:
==> Attachments
master | Product: "Autodesk Revit 2025" | Engine: DEFAULT (2711) | Path: "C:\pyRevit\master" | AllUsers
master | Product: "Autodesk Revit 2024" | Engine: DEFAULT (2711) | Path: "C:\pyRevit\master" | AllUsers
master | Product: "Autodesk Revit 2023" | Engine: DEFAULT (2711) | Path: "C:\pyRevit\master" | AllUsers
pyrevit clones returns:
==> Registered Clones (full git repos)
master | Branch: "master" | Version: "4.8.16:f9fa0d2" | Path: "C:\pyRevit\master"
==> Registered Clones (deployed from archive/image)
Checking to see if it is just the admin account, I signed out then back in again as a non-admin account. Opening any of those versions of Revit also does not display the pyRevit add-in on the Add-Ins tab.
Running the same commands signed in with a non-admin account on the same computer:
pyrevit attached returns:
==> Attachments
Unknown | Product: "Autodesk Revit 2025" | Manifest: "C:\ProgramData\Autodesk\Revit\Addins\2025\pyRevit.addin"
Unknown | Product: "Autodesk Revit 2024" | Manifest: "C:\ProgramData\Autodesk\Revit\Addins\2024\pyRevit.addin"
Unknown | Product: "Autodesk Revit 2023" | Manifest: "C:\ProgramData\Autodesk\Revit\Addins\2023\pyRevit.addin"
pyrevit clones returns:
==> Registered Clones (full git repos)
==> Registered Clones (deployed from archive/image)
Trying to manually fix the problem:
pyrevit clones add master “C:\pyRevit\master” returns:
Error: Path does not point to a valid clone "C:\pyRevit\master"
Run with "--debug" option to see debug messages
Can anyone point me in the right direction?