Skip to content

fix(agent-installer): resolve raw localization keys in custom dialog labels#1836

Draft
irvingouj@Devolutions (irvingoujAtDevolution) wants to merge 2 commits into
masterfrom
agent-tunnel-installer-l10n
Draft

fix(agent-installer): resolve raw localization keys in custom dialog labels#1836
irvingouj@Devolutions (irvingoujAtDevolution) wants to merge 2 commits into
masterfrom
agent-tunnel-installer-l10n

Conversation

@irvingoujAtDevolution

Copy link
Copy Markdown
Contributor

Split out of #1831 (draft tracker — the TODO(agent-tunnel) marker is placed at the exact code site; not fixed yet).

Custom installer dialog labels show raw localization keys

Symptom: The Agent Tunnel dialog (and the base dialog title) render literal keys — AgentTunnelDlgTitle, AgentTunnelDlgEnrollmentStringLabel, AgentDlg_Title, … — instead of the translated text.

Root cause: The strings exist correctly in Strings_*.json and DevolutionsAgent_*.wxl. At runtime Project_UIInitialized loads the embedded .wxl into a local dict that only feeds the pre-flight MessageBoxes. The custom dialogs resolve [Key] via MsiRuntime.Localize, which is not populated from these custom strings — light.exe only emits strings referenced via !(loc.X) into the MSI, and the custom [Key] labels are never !(loc.X)-referenced (verified via dark.exe: the strings are absent from the built MSI's localization tables). Standard dialogs (Welcome/InstallDir) work only because WixSharp's built-in UI references those standard IDs via !(loc.X).

Suggested fix: wire the loaded strings dict into the ManagedUI runtime localization (or back the custom dialogs with a shared I18n that reads it). TODO(agent-tunnel) marker in Program.cs.

@github-actions

Copy link
Copy Markdown

Let maintainers know that an action is required on their side

  • Add the label release-required Please cut a new release (Devolutions Gateway, Devolutions Agent, Jetsocat, PowerShell module) when you request a maintainer to cut a new release (Devolutions Gateway, Devolutions Agent, Jetsocat, PowerShell module)

  • Add the label release-blocker Follow-up is required before cutting a new release if a follow-up is required before cutting a new release

  • Add the label publish-required Please publish libraries (`Devolutions.Gateway.Utils`, OpenAPI clients, etc) when you request a maintainer to publish libraries (Devolutions.Gateway.Utils, OpenAPI clients, etc.)

  • Add the label publish-blocker Follow-up is required before publishing libraries if a follow-up is required before publishing libraries

Custom WiX dialogs (the Agent Tunnel dialog and the base dialog titles)
displayed raw localization keys such as "AgentTunnelDlgTitle" instead of
translated text. light.exe only emits !(loc.X)-referenced strings into the
MSI localization tables, and the custom "[Key]" labels are never referenced
that way, so they fell back to the raw key name in both en-US and fr-FR.

Load the embedded .wxl into the managed UI runtime localization table
(MsiRuntime.UIText via InitFromWxl) when the UI initializes, so the custom
dialogs resolve their [Key] labels through MsiRuntime.Localize. The
pre-flight message boxes read from the same table.
@irvingoujAtDevolution irvingouj@Devolutions (irvingoujAtDevolution) changed the title Agent Tunnel installer: custom dialog labels show raw localization keys fix(agent-installer): resolve raw localization keys in custom dialog labels Jun 24, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

1 participant