Skip to content

Commit 3553a21

Browse files
committed
More progress
1 parent da95673 commit 3553a21

18 files changed

Lines changed: 489 additions & 50 deletions

File tree

.github/skills/fieldworks-installer-diagnostics/SKILL.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ When the WinApp MCP server is available, use it to make UI diagnostics repeatabl
3737
- Record the observed focus path and control names in the evidence notes, especially for silent/blank UI, MSI handoff, uninstall prompts, and ARP uninstall hangs.
3838
- For safe UI-only smoke tests, stop after proving the license checkbox/Install/Cancel path; do not proceed into install unless the scenario requires machine changes.
3939
- For hangs, combine WinApp focused-element/window evidence with bundle/MSI logs, before/after snapshots, Event Viewer entries, and process lists.
40+
- If the bundle reaches elevated MSI internal UI, a non-elevated WinApp host may be limited to observation. Treat visible-but-non-clickable MSI controls as an automation integrity boundary until proven otherwise; capture the focused element, MSI log action, screenshots, process integrity/window ownership evidence, and rerun elevated for full manual UI control.
4041

4142
## Commands
4243

.github/skills/fieldworks-wix6-ui/SKILL.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,8 @@ Use WinApp MCP for bundle/MSI UI smoke tests whenever the server is available.
6767

6868
Known behavior: the Burn launcher PID may not own the visible WixStdBA window after startup. If `get_snapshot` returns no accessible elements, use desktop window discovery, `get_focused_element`, keyboard commands, or coordinate clicks rather than concluding the UI is untestable.
6969

70+
Elevation boundary: a non-elevated VS Code/WinApp MCP host can usually drive the bundle UI before elevation, but may only observe the elevated MSI internal UI. If the MSI welcome dialog shows focus on `&Next` but UIA click, keyboard, coordinate click, and direct button messages do not advance it, rerun with an elevated automation host or switch to quiet install/uninstall evidence for completion.
71+
7072
## Evidence Checklist
7173

7274
- Bundle command and UI level used.

.github/skills/fieldworks-wix6-upgrade-patching/SKILL.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@ Use WinApp MCP to observe and drive UI during upgrade, repair, and uninstall evi
6969
- For ARP uninstall hangs, use WinApp to identify whether focus is on a hidden prompt, MSI dialog, bundle confirmation, or UAC-adjacent window before changing authoring.
7070
- During WiX 3 to WiX 6 upgrade tests, use WinApp screenshots/focus traces for the bundle welcome/license page, MSI destination folders page, feature tree, progress, completion, and any maintenance prompt.
7171
- Do not use WinApp to bypass prompts silently. The point is to document and reproduce the user-visible path while bundle/MSI logs and snapshots capture the underlying state.
72+
- Run the WinApp automation host elevated for full manual upgrade or uninstall UI once Burn hands off to MSI internal UI. A non-elevated host can observe the elevated MSI dialog but may not be able to click `Next`, `Repair`, `Uninstall`, or ARP prompts.
7273

7374
## MSP Patch Gate
7475

.github/workflows/CI.yml

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,15 @@ on:
55
pull_request:
66
branches: ["release/**", "main", "feature/PubSub"]
77
workflow_dispatch:
8+
inputs:
9+
run_wix6_installer_check:
10+
description: 'Run the opt-in WiX 6 quiet install/uninstall verification on the GitHub runner'
11+
required: false
12+
default: 'false'
13+
type: choice
14+
options:
15+
- 'false'
16+
- 'true'
817

918
permissions:
1019
contents: read
@@ -130,7 +139,14 @@ jobs:
130139
- name: Audit WiX 6 installer evidence
131140
shell: powershell
132141
run: |
133-
.\Build\Agent\Test-Wix6InstallerBuildEvidence.ps1 -Configuration Release -Platform x64 -BuildLogPath .\wix6-installer-build.log -ReportPath .\Output\InstallerEvidence\wix6-ci-build-audit.txt
142+
.\Build\Agent\Test-Wix6InstallerBuildEvidence.ps1 -Configuration Release -Platform x64 -BuildLogPath .\wix6-installer-build.log -ReportPath .\Output\InstallerEvidence\wix6-ci-build-audit.txt -RequireNoWix3ToolsOnPath
143+
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }
144+
145+
- name: Run opt-in WiX 6 installer verification
146+
if: ${{ github.event_name == 'workflow_dispatch' && inputs.run_wix6_installer_check == 'true' }}
147+
shell: powershell
148+
run: |
149+
.\scripts\Agent\Invoke-InstallerCheck.ps1 -InstallerType Bundle -InstallerToolset Wix6 -Configuration Release -Platform x64 -RunId wix6-ci-install-check -InstallArguments @('/quiet','/norestart') -InstallTimeoutSeconds 3600 -RunUninstall -UninstallArguments @('/uninstall','/quiet','/norestart') -UninstallTimeoutSeconds 1800
134150
if ($LASTEXITCODE -ne 0) { exit $LASTEXITCODE }
135151
136152
- name: Upload WiX 6 installer artifacts

.github/workflows/base-installer-cd.yml

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,7 @@ jobs:
139139
- name: Setup dotnet
140140
uses: actions/setup-dotnet@v5
141141
with:
142-
dotnet-version: |
142+
dotnet-version: |
143143
3.1.x
144144
5.0.x
145145
@@ -172,11 +172,11 @@ jobs:
172172
$results = Select-String -Path "build.log" -Pattern "^\s*[1-9][0-9]* Error\(s\)"
173173
if ($results) {
174174
foreach ($result in $results) {
175-
Write-Host "Found errors in build.log $($result.LineNumber): $($result.Line)" -ForegroundColor red
175+
Write-Host "Found errors in build.log $($result.LineNumber): $($result.Line)" -ForegroundColor red
176176
}
177177
exit 1
178178
} else {
179-
Write-Host "No errors found" -ForegroundColor green
179+
Write-Host "No errors found" -ForegroundColor green
180180
exit 0
181181
}
182182
@@ -251,24 +251,24 @@ jobs:
251251
run: |
252252
$offlineExe = "${{ steps.stage_installers.outputs.offline_exe }}"
253253
$onlineExe = "${{ steps.stage_installers.outputs.online_exe }}"
254-
254+
255255
if (-not (Test-Path $offlineExe)) {
256256
throw "Offline installer not found at $offlineExe"
257257
}
258258
if (-not (Test-Path $onlineExe)) {
259259
throw "Online installer not found at $onlineExe"
260260
}
261-
261+
262262
$offlineFile = Split-Path $offlineExe -Leaf
263263
$onlineFile = Split-Path $onlineExe -Leaf
264-
264+
265265
$s3BasePath = "jobs/FieldWorks-Win-all-Release-Base/$($env:FW_BUILD_NUMBER)"
266266
$offlineS3Key = "$s3BasePath/$offlineFile"
267267
$onlineS3Key = "$s3BasePath/$onlineFile"
268-
268+
269269
aws s3 cp $offlineExe "s3://flex-updates/$offlineS3Key"
270270
Write-Host "Uploaded offline installer to s3://flex-updates/$offlineS3Key"
271-
271+
272272
aws s3 cp $onlineExe "s3://flex-updates/$onlineS3Key"
273273
Write-Host "Uploaded online installer to s3://flex-updates/$onlineS3Key"
274274

.github/workflows/patch-installer-cd.yml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,7 @@ jobs:
153153
- name: Setup dotnet
154154
uses: actions/setup-dotnet@v5
155155
with:
156-
dotnet-version: |
156+
dotnet-version: |
157157
3.1.x
158158
5.0.x
159159
@@ -168,7 +168,7 @@ jobs:
168168
choco install wixtoolset --version 3.11.2 --allow-downgrade --force
169169
echo "C:\Program Files (x86)\WiX Toolset v3.11\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
170170
if: github.event_name != 'pull_request'
171-
171+
172172
- name: Import Base Build Artifacts
173173
shell: pwsh
174174
run: |
@@ -213,7 +213,7 @@ jobs:
213213
)
214214
$valueName = "Switch.System.DisableTempFileCollectionDirectoryFeature"
215215
$expectedValue = "true"
216-
216+
217217
foreach ($path in $regPaths) {
218218
Write-Host "Adding or updating registry value in $path..."
219219
if (-not (Test-Path $path)) {
@@ -240,11 +240,11 @@ jobs:
240240
$results = Select-String -Path "build.log" -Pattern "^\s*[1-9][0-9]* Error\(s\)"
241241
if ($results) {
242242
foreach ($result in $results) {
243-
Write-Host "Found errors in build.log $($result.LineNumber): $($result.Line)" -ForegroundColor red
243+
Write-Host "Found errors in build.log $($result.LineNumber): $($result.Line)" -ForegroundColor red
244244
}
245245
exit 1
246246
} else {
247-
Write-Host "No errors found" -ForegroundColor green
247+
Write-Host "No errors found" -ForegroundColor green
248248
exit 0
249249
}
250250

0 commit comments

Comments
 (0)