Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
213 changes: 213 additions & 0 deletions Build-2026-Deploy.ps1
Original file line number Diff line number Diff line change
@@ -0,0 +1,213 @@
#!/usr/bin/env powershell
<#
.SYNOPSIS
Builds all Revit 2026 plugins and populates the deploy/2026 folder

.DESCRIPTION
This script:
1. Compiles all 44 plugins for Revit 2026
2. Copies the compiled DLLs to deploy/2026/
3. Copies supporting files (families, templates, etc.)

.PARAMETER Configuration
Build configuration: Debug or Release (default: Release)

.EXAMPLE
.\Build-2026-Deploy.ps1 -Configuration Release
.\Build-2026-Deploy.ps1 -Configuration Debug
#>

param(
[ValidateSet("Debug", "Release")]
[string]$Configuration = "Release"
)

$ErrorActionPreference = "Stop"
$InformationPreference = "Continue"

# Get script directory
$scriptDir = Split-Path -Parent $MyInvocation.MyCommand.Path
$srcDir = Join-Path $scriptDir "src"
$deployDir = Join-Path $scriptDir "deploy\2026"

# Colors for output
function Write-Header {
param([string]$Message)
Write-Host "===================" -ForegroundColor Cyan
Write-Host $Message -ForegroundColor Cyan
Write-Host "===================" -ForegroundColor Cyan
}

function Write-Success {
param([string]$Message)
Write-Host "✓ $Message" -ForegroundColor Green
}

function Write-Error-Custom {
param([string]$Message)
Write-Host "✗ $Message" -ForegroundColor Red
}

function Write-Info {
param([string]$Message)
Write-Host "ℹ $Message" -ForegroundColor Blue
}

# Verify source directory
Write-Header "Verifying Paths"
if (-not (Test-Path $srcDir)) {
Write-Error-Custom "Source directory not found: $srcDir"
exit 1
}
Write-Success "Source directory: $srcDir"

if (-not (Test-Path $deployDir)) {
Write-Error-Custom "Deploy directory not found: $deployDir"
Write-Info "Creating deploy/2026 folder..."
New-Item -ItemType Directory -Path $deployDir -Force | Out-Null
Write-Success "Created: $deployDir"
}

# Find all plugin solutions
Write-Header "Discovering Revit 2026 Plugins"
$plugins = @()
$solutionFiles = Get-ChildItem -Path $srcDir -Filter "*.sln" -Recurse | Where-Object {
$_.DirectoryName -match "Case\.[A-Z]" -and -not $_.DirectoryName -match "_Case\."
}

Write-Info "Found $($solutionFiles.Count) plugin solutions"

foreach ($sln in $solutionFiles) {
$pluginName = $sln.BaseName
$pluginDir = $sln.DirectoryName
$has2026 = Test-Path "$pluginDir\$pluginName.2026"

if ($has2026) {
$plugins += @{
Name = $pluginName
SolutionPath = $sln.FullName
DirectoryPath = $pluginDir
ProjectPath = "$pluginDir\$pluginName.2026\$pluginName.2026.vbproj"
}
Write-Info " ✓ $pluginName"
} else {
Write-Info " ✗ $pluginName (no 2026 version)"
}
}

Write-Success "Found $($plugins.Count) plugins with 2026 versions"

# Compile each plugin
Write-Header "Compiling Revit 2026 Plugins (Configuration: $Configuration)"
$buildErrors = @()
$builtPlugins = @()

foreach ($plugin in $plugins) {
Write-Host "Building $($plugin.Name)..." -ForegroundColor White

try {
$buildOutput = & msbuild $plugin.ProjectPath `
/p:Configuration=$Configuration `
/p:Platform=AnyCPU `
/m `
/v:q 2>&1

if ($LASTEXITCODE -ne 0) {
$buildErrors += $plugin.Name
Write-Error-Custom " Failed to build $($plugin.Name)"
Write-Host ($buildOutput | Out-String) -ForegroundColor Red
} else {
Write-Success " Built $($plugin.Name)"
$builtPlugins += $plugin
}
} catch {
$buildErrors += $plugin.Name
Write-Error-Custom " Error building $($plugin.Name): $_"
}
}

