瀏覽代碼

Support additive COM components in deployment

master
Open Claw 2 週之前
父節點
當前提交
9f3b0125ed
共有 1 個檔案被更改,包括 19 行新增 和 1 行删除
  1. +19
    -1
      tools/Invoke-RemoteInstall.ps1

+ 19
- 1
tools/Invoke-RemoteInstall.ps1 查看文件

@@ -147,7 +147,23 @@ function Get-ComponentRegistrationMode {

if ($absentCount -eq $Components.Count) { return 'Absent' }
if ($ownedCount -eq $Components.Count) { return 'Owned' }
throw 'Component registrations are a mixture of absent and existing entries. Refusing a deployment that could overwrite or delete unrelated registry state.'

# An upgrade may introduce a component that did not exist in the currently
# deployed tree. Accept only that additive case: every existing registration
# was proven project-owned above, and every absent registration must also
# have no corresponding component file in the old release. An absent
# registration for an old file remains a suspicious partial state.
foreach ($component in $Components) {
$progIdKey = "HKLM:\SOFTWARE\Classes\$($component.ProgId)"
$clsidKey = "HKLM:\SOFTWARE\Classes\CLSID\$($component.ClassId)"
if (-not (Test-Path -LiteralPath $progIdKey) -and -not (Test-Path -LiteralPath $clsidKey)) {
$oldComponentPath = Join-Path $ExistingProjectPath $component.RelativePath
if (Test-Path -LiteralPath $oldComponentPath) {
throw "Component registration for existing file '$($component.RelativePath)' is absent. Refusing to repair a partial registration state."
}
}
}
return 'Owned'
}

function Restore-SiteState {
@@ -259,6 +275,7 @@ $components = @(
[PSCustomObject]@{ RelativePath = 'Framework\RequestContext.wsc'; ProgId = 'WscMvc.RequestContext'; ClassId = '{1C36FA55-34DF-4974-94B9-D657389362B2}' },
[PSCustomObject]@{ RelativePath = 'Framework\Router.wsc'; ProgId = 'WscMvc.Router'; ClassId = '{C92F9338-B478-4EAD-B865-892FFB1E1C51}' },
[PSCustomObject]@{ RelativePath = 'Framework\ViewRenderer.wsc'; ProgId = 'WscMvc.ViewRenderer'; ClassId = '{4948DF84-5DC6-448A-9F1B-EB596C28842B}' },
[PSCustomObject]@{ RelativePath = 'Framework\Database.wsc'; ProgId = 'WscMvc.Database'; ClassId = '{E3F7C1A2-9B4D-4E6F-8C3A-2D5B7A9E1F04}' },
[PSCustomObject]@{ RelativePath = 'Framework\Application.wsc'; ProgId = 'WscMvc.Application'; ClassId = '{851C7763-1638-42FE-A166-BF3DD3A96A88}' },
[PSCustomObject]@{ RelativePath = 'Controllers\HomeController.wsc'; ProgId = 'WscMvc.HomeController'; ClassId = '{87488446-60BE-4068-8368-0B709BB68F3F}' },
[PSCustomObject]@{ RelativePath = 'test-app\Controllers\SelfTestController.wsc'; ProgId = 'WscMvc.SelfTestController'; ClassId = '{D2634944-4646-4C55-956E-4C05E7E10904}' }
@@ -313,6 +330,7 @@ try {
'public\Default.asp',
'test-app\public\Default.asp',
'Framework\ViewRenderer.wsc',
'Framework\Database.wsc',
'tools\Register-Components.ps1',
'tools\Setup-Site.ps1',
'tests\Invoke-SelfTest.ps1',


Loading…
取消
儲存

Powered by TurnKey Linux.