diff options
| author | Sean Hall <r.sean.hall@gmail.com> | 2023-01-15 20:59:56 -0600 |
|---|---|---|
| committer | Sean Hall <r.sean.hall@gmail.com> | 2023-01-15 22:03:31 -0600 |
| commit | ecbaffc08239e061a7dbaa92ff3c72acd53a0bae (patch) | |
| tree | f6bf6660fc35b82085388ed489f4160c71ae68e1 /src | |
| parent | 32024b526d129534b017d4e932f08e6a6f015102 (diff) | |
| download | wix-ecbaffc08239e061a7dbaa92ff3c72acd53a0bae.tar.gz wix-ecbaffc08239e061a7dbaa92ff3c72acd53a0bae.tar.bz2 wix-ecbaffc08239e061a7dbaa92ff3c72acd53a0bae.zip | |
Write an error when the .NET Core BA is missing the BAFactoryAssembly.
7166
Diffstat (limited to 'src')
| -rw-r--r-- | src/ext/Bal/test/WixToolsetTest.Bal/BalExtensionFixture.cs | 29 | ||||
| -rw-r--r-- | src/ext/Bal/test/WixToolsetTest.Bal/TestData/Dncba/Bundle.wxs | 13 | ||||
| -rw-r--r-- | src/ext/Bal/wixext/BalBurnBackendExtension.cs | 6 | ||||
| -rw-r--r-- | src/ext/Bal/wixext/BalErrors.cs | 6 |
4 files changed, 52 insertions, 2 deletions
diff --git a/src/ext/Bal/test/WixToolsetTest.Bal/BalExtensionFixture.cs b/src/ext/Bal/test/WixToolsetTest.Bal/BalExtensionFixture.cs index 32ff42b5..57dbda9c 100644 --- a/src/ext/Bal/test/WixToolsetTest.Bal/BalExtensionFixture.cs +++ b/src/ext/Bal/test/WixToolsetTest.Bal/BalExtensionFixture.cs | |||
| @@ -185,6 +185,35 @@ namespace WixToolsetTest.Bal | |||
| 185 | } | 185 | } |
| 186 | 186 | ||
| 187 | [Fact] | 187 | [Fact] |
| 188 | public void CannotBuildUsingDncbaMissingBAFactoryPayload() | ||
| 189 | { | ||
| 190 | using (var fs = new DisposableFileSystem()) | ||
| 191 | { | ||
| 192 | var baseFolder = fs.GetFolder(); | ||
| 193 | var bundleFile = Path.Combine(baseFolder, "bin", "test.exe"); | ||
| 194 | var bundleSourceFolder = TestData.Get(@"TestData\Dncba"); | ||
| 195 | var intermediateFolder = Path.Combine(baseFolder, "obj"); | ||
| 196 | |||
| 197 | var compileResult = WixRunner.Execute(new[] | ||
| 198 | { | ||
| 199 | "build", | ||
| 200 | Path.Combine(bundleSourceFolder, "Bundle.wxs"), | ||
| 201 | "-ext", TestData.Get(@"WixToolset.Bal.wixext.dll"), | ||
| 202 | "-intermediateFolder", intermediateFolder, | ||
| 203 | "-o", bundleFile, | ||
| 204 | }); | ||
| 205 | WixAssert.CompareLineByLine(new[] | ||
| 206 | { | ||
| 207 | "The BA's entry point DLL must have bal:BAFactoryAssembly=\"yes\" when using the DotNetCoreBootstrapperApplicationHost.", | ||
| 208 | }, compileResult.Messages.Select(x => x.ToString()).ToArray()); | ||
| 209 | Assert.Equal(6818, compileResult.ExitCode); | ||
| 210 | |||
| 211 | Assert.False(File.Exists(bundleFile)); | ||
| 212 | Assert.False(File.Exists(Path.Combine(intermediateFolder, "test.exe"))); | ||
| 213 | } | ||
| 214 | } | ||
| 215 | |||
| 216 | [Fact] | ||
| 188 | public void CannotBuildUsingOverridableWrongCase() | 217 | public void CannotBuildUsingOverridableWrongCase() |
| 189 | { | 218 | { |
| 190 | using (var fs = new DisposableFileSystem()) | 219 | using (var fs = new DisposableFileSystem()) |
diff --git a/src/ext/Bal/test/WixToolsetTest.Bal/TestData/Dncba/Bundle.wxs b/src/ext/Bal/test/WixToolsetTest.Bal/TestData/Dncba/Bundle.wxs new file mode 100644 index 00000000..5b25da8c --- /dev/null +++ b/src/ext/Bal/test/WixToolsetTest.Bal/TestData/Dncba/Bundle.wxs | |||
| @@ -0,0 +1,13 @@ | |||
| 1 | <?xml version="1.0" encoding="utf-8"?> | ||
| 2 | <Wix xmlns="http://wixtoolset.org/schemas/v4/wxs" | ||
| 3 | xmlns:bal="http://wixtoolset.org/schemas/v4/wxs/bal"> | ||
| 4 | <Bundle Name="WixStdBa" Version="1.0.0.0" Manufacturer="Example Corporation" UpgradeCode="75D5D534-E177-4689-AAE9-CAC1C39002C2"> | ||
| 5 | <BootstrapperApplication> | ||
| 6 | <bal:WixDotNetCoreBootstrapperApplicationHost SelfContainedDeployment="yes" /> | ||
| 7 | <Payload SourceFile="runtimes\win-x86\native\wixnative.exe" /> | ||
| 8 | </BootstrapperApplication> | ||
| 9 | <Chain> | ||
| 10 | <ExePackage Permanent="yes" DetectCondition="none" SourceFile="runtimes\win-x86\native\wixnative.exe" /> | ||
| 11 | </Chain> | ||
| 12 | </Bundle> | ||
| 13 | </Wix> | ||
diff --git a/src/ext/Bal/wixext/BalBurnBackendExtension.cs b/src/ext/Bal/wixext/BalBurnBackendExtension.cs index a27ff739..be294131 100644 --- a/src/ext/Bal/wixext/BalBurnBackendExtension.cs +++ b/src/ext/Bal/wixext/BalBurnBackendExtension.cs | |||
| @@ -121,7 +121,7 @@ namespace WixToolset.Bal | |||
| 121 | 121 | ||
| 122 | if (isDNC) | 122 | if (isDNC) |
| 123 | { | 123 | { |
| 124 | this.FinalizeBAFactorySymbol(section); | 124 | this.FinalizeBAFactorySymbol(section, baSymbol); |
| 125 | } | 125 | } |
| 126 | 126 | ||
| 127 | if (isIuiBA || isStdBA || isMBA || isDNC) | 127 | if (isIuiBA || isStdBA || isMBA || isDNC) |
| @@ -135,11 +135,12 @@ namespace WixToolset.Bal | |||
| 135 | } | 135 | } |
| 136 | } | 136 | } |
| 137 | 137 | ||
| 138 | private void FinalizeBAFactorySymbol(IntermediateSection section) | 138 | private void FinalizeBAFactorySymbol(IntermediateSection section, WixBootstrapperApplicationDllSymbol baSymbol) |
| 139 | { | 139 | { |
| 140 | var factorySymbol = section.Symbols.OfType<WixBalBAFactoryAssemblySymbol>().SingleOrDefault(); | 140 | var factorySymbol = section.Symbols.OfType<WixBalBAFactoryAssemblySymbol>().SingleOrDefault(); |
| 141 | if (null == factorySymbol) | 141 | if (null == factorySymbol) |
| 142 | { | 142 | { |
| 143 | this.Messaging.Write(BalErrors.MissingDNCBAFactoryAssembly(baSymbol.SourceLineNumbers)); | ||
| 143 | return; | 144 | return; |
| 144 | } | 145 | } |
| 145 | 146 | ||
| @@ -148,6 +149,7 @@ namespace WixToolset.Bal | |||
| 148 | .SingleOrDefault(); | 149 | .SingleOrDefault(); |
| 149 | if (null == factoryPayloadSymbol) | 150 | if (null == factoryPayloadSymbol) |
| 150 | { | 151 | { |
| 152 | this.Messaging.Write(BalErrors.MissingDNCBAFactoryAssembly(factorySymbol.SourceLineNumbers)); | ||
| 151 | return; | 153 | return; |
| 152 | } | 154 | } |
| 153 | 155 | ||
diff --git a/src/ext/Bal/wixext/BalErrors.cs b/src/ext/Bal/wixext/BalErrors.cs index cde37143..2548b279 100644 --- a/src/ext/Bal/wixext/BalErrors.cs +++ b/src/ext/Bal/wixext/BalErrors.cs | |||
| @@ -43,6 +43,11 @@ namespace WixToolset.Bal | |||
| 43 | return Message(sourceLineNumbers, Ids.IuibaPrimaryPackageEnableFeatureSelection, "When using WixInternalUIBootstrapperApplication, primary packages must not have feature selection enabled because it interferes with the user selecting feature through the MSI UI."); | 43 | return Message(sourceLineNumbers, Ids.IuibaPrimaryPackageEnableFeatureSelection, "When using WixInternalUIBootstrapperApplication, primary packages must not have feature selection enabled because it interferes with the user selecting feature through the MSI UI."); |
| 44 | } | 44 | } |
| 45 | 45 | ||
| 46 | public static Message MissingDNCBAFactoryAssembly(SourceLineNumber sourceLineNumbers) | ||
| 47 | { | ||
| 48 | return Message(sourceLineNumbers, Ids.MissingDNCBAFactoryAssembly, "The BA's entry point DLL must have bal:BAFactoryAssembly=\"yes\" when using the DotNetCoreBootstrapperApplicationHost."); | ||
| 49 | } | ||
| 50 | |||
| 46 | public static Message MissingDNCPrereq() | 51 | public static Message MissingDNCPrereq() |
| 47 | { | 52 | { |
| 48 | return Message(null, Ids.MissingDNCPrereq, "There must be at least one package with bal:PrereqPackage=\"yes\" when using the DotNetCoreBootstrapperApplicationHost with SelfContainedDeployment set to \"no\"."); | 53 | return Message(null, Ids.MissingDNCPrereq, "There must be at least one package with bal:PrereqPackage=\"yes\" when using the DotNetCoreBootstrapperApplicationHost with SelfContainedDeployment set to \"no\"."); |
| @@ -116,6 +121,7 @@ namespace WixToolset.Bal | |||
| 116 | IuibaPrimaryPackageEnableFeatureSelection = 6815, | 121 | IuibaPrimaryPackageEnableFeatureSelection = 6815, |
| 117 | OverridableVariableCollision = 6816, | 122 | OverridableVariableCollision = 6816, |
| 118 | OverridableVariableCollision2 = 6817, | 123 | OverridableVariableCollision2 = 6817, |
| 124 | MissingDNCBAFactoryAssembly = 6818, | ||
| 119 | } | 125 | } |
| 120 | } | 126 | } |
| 121 | } | 127 | } |