if ($buildErrors.Count -gt 0) {
Write-Error-Custom "`nBuild failed for: $($buildErrors -join ', ')"
Write-Info "Continuing with successfully built plugins..."
}

# Copy DLLs
Write-Header "Copying Compiled DLLs to deploy/2026"
$copiedCount = 0

foreach ($plugin in $builtPlugins) {
$dllPath = Join-Path $plugin.DirectoryPath "$($plugin.Name).2026\bin\$Configuration\$($plugin.Name).dll"

if (Test-Path $dllPath) {
Copy-Item -Path $dllPath -Destination $deployDir -Force
Write-Success "Copied $($plugin.Name).dll"
$copiedCount++
} else {
Write-Error-Custom "DLL not found: $dllPath"
}
}

Write-Success "Copied $copiedCount DLLs to $deployDir"

# Copy supporting files from 2023 deploy (if they don't exist in 2026)
Write-Header "Copying Supporting Files"
$supportingFiles = @(
"3D_RoomTag.rfa",
"Mass.rft",
"Newtonsoft.Json.dll",
"RestSharp.dll",
"Case.Subs.Exceler8.xls",
"Case.Subs.Exceler8.xlsx",
"Case.Subs.Exceler8_Schedule.xlsx",
"Case.Subs.KeyMatcher.xlsx",
"Case.Subs.Renamer.xlsx"
)

$source2023 = Join-Path $scriptDir "deploy\2023"

if (Test-Path $source2023) {
$copiedSupporting = 0
foreach ($file in $supportingFiles) {
$sourcePath = Join-Path $source2023 $file
if (Test-Path $sourcePath) {
Copy-Item -Path $sourcePath -Destination $deployDir -Force
Write-Info " Copied $file"
$copiedSupporting++
}
}
Write-Success "Copied $copiedSupporting supporting files"
} else {
Write-Info "2023 deploy folder not found, skipping supporting files"
}

# Display summary
Write-Header "Build Summary"

Write-Host @"
Build Configuration: $Configuration
Plugins Built: $($builtPlugins.Count) / $($plugins.Count)
DLLs Copied: $copiedCount
Deploy Location: $deployDir

Contents:
"@ -ForegroundColor White

Get-ChildItem -Path $deployDir -Name | ForEach-Object {
Write-Host " ✓ $_"
}

Write-Host ""

if ($buildErrors.Count -gt 0) {
Write-Error-Custom "Build completed with errors: $($buildErrors -join ', ')"
} else {
Write-Success "Build completed successfully!"
Write-Info "`nThe deploy/2026 folder is now ready for distribution."
}

Write-Host ""
Write-Host "Next steps:" -ForegroundColor Yellow
Write-Host "1. Verify all DLLs are present in: $deployDir"
Write-Host "2. Test plugins in Revit 2026"
Write-Host "3. Update the MSI installer to include these files"
Write-Host ""
11 changes: 11 additions & 0 deletions deploy/2026/Case.Apps.addin
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<RevitAddIns>
<AddIn Type="Application">
<Name>Case.AppsRibbon</Name>
<Assembly>Case.Apps\Case.AppsRibbon.dll</Assembly>
<FullClassName>Case.AppsRibbon.Entry.AppMain</FullClassName>
<ClientId>0000000b-0000-0007-000F-00000F30D000</ClientId>
<VendorId>CSDR</VendorId>
<VendorDescription>CASE Design Inc., http://www.case-inc.com </VendorDescription>
</AddIn>
</RevitAddIns>
11 changes: 11 additions & 0 deletions deploy/2026/Case.BasicReporting.addin
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<RevitAddIns>
<AddIn Type="Command">
<Text>Command Case.BasicReporting</Text>
<Assembly>Case.BasicReporting.dll</Assembly>
<ClientId>48401C1A-333C-4154-B972-ACa72655D58B</ClientId>
<FullClassName>Case.BasicReporting.Entry.CmdMain</FullClassName>
<VendorId>CASE</VendorId>
<VendorDescription>Case Design, Inc., www.case-inc.com</VendorDescription>
</AddIn>
</RevitAddIns>
11 changes: 11 additions & 0 deletions deploy/2026/Case.ChangeReplaceFamTypeNames.addin
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<RevitAddIns>
<AddIn Type="Command">
<Text>Command Case.ChangeReplaceFamTypeNames</Text>
<Assembly>Case.ChangeReplaceFamTypeNames.dll</Assembly>
<FullClassName>Case.ChangeReplaceFamTypeNames.Entry.CmdMain</FullClassName>
<ClientId>fc3ed2c7-243e-448a-9dff-a88545492948</ClientId>
<VendorId>CASE</VendorId>
<VendorDescription>Case Design, Inc., www.case-inc.com</VendorDescription>
</AddIn>
</RevitAddIns>
11 changes: 11 additions & 0 deletions deploy/2026/Case.DeleteViewsAndPurge.addin
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<RevitAddIns>
<AddIn Type="Command">
<Text>Command Case.DeleteViewsAndPurge</Text>
<Assembly>Case.DeleteViewsAndPurge.dll</Assembly>
<ClientId>2ad481a2-b333-45b6-1acb-910e65a29b9c</ClientId>
<FullClassName>Case.DeleteViewsAndPurge.Entry.CmdMain</FullClassName>
<VendorId>CASE</VendorId>
<VendorDescription>Case Design, Inc. http://www.case-inc.com</VendorDescription>
</AddIn>
</RevitAddIns>
10 changes: 10 additions & 0 deletions deploy/2026/Case.DimensionOverrides.addin
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<RevitAddIns>
<AddIn Type="Command">
<Text>Command - Case.DimensionOverrides</Text>
<Assembly>Case.DimensionOverrides.dll</Assembly>
<FullClassName>Case.DimensionOverrides.Entry.CmdMain</FullClassName>
<ClientId>f0b1a893-be2d-4648-b9d5-00b755393267</ClientId>
<VendorId>Case</VendorId>
</AddIn>
</RevitAddIns>
11 changes: 11 additions & 0 deletions deploy/2026/Case.Directionality.addin
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<RevitAddIns>
<AddIn Type="Command">
<Text>Command Case.Directionality</Text>
<Assembly>Case.Directionality.dll</Assembly>
<ClientId>4ea76ff3-bb47-4969-9371-c7f3eb8ac068</ClientId>
<FullClassName>Case.Directionality.Entry.CmdMain</FullClassName>
<VendorId>CSDR</VendorId>
<VendorDescription>Case Design, Inc., http://apps.case-inc.com/</VendorDescription>
</AddIn>
</RevitAddIns>
11 changes: 11 additions & 0 deletions deploy/2026/Case.DoorMarkRenumber.addin
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<RevitAddIns>
<AddIn Type="Command">
<Text>Command Case.DoorMarkRenumber</Text>
<Assembly>Case.DoorMarkRenumber.dll</Assembly>
<ClientId>88a0a36d-d7ff-417a-8716-b02e76cbeac9</ClientId>
<FullClassName>Case.DoorMarkRenumber.Entry.CmdMain</FullClassName>
<VendorId>CASE</VendorId>
<VendorDescription>http://www.case-inc.com</VendorDescription>
</AddIn>
</RevitAddIns>
11 changes: 11 additions & 0 deletions deploy/2026/Case.Export.Families.addin
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<RevitAddIns>
<AddIn Type="Command">
<Text>Command Case.Export.Families</Text>
<Assembly>Case.Export.Families.dll</Assembly>
<ClientId>92ea0b1a-e1bd-4645-9473-f3baf14abf27</ClientId>
<FullClassName>Case.Export.Families.Entry.CmdMain</FullClassName>
<VendorId>CASE</VendorId>
<VendorDescription>http://www.case-inc.com</VendorDescription>
</AddIn>
</RevitAddIns>
11 changes: 11 additions & 0 deletions deploy/2026/Case.ExtrudeRoomsToMass.addin
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<RevitAddIns>
<AddIn Type="Command">
<Text>Command Case.ExtrudeRoomsToMass</Text>
<Assembly>Case.ExtrudeRoomsToMass.dll</Assembly>
<ClientId>1ea393bb-ddba-449e-bc43-fd4120330241</ClientId>
<FullClassName>Case.ExtrudeRoomsToMass.Entry.CmdMain</FullClassName>
<VendorId>CSDR</VendorId>
<VendorDescription>Case Design, Inc. www.case-inc.com</VendorDescription>
</AddIn>
</RevitAddIns>
10 changes: 10 additions & 0 deletions deploy/2026/Case.FamilySubcategories.addin
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="utf-8"?>
<RevitAddIns>
<AddIn Type="Command">
<Text>Command - Case.FamilySubcategories</Text>
<Assembly>Case.FamilySubcategories.dll</Assembly>
<FullClassName>Case.FamilySubcategories.Entry.CmdMain</FullClassName>
<ClientId>76D68975-5D6D-4CA6-BF6F-32F6A6612C36</ClientId>
<VendorId>Case</VendorId>
</AddIn>
</RevitAddIns>
11 changes: 11 additions & 0 deletions deploy/2026/Case.HiddenParameterToParameter.addin
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<RevitAddIns>
<AddIn Type="Command">
<Text>Command Case.HiddenParameterToParameter</Text>
<Assembly>Case.HiddenParameterToParameter.dll</Assembly>
<ClientId>6c47992e-7ba5-4f86-9238-8df5d2a2777b</ClientId>
<FullClassName>Case.HiddenParameterToParameter.Entry.CmdMain</FullClassName>
<VendorId>CSDR</VendorId>
<VendorDescription>Case Design, Inc., www.case-inc.com</VendorDescription>
</AddIn>
</RevitAddIns>
11 changes: 11 additions & 0 deletions deploy/2026/Case.ImageToDraftingView.addin
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<RevitAddIns>
<AddIn Type="Command">
<Text>Command Case.ImageToDraftingView</Text>
<Assembly>Case.ImageToDraftingView.dll</Assembly>
<ClientId>20f78cc8-41d2-4d98-9d76-813f12324357</ClientId>
<FullClassName>Case.ImageToDraftingView.Entry.CmdMain</FullClassName>
<VendorId>CSDR</VendorId>
<VendorDescription>Case Design, Inc., www.case-inc.com</VendorDescription>
</AddIn>
</RevitAddIns>
12 changes: 12 additions & 0 deletions deploy/2026/Case.LightingLayout.addin
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<RevitAddIns>
<AddIn Type="Command">
<Text>Command Case.LightingLayout</Text>
<Description>Case.LightingLayout</Description>
<Assembly>Case.LightingLayout.dll</Assembly>
<FullClassName>Case.LightingLayout.Entry.CmdMain</FullClassName>
<ClientId>ace9b525-945d-4a92-9f90-89cc61dcb4aa</ClientId>
<VendorId>CSDR</VendorId>
<VendorDescription>Case Design, Inc., www.case-inc.com</VendorDescription>
</AddIn>
</RevitAddIns>
11 changes: 11 additions & 0 deletions deploy/2026/Case.LineChanger.addin
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<RevitAddIns>
<AddIn Type="Command">
<Text>Command Case.ChangeLineStyles</Text>
<Assembly>Case.ChangeLineStyles.dll</Assembly>
<ClientId>12ea0b1a-e1bd-4aa5-9a71-f3baf44ab217</ClientId>
<FullClassName>Case.ChangeLineStyles.Entry.CmdMain</FullClassName>
<VendorId>CASE</VendorId>
<VendorDescription>http://www.case-inc.com</VendorDescription>
</AddIn>
</RevitAddIns>
Loading