diff options
| author | Charles Baker <charles@juicelabs.co> | 2024-10-24 13:13:26 +1300 |
|---|---|---|
| committer | Rob Mensching <rob@firegiant.com> | 2026-01-03 06:00:27 -0800 |
| commit | 8ebde131206f1502cbff2055941ffe52e2802439 (patch) | |
| tree | c2d9ab840f59d8036c6f19f714b921b27b60f0f7 /src/ext/Bal/wixext | |
| parent | 2a58247b62bdea7c829ca643812faa7665f39a73 (diff) | |
| download | wix-8ebde131206f1502cbff2055941ffe52e2802439.tar.gz wix-8ebde131206f1502cbff2055941ffe52e2802439.tar.bz2 wix-8ebde131206f1502cbff2055941ffe52e2802439.zip | |
Add bal:DisplayFilesInUseDialogCondition to disable Files In Use dialog
Disabling display skips showing the "Files In Use" dialog and returning
a result as if the user had chosen to ignore the dialog and reboot in
the case of files that were unable to be replaced.
Diffstat (limited to 'src/ext/Bal/wixext')
| -rw-r--r-- | src/ext/Bal/wixext/BalBurnBackendExtension.cs | 22 | ||||
| -rw-r--r-- | src/ext/Bal/wixext/BalCompiler.cs | 14 | ||||
| -rw-r--r-- | src/ext/Bal/wixext/BalWarnings.cs | 6 | ||||
| -rw-r--r-- | src/ext/Bal/wixext/Symbols/WixBalPackageInfoSymbol.cs | 8 |
4 files changed, 50 insertions, 0 deletions
diff --git a/src/ext/Bal/wixext/BalBurnBackendExtension.cs b/src/ext/Bal/wixext/BalBurnBackendExtension.cs index 82195549..5831bb8a 100644 --- a/src/ext/Bal/wixext/BalBurnBackendExtension.cs +++ b/src/ext/Bal/wixext/BalBurnBackendExtension.cs | |||
| @@ -51,6 +51,11 @@ namespace WixToolset.BootstrapperApplications | |||
| 51 | writer.WriteAttributeString("DisplayInternalUICondition", balPackageInfoSymbol.DisplayInternalUICondition); | 51 | writer.WriteAttributeString("DisplayInternalUICondition", balPackageInfoSymbol.DisplayInternalUICondition); |
| 52 | } | 52 | } |
| 53 | 53 | ||
| 54 | if (balPackageInfoSymbol.DisplayFilesInUseDialogCondition != null) | ||
| 55 | { | ||
| 56 | writer.WriteAttributeString("DisplayFilesInUseDialogCondition", balPackageInfoSymbol.DisplayFilesInUseDialogCondition); | ||
| 57 | } | ||
| 58 | |||
| 54 | if (balPackageInfoSymbol.PrimaryPackageType != BalPrimaryPackageType.None) | 59 | if (balPackageInfoSymbol.PrimaryPackageType != BalPrimaryPackageType.None) |
| 55 | { | 60 | { |
| 56 | writer.WriteAttributeString("PrimaryPackageType", balPackageInfoSymbol.PrimaryPackageType.ToString().ToLower()); | 61 | writer.WriteAttributeString("PrimaryPackageType", balPackageInfoSymbol.PrimaryPackageType.ToString().ToLower()); |
| @@ -104,6 +109,7 @@ namespace WixToolset.BootstrapperApplications | |||
| 104 | 109 | ||
| 105 | this.VerifyBalConditions(section); | 110 | this.VerifyBalConditions(section); |
| 106 | this.VerifyDisplayInternalUICondition(section); | 111 | this.VerifyDisplayInternalUICondition(section); |
| 112 | this.VerifyDisplayFilesInUseDialogCondition(section); | ||
| 107 | this.VerifyOverridableVariables(section); | 113 | this.VerifyOverridableVariables(section); |
| 108 | 114 | ||
| 109 | var balBaSymbol = section.Symbols.OfType<WixBalBootstrapperApplicationSymbol>().SingleOrDefault(); | 115 | var balBaSymbol = section.Symbols.OfType<WixBalBootstrapperApplicationSymbol>().SingleOrDefault(); |
| @@ -195,6 +201,17 @@ namespace WixToolset.BootstrapperApplications | |||
| 195 | } | 201 | } |
| 196 | } | 202 | } |
| 197 | 203 | ||
| 204 | private void VerifyDisplayFilesInUseDialogCondition(IntermediateSection section) | ||
| 205 | { | ||
| 206 | foreach (var balPackageInfoSymbol in section.Symbols.OfType<WixBalPackageInfoSymbol>().ToList()) | ||
| 207 | { | ||
| 208 | if (balPackageInfoSymbol.DisplayFilesInUseDialogCondition != null) | ||
| 209 | { | ||
| 210 | this.BackendHelper.ValidateBundleCondition(balPackageInfoSymbol.SourceLineNumbers, "*Package", "bal:DisplayFilesInUseDialogCondition", balPackageInfoSymbol.DisplayFilesInUseDialogCondition, BundleConditionPhase.Plan); | ||
| 211 | } | ||
| 212 | } | ||
| 213 | } | ||
| 214 | |||
| 198 | private void VerifyPrimaryPackages(IntermediateSection section, SourceLineNumber baSourceLineNumbers) | 215 | private void VerifyPrimaryPackages(IntermediateSection section, SourceLineNumber baSourceLineNumbers) |
| 199 | { | 216 | { |
| 200 | WixBalPackageInfoSymbol defaultPrimaryPackage = null; | 217 | WixBalPackageInfoSymbol defaultPrimaryPackage = null; |
| @@ -420,6 +437,11 @@ namespace WixToolset.BootstrapperApplications | |||
| 420 | { | 437 | { |
| 421 | this.Messaging.Write(BalWarnings.IuibaPrimaryPackageDisplayInternalUICondition(packageSymbol.SourceLineNumbers)); | 438 | this.Messaging.Write(BalWarnings.IuibaPrimaryPackageDisplayInternalUICondition(packageSymbol.SourceLineNumbers)); |
| 422 | } | 439 | } |
| 440 | |||
| 441 | if (balPackageInfoSymbol.DisplayFilesInUseDialogCondition != null) | ||
| 442 | { | ||
| 443 | this.Messaging.Write(BalWarnings.IuibaPrimaryPackageDisplayFilesInUseDialogCondition(packageSymbol.SourceLineNumbers)); | ||
| 444 | } | ||
| 423 | } | 445 | } |
| 424 | 446 | ||
| 425 | private void VerifyOverridableVariables(IntermediateSection section) | 447 | private void VerifyOverridableVariables(IntermediateSection section) |
diff --git a/src/ext/Bal/wixext/BalCompiler.cs b/src/ext/Bal/wixext/BalCompiler.cs index 35c86233..b7d5f679 100644 --- a/src/ext/Bal/wixext/BalCompiler.cs +++ b/src/ext/Bal/wixext/BalCompiler.cs | |||
| @@ -200,6 +200,20 @@ namespace WixToolset.BootstrapperApplications | |||
| 200 | break; | 200 | break; |
| 201 | } | 201 | } |
| 202 | break; | 202 | break; |
| 203 | case "DisplayFilesInUseDialogCondition": | ||
| 204 | switch (parentElement.Name.LocalName) | ||
| 205 | { | ||
| 206 | case "MsiPackage": | ||
| 207 | case "MspPackage": | ||
| 208 | var displayFilesInUseDialogCondition = this.ParseHelper.GetAttributeValue(sourceLineNumbers, attribute); | ||
| 209 | var packageInfo = this.GetBalPackageInfoSymbol(section, sourceLineNumbers, packageId); | ||
| 210 | packageInfo.DisplayFilesInUseDialogCondition = displayFilesInUseDialogCondition; | ||
| 211 | break; | ||
| 212 | default: | ||
| 213 | this.ParseHelper.UnexpectedAttribute(parentElement, attribute); | ||
| 214 | break; | ||
| 215 | } | ||
| 216 | break; | ||
| 203 | case "PrimaryPackageType": | 217 | case "PrimaryPackageType": |
| 204 | { | 218 | { |
| 205 | var primaryPackageType = BalPrimaryPackageType.None; | 219 | var primaryPackageType = BalPrimaryPackageType.None; |
diff --git a/src/ext/Bal/wixext/BalWarnings.cs b/src/ext/Bal/wixext/BalWarnings.cs index 8c5d892f..f86837f9 100644 --- a/src/ext/Bal/wixext/BalWarnings.cs +++ b/src/ext/Bal/wixext/BalWarnings.cs | |||
| @@ -23,6 +23,11 @@ namespace WixToolset.BootstrapperApplications | |||
| 23 | return Message(sourceLineNumbers, Ids.IuibaPrimaryPackageDisplayInternalUICondition, "WixInternalUIBootstrapperApplication ignores DisplayInternalUICondition for the primary package so that the MSI UI is always shown."); | 23 | return Message(sourceLineNumbers, Ids.IuibaPrimaryPackageDisplayInternalUICondition, "WixInternalUIBootstrapperApplication ignores DisplayInternalUICondition for the primary package so that the MSI UI is always shown."); |
| 24 | } | 24 | } |
| 25 | 25 | ||
| 26 | public static Message IuibaPrimaryPackageDisplayFilesInUseDialogCondition(SourceLineNumber sourceLineNumbers) | ||
| 27 | { | ||
| 28 | return Message(sourceLineNumbers, Ids.IuibaPrimaryPackageDisplayFilesInUseDialogCondition, "WixInternalUIBootstrapperApplication ignores DisplayFilesInUseDialogCondition for the primary package so that the MSI UI is always shown."); | ||
| 29 | } | ||
| 30 | |||
| 26 | public static Message IuibaPrimaryPackageInstallCondition(SourceLineNumber sourceLineNumbers) | 31 | public static Message IuibaPrimaryPackageInstallCondition(SourceLineNumber sourceLineNumbers) |
| 27 | { | 32 | { |
| 28 | return Message(sourceLineNumbers, Ids.IuibaPrimaryPackageInstallCondition, "WixInternalUIBootstrapperApplication ignores InstallCondition for the primary package so that the MSI UI is always shown."); | 33 | return Message(sourceLineNumbers, Ids.IuibaPrimaryPackageInstallCondition, "WixInternalUIBootstrapperApplication ignores InstallCondition for the primary package so that the MSI UI is always shown."); |
| @@ -56,6 +61,7 @@ namespace WixToolset.BootstrapperApplications | |||
| 56 | IuibaPrimaryPackageDisplayInternalUICondition = 6504, | 61 | IuibaPrimaryPackageDisplayInternalUICondition = 6504, |
| 57 | IuibaPrereqPackageAfterPrimaryPackage = 6505, | 62 | IuibaPrereqPackageAfterPrimaryPackage = 6505, |
| 58 | DeprecatedBAFactoryAssemblyAttribute = 6506, | 63 | DeprecatedBAFactoryAssemblyAttribute = 6506, |
| 64 | IuibaPrimaryPackageDisplayFilesInUseDialogCondition = 6507, | ||
| 59 | } | 65 | } |
| 60 | } | 66 | } |
| 61 | } | 67 | } |
diff --git a/src/ext/Bal/wixext/Symbols/WixBalPackageInfoSymbol.cs b/src/ext/Bal/wixext/Symbols/WixBalPackageInfoSymbol.cs index e2636d33..6e90c2b9 100644 --- a/src/ext/Bal/wixext/Symbols/WixBalPackageInfoSymbol.cs +++ b/src/ext/Bal/wixext/Symbols/WixBalPackageInfoSymbol.cs | |||
| @@ -14,6 +14,7 @@ namespace WixToolset.BootstrapperApplications | |||
| 14 | new IntermediateFieldDefinition(nameof(WixBalPackageInfoSymbolFields.PackageId), IntermediateFieldType.String), | 14 | new IntermediateFieldDefinition(nameof(WixBalPackageInfoSymbolFields.PackageId), IntermediateFieldType.String), |
| 15 | new IntermediateFieldDefinition(nameof(WixBalPackageInfoSymbolFields.DisplayInternalUICondition), IntermediateFieldType.String), | 15 | new IntermediateFieldDefinition(nameof(WixBalPackageInfoSymbolFields.DisplayInternalUICondition), IntermediateFieldType.String), |
| 16 | new IntermediateFieldDefinition(nameof(WixBalPackageInfoSymbolFields.PrimaryPackageType), IntermediateFieldType.Number), | 16 | new IntermediateFieldDefinition(nameof(WixBalPackageInfoSymbolFields.PrimaryPackageType), IntermediateFieldType.Number), |
| 17 | new IntermediateFieldDefinition(nameof(WixBalPackageInfoSymbolFields.DisplayFilesInUseDialogCondition), IntermediateFieldType.String), | ||
| 17 | }, | 18 | }, |
| 18 | typeof(WixBalPackageInfoSymbol)); | 19 | typeof(WixBalPackageInfoSymbol)); |
| 19 | } | 20 | } |
| @@ -28,6 +29,7 @@ namespace WixToolset.BootstrapperApplications.Symbols | |||
| 28 | PackageId, | 29 | PackageId, |
| 29 | DisplayInternalUICondition, | 30 | DisplayInternalUICondition, |
| 30 | PrimaryPackageType, | 31 | PrimaryPackageType, |
| 32 | DisplayFilesInUseDialogCondition, | ||
| 31 | } | 33 | } |
| 32 | 34 | ||
| 33 | public enum BalPrimaryPackageType | 35 | public enum BalPrimaryPackageType |
| @@ -68,5 +70,11 @@ namespace WixToolset.BootstrapperApplications.Symbols | |||
| 68 | get => (BalPrimaryPackageType)this.Fields[(int)WixBalPackageInfoSymbolFields.PrimaryPackageType].AsNumber(); | 70 | get => (BalPrimaryPackageType)this.Fields[(int)WixBalPackageInfoSymbolFields.PrimaryPackageType].AsNumber(); |
| 69 | set => this.Set((int)WixBalPackageInfoSymbolFields.PrimaryPackageType, (int)value); | 71 | set => this.Set((int)WixBalPackageInfoSymbolFields.PrimaryPackageType, (int)value); |
| 70 | } | 72 | } |
| 73 | |||
| 74 | public string DisplayFilesInUseDialogCondition | ||
| 75 | { | ||
| 76 | get => this.Fields[(int)WixBalPackageInfoSymbolFields.DisplayFilesInUseDialogCondition].AsString(); | ||
| 77 | set => this.Set((int)WixBalPackageInfoSymbolFields.DisplayFilesInUseDialogCondition, value); | ||
| 78 | } | ||
| 71 | } | 79 | } |
| 72 | } | 80 | } |
