Skip to content

Commit 094019c

Browse files
committed
LT-20524: Resolve install dirs in silent installs
The directory-resolution custom actions (SetDefDataFolder, VerifyDataPath, and the Use*AppFolder/Use*DataFolder/Use*HarvestDataFolder set) were only scheduled in the InstallUISequence. That sequence is skipped for silent (/quiet, /qn) and basic-UI (/qb) installs, so APPFOLDER, DATAFOLDER, and HARVESTDATAFOLDER were never assigned. The result was FieldWorks installed to the wrong folder and the harvested ICU data landed where ICU_DATA did not point, causing a 'Failed to load normalizer' drawing crash on first use. Schedule the same actions in the InstallExecuteSequence, guarded by 'UILevel < 4' so they only run when the UI sequence does not. Reduced (/passive) and full UI installs keep resolving these in the InstallUISequence, so user-chosen paths are not overridden. VerifyDataPath populates REGDATAFOLDER (used by the conditions) and always returns Success, so it is safe in a silent install. This also unblocks the WiX6/Burn bundle, which always runs the embedded MSI silently.
1 parent e6976c5 commit 094019c

1 file changed

Lines changed: 17 additions & 0 deletions

File tree

FLExInstaller/wix6/Shared/Base/Framework.wxs

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,23 @@
6767
<Custom Action="DeleteRegistryVersionNumber" Before="RemoveRegistryValues" Condition="(NOT UPGRADINGPRODUCTCODE) AND (REMOVE=&quot;ALL&quot;)" />
6868
<Custom Action="CheckPatchValue" Before="CheckUpgradeValue" Condition="PATCHNEWSUMMARYSUBJECT=&quot;Small Update Patch&quot;" />
6969
<Custom Action="CheckUpgradeValue" After="InstallFinalize" Condition="WIX_UPGRADE_DETECTED" />
70+
<!-- LT-20524: The InstallUISequence does not run for silent (/quiet, /qn) or basic (/qb) installs
71+
(UILevel &lt; 4), so the directory-resolution actions below must also run here; otherwise
72+
APPFOLDER/DATAFOLDER/HARVESTDATAFOLDER stay unset and files (including the ICU data that
73+
ICU_DATA points at) install to the wrong locations. Reduced (/passive, UILevel 4) and full
74+
UI installs continue to resolve these in the InstallUISequence, so the UILevel guard keeps
75+
this from overriding a user-chosen path. VerifyDataPath populates REGDATAFOLDER (used by the
76+
conditions below) and always returns Success, so it is safe in a silent install. -->
77+
<Custom Action="SetDefDataFolder" After="FindRelatedProducts" Condition="UILevel &lt; 4" />
78+
<Custom Action="VerifyDataPath" After="SetDefDataFolder" Condition="UILevel &lt; 4" />
79+
<Custom Action="UseDefAppFolder" After="AppSearch" Condition="(UILevel &lt; 4) and (NOT REGAPPFOLDER) and (NOT OVRAPPFOLDER)" />
80+
<Custom Action="UseOvrAppFolder" After="AppSearch" Condition="(UILevel &lt; 4) and (NOT REGAPPFOLDER) and (OVRAPPFOLDER)" />
81+
<Custom Action="UseRegAppFolder" After="AppSearch" Condition="(UILevel &lt; 4) and (REGAPPFOLDER)" />
82+
<Custom Action="UseDefDataFolder" After="AppSearch" Condition="(UILevel &lt; 4) and (NOT REGDATAFOLDER) and (NOT OVRDATAFOLDER)" />
83+
<Custom Action="UseOvrDataFolder" After="AppSearch" Condition="(UILevel &lt; 4) and (NOT REGDATAFOLDER) and (OVRDATAFOLDER)" />
84+
<Custom Action="UseRegDataFolder" After="AppSearch" Condition="(UILevel &lt; 4) and (REGDATAFOLDER)" />
85+
<Custom Action="UseDefHarvestDataFolder" After="AppSearch" Condition="(UILevel &lt; 4) and (NOT OVRHARVESTDATAFOLDER)" />
86+
<Custom Action="UseOvrHarvestDataFolder" After="AppSearch" Condition="(UILevel &lt; 4) and (OVRHARVESTDATAFOLDER)" />
7087
<?include ../Common/CustomActionSteps.wxi?>
7188
</InstallExecuteSequence>
7289

0 commit comments

Comments
 (0)