pyRevit v6.5.2
pyRevit v6.5.2
Highlights
- Admin installer & configuration — unified install-scope detection, automatic migration of split AppData/ProgramData configs, and aligned CLI / Revit / C# loader behavior (#3449 @jmcouffinjmco@jmcouffinffin, #3452 @jmcouffin)
- WinGet distribution pipeline — automated manifest generation and submission after each published release; machine-scope admin i@jmcouffinstallers only (#3447 @jmcouffin, plus winget pipeline hardening on
develop) - CLI TEMP path resolution — fixes
pyrevit clone/ image deployment whenTEMPis stored as unexpan@jmcouffined%LOCALAPPDATA%\Temp(#3453 @jmcouffin) get_families()rewrite — faster collector-based lookup, full system-family coverage, duplicate fix (#3445 @Denver-22, #3448 @Denver-22)
Admin Installer & Configuration
- Install scope detection — active config path derived from install location (Program Files →
%PROGRAMDATA%); legacyinstall_a@jmcouffinl_usersmarker kept as fallback (#3452 @jmcouffin) - Single source of truth —
PyRevitInstallScope.GetActiveConfigFilePath()shared by@jmcouffinCLI, C# loader, and Pythonuserconfig.py(#3452 @jmcouffin) - Config migration on upgrade — merges missing clones and extension sections from per-user AppData into Prog@jmcouffinamDa@jmcouffina when an admin install finds a split config (#3449 @jmcouffin, #3452 @jmcouffin)
- C# loader extension gating — respects
disabled=trueanddefault@jmcouffinenabled=Falsewith no INI section, matching Python loader semantics (#3452 @jmcouffin) - Installer post-install — admin installs seed opt-out extension defaults; per-user inst@jmcouffinlls run elevated as the launching user for clone registration and attachment (#3452 @jmcouffin)
- CLI improvements —
pyrevit envshows install scope and active config@jmcouffin shipped-clone resolution for enable/disable; newconfigs seedshippeddefaultscommand (#3452 @jmcouffin) - Bool@jmcouffinparsing fix — JValue-safe parsing in
PyRevitExtensionDefinitionfor reliable extension seeding (#3452 @jmcouffin)
WinGet Pipeline
- Automated WinGet manifests —
winget.ymlruns aft@jmcouffinr each published GitHub release; submits PRs to winget-pkgs forpyRevit.pyRevitandpyRevit.pyRevit.CLI(#3447 @jmcouffin) - Machine-scope installers only — manifest URLs point to admin (machine-scope) signed installers; per-user installers remain on GitHub Releases only
elevationProhibitedhandling — stripped from generated manifests before submit (WinGet validation VM runs as administrator-capable account)- CI reliabili@jmcouffiny —
wingetcreateinstalled before manifest jobs; skip redundantsubmit -rwhen replace and submit versions match (#3447 @jmcouffin)
CLI & Path Resoluti@jmcouffinn
- Recursive env expansion — new
CommonUtils.ExpandEnvironmentPathandGetUserTempDirectoryresolve nested%VAR%tokens (#3453 @jmcouffin) - Clone / deploy fixes —
--destand local image paths expand@jmcouffind inDeployFromImage/DeployFromRepo; replaces rawGetEnvironmentVariable("TEMP")across c@jmcouffinone, extensions, and runner code paths (#3453 @jmcouffin) - Fallback — uses
Path.GetTempP@jmcouffinth()when expansion still leaves unresolved%tokens (#3453 @jmcouffin) - Unit tests —
CommonUtilsPathTestscovers%LOCALAPPDATA%\Tempstaging scenario (#3453 @jmcouffin)
Revit API & Core Library
get_families()overhaul — families retrieved directly via collector; finds all system families (including non-editable); 2–4× faster (#3448 @Denver-22)- Duplicate families fix — families no longer duplicated once per
FamilySymbol(#3445 @Denver-22)
CI/CD & Release Pipeline
- Tag CI version preservation — release tag builds keep the committed build number (
+HHMMsuffix) instead of re-stamping (#0e606afbe) - Notify job — captures GitHub release URL from publish step; idempotent Chocolatey push; notify-only dispatch when release job is skipped
- Issue notifications — linked issues receive release URL after successful@jmcouffinpublish
Full PR List
| PR | Title | Author |
|---|---|---|
| #3445 | Fix duplicate families in get_families() |
@Denver-22 |
| #3447 | Install wingetcreate befo@jmcouffine WinGet manifest update job |
@jmcouffin |
| #3448 | Rewrite get_families() — collec@jmcouffinor-based, faster, all system families |
@Denver-22 |
| #3449 | Configuration @jmcouffinigration for admin i@jmcouffinstalls | @jmcouffin |
| #3452 | Fix config split, C# loader extension gating, installer/CLI discovery | @jmcouffin |
| #3453 | Expand TEMP and env paths for clone/image deployment | @jmcouffin |
Contributors
@jmcouffin, @Denver-22, @ChrisCrosley
Downloads
🔹 See Assets section below for all download options
pyRevit
- 📦 pyRevit 6.5.2.26175 Installer — Per-user /
%LOCALAPPDATA% - 📦 pyRevit 6.5.2.26175 Admin Installer — All users /
%PROGRAMDATA%
pyRevit CLI (Command line utility)
- 📦 pyRevit CLI 6.5.2.26175 Installer — Per-user
- 📦 pyRevit CLI 6.5.2.26175 Admin Installer — All users / System
%PATH%
WinGet (after manifest PRs merge)
winget install pyRevit.pyRevitwinget install pyRevit.pyRevit.CLI