Skip to content

LT-20524: Resolve install directories in silent (/quiet) installs#937

Open
johnml1135 wants to merge 1 commit into
mainfrom
LT-20524
Open

LT-20524: Resolve install directories in silent (/quiet) installs#937
johnml1135 wants to merge 1 commit into
mainfrom
LT-20524

Conversation

@johnml1135

@johnml1135 johnml1135 commented Jun 10, 2026

Copy link
Copy Markdown
Contributor

Problem

LT-20524 — FieldWorks fails
to install in /quiet mode (PDQ Deploy / PDQ Connect / Intune).

The directory-resolution custom actions (SetDefDataFolder,
VerifyDataPath, and the Use*AppFolder / Use*DataFolder /
Use*HarvestDataFolder set) were scheduled only in the
InstallUISequence. Windows Installer skips that sequence for silent
(/quiet, /qn) and basic-UI (/qb) installs, so APPFOLDER,
DATAFOLDER, and HARVESTDATAFOLDER were never assigned.
Consequences:

  • FieldWorks installed to C:\Program Files\FieldWorks9 instead of
    C:\Program Files\SIL\FieldWorks 9.
  • The harvested ICU data installed to the wrong location, while the
    ICU_DATA launcher command pointed at C:\ProgramData\SIL\Icu70.
  • No shortcut was created.

/passive worked only because it still ran the reduced-UI sequence.

Fix

Schedule the same directory-resolution actions in the
InstallExecuteSequence, guarded by UILevel < 4 so they run only
when the UI sequence is skipped. Reduced (/passive) and full UI
installs continue to resolve these in the InstallUISequence, so a
user-chosen path is never overridden.

While validating the fix, I also reconciled the WiX 6 projects and the
local installer-evidence scripts so the MSI and bundle builds can be run
end to end again from this branch.

A matching change is required in the legacy WiX 3 installer
(sillsdev/genericinstaller) and is tracked in the paired PR there.

Validation

  • ./Build/Agent/commit-messages.ps1
  • ./Build/Agent/check-and-fix-whitespace.ps1
  • ./build.ps1 -Configuration Release -BuildInstaller -InstallerToolset Wix6 -InstallerOnly -ForceInstallerOnly
  • Elevated MSI validation on this machine with logs under
    Output/InstallerEvidence/LT20524-*:
    • /quiet: success; APPFOLDER=C:\Program Files\SIL\FieldWorks 9\,
      DATAFOLDER=C:\ProgramData\SIL\FieldWorks\Projects\,
      HARVESTDATAFOLDER=C:\ProgramData\SIL\; desktop and Start Menu
      shortcuts target C:\Program Files\SIL\FieldWorks 9\FieldWorks.exe.
    • /qb: success with the same resolved paths and shortcut targets.
    • /passive: success with the same resolved paths and shortcut
      targets.
    • Full UI with the default selections: success with the same resolved
      paths and shortcut targets.
  • Non-elevated /quiet fails with Error 1925, which is expected for a
    per-machine MSI without administrator rights and is not part of
    LT-20524.
  • Cleanup check: the final elevated uninstall completed successfully and
    removed the installed FieldWorks.exe and shortcuts.

Notes

The separate report that even /passive fails when launched as
LOCAL SYSTEM via PDQ Connect / Intune still looks like a distinct
relative-path or elevation issue and is not addressed here.


This change is Reviewable

Copilot AI review requested due to automatic review settings June 10, 2026 00:21
@github-actions

This comment has been minimized.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR addresses LT-20524 by ensuring FieldWorks’ WiX v6 MSI resolves APPFOLDER, DATAFOLDER, and HARVESTDATAFOLDER during silent/basic-UI installs where InstallUISequence is skipped, preventing incorrect install paths (including ICU data path mismatches) and missing shortcuts in enterprise deployment scenarios.

Changes:

  • Duplicates the directory-resolution custom actions into InstallExecuteSequence with a UILevel < 4 guard so they run only when InstallUISequence is skipped.
  • Preserves existing behavior for reduced UI (/passive, UILevel=4) and full UI installs so user-selected paths are not overridden.

Comment thread FLExInstaller/wix6/Shared/Base/Framework.wxs
@github-actions

github-actions Bot commented Jun 10, 2026

Copy link
Copy Markdown

Render comparison artifacts

Render snapshot failures were reported in 7e54c819654a run 27306198682.1, but the latest run ab7b82ff6a61 run 27315176964.1 is clean.

This comment will be replaced if a future run produces render snapshot failures again.

@github-actions

github-actions Bot commented Jun 10, 2026

Copy link
Copy Markdown

NUnit Tests

    1 files  ±0      1 suites  ±0   10m 10s ⏱️ +9s
4 251 tests ±0  4 178 ✅ ±0  73 💤 ±0  0 ❌ ±0 
4 260 runs  ±0  4 187 ✅ ±0  73 💤 ±0  0 ❌ ±0 

Results for commit f709a6b. ± Comparison against base commit 7b1269e.

♻️ This comment has been updated with latest results.

@jasonleenaylor

Copy link
Copy Markdown
Contributor

FLExInstaller/wix6/FieldWorks.OfflineBundle.wixproj line 47 at r2 (raw file):

  <ItemGroup>
  <WixExtension Include="WixToolset.BootstrapperApplications.wixext">

Why are these extra extensions needed in the OfflineBundle but not in the Bundle?

Run the MSI directory-resolution actions in
InstallExecuteSequence for UILevel < 4 so /quiet and /qb resolve the
same app and data paths as /passive and full UI.

While validating the fix, reconcile the WiX 6 projects and installer
evidence scripts so the MSI and bundles can be built and exercised
locally again.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants