Try to make building Bal.wixext and IntegrationBurn faster.
Sean Hall committed
May 19, 2021 at 10:21 UTC
d5a183de3ba20d7baddf5e57e3c9605658524e32
6 files changed
+33
-43
src/ext/Bal/test/examples/Wix.Build.props
+1
@@ -6,5 +6,6 @@
6
<TargetExt>.exe</TargetExt>
7
<HarvestDirectoryAdditionalOptions>-generate payloadgroup</HarvestDirectoryAdditionalOptions>
8
<OutputPath>$(OutputPath)examples\</OutputPath>
9
+ <DefaultCompressionLevel>None</DefaultCompressionLevel>
10
</PropertyGroup>
11
</Project>
src/test/burn/README.md
+6
-25
@@ -1,6 +1,6 @@
1
# integration
2
3
-This repo is for building installers, and then executing xunit tests that run them and verify that they worked.
3
+This layer is for building installers, and then executing xunit tests that run them and verify that they worked.
4
5
## Running tests
6
@@ -9,42 +9,23 @@ Depending on who you talk to, these are integration or system-level or end-to-en
9
They modify machine state so it's strongly recommended *not* to run these tests on your dev box.
10
They should be run on a VM instead, where you can easily roll back.
11
12
-1. Run appveyor.cmd to build everything (the tests will refuse to run).
13
-1. Copy the build\Release\netcoreapp3.1 folder to your VM.
14
-1. Open a command prompt and navigate to the netcoreapp3.1 folder.
12
+1. Run build.cmd to build everything (the tests will not automatically run).
13
+1. Copy the build\IntegrationBurn\Debug\netcoreapp3.1 folder to your VM.
14
+1. Open an elevated command prompt and navigate to the netcoreapp3.1 folder.
15
1. Run the runtests.cmd file to run the tests.
16
17
You can modify the runtests.cmd to run specific tests.
18
For example, the following line runs only the specified test:
19
20
-> dotnet test --filter WixToolsetTest.BurnE2E.BasicFunctionalityTests.CanInstallAndUninstallSimpleBundle WixToolsetTest.BurnE2E.dll
20
+> dotnet test --filter WixToolsetTest.BurnE2E.BasicFunctionalityTests.CanInstallAndUninstallSimpleBundle_x86_wixstdba WixToolsetTest.BurnE2E.dll
21
22
The VM must have:
23
1. x64 .NET Core SDK of 5.0 or later (for the test runner)
24
1. Any version of .NET Framework (for the .NET Framework TestBA)
25
1. x86 .NET Core Desktop Runtime of 5.0 or later (for the .NET Core TestBA)
26
27
-## Updating dependencies
28
-
29
-Use the `updatepackage.ps1` script from https://github.com/wixtoolset/Home.
30
-For example:
31
-
32
-* updatepackage.ps1 -TargetFolder path\to\repo -PackageName WixToolset.Bal.wixext -NewVersion 4.0.91
33
-* updatepackage.ps1 -TargetFolder path\to\repo -PackageName WixToolset.Data -NewVersion 4.0.199
34
-* updatepackage.ps1 -TargetFolder path\to\repo -PackageName WixToolset.Dependency.wixext -NewVersion 4.0.25
35
-* updatepackage.ps1 -TargetFolder path\to\repo -PackageName WixToolset.Mba.Core -NewVersion 4.0.52
36
-* updatepackage.ps1 -TargetFolder path\to\repo -PackageName WixToolset.NetFx.wixext -NewVersion 4.0.67
37
-* updatepackage.ps1 -TargetFolder path\to\repo -PackageName WixToolset.Util.wixext -NewVersion 4.0.82
38
-* updatepackage.ps1 -TargetFolder path\to\repo -PackageName WixToolset.Sdk -NewVersion 4.0.0-build-0204
39
-
27
## Building with local changes
28
42
-The micro repo model makes this very difficult and painful.
43
-The basic idea is to make your changes in each individual repo on the master branch (to get a stable version), commit, and then use appveyor.cmd to build the nuget package.
44
-Put your custom nuget packages into a folder, and modify each repo's nuget.config with an entry to that folder.
45
-
46
-Alternatively, go into the NuGet package cache (%USERPROFILE%\.nuget\packages) and replace the official binaries with your locally built binaries.
47
-
48
-Both of those approaches will poison your NuGet package cache, so you probably will want to run the following command to clear it when you're done:
29
+The current build process will poison your NuGet package cache, so you may have to run the following command to clear it:
30
31
> nuget locals all -clear
\ No newline at end of file
src/wix/WixToolset.Core.Burn/Bundles/CreateBurnManifestCommand.cs
-4
@@ -691,12 +691,8 @@ namespace WixToolset.Core.Burn.Bundles
691
692
writer.WriteStartElement("Payload");
693
694
- // TODO: The engine should be updated to not require FileSize, Hash, or Packaging for UX payloads since the values are never used.
694
writer.WriteAttributeString("Id", payload.Id.Id);
695
writer.WriteAttributeString("FilePath", payload.Name);
697
- writer.WriteAttributeString("FileSize", payload.FileSize.Value.ToString(CultureInfo.InvariantCulture));
698
- writer.WriteAttributeString("Hash", payload.Hash);
699
- writer.WriteAttributeString("Packaging", "embedded");
696
writer.WriteAttributeString("SourcePath", payload.EmbeddedId);
697
698
writer.WriteEndElement();
src/wix/WixToolset.Core.Burn/Bundles/ProcessMsiPackageCommand.cs
-2
@@ -393,7 +393,6 @@ namespace WixToolset.Core.Burn.Bundles
393
Compressed = packagePayload.Compressed,
394
UnresolvedSourceFile = cabinetName,
395
ContainerRef = packagePayload.ContainerRef,
396
- ContentFile = true,
396
DownloadUrl = packagePayload.DownloadUrl,
397
Packaging = packagePayload.Packaging,
398
ParentPackagePayloadRef = packagePayload.Id.Id,
@@ -462,7 +461,6 @@ namespace WixToolset.Core.Burn.Bundles
461
Compressed = packagePayload.Compressed,
462
UnresolvedSourceFile = name,
463
ContainerRef = packagePayload.ContainerRef,
465
- ContentFile = true,
464
DownloadUrl = packagePayload.DownloadUrl,
465
Packaging = packagePayload.Packaging,
466
ParentPackagePayloadRef = packagePayload.Id.Id,
src/wix/WixToolset.Core.Burn/Bundles/ProcessPayloadsCommand.cs
+25
-11
@@ -54,23 +54,37 @@ namespace WixToolset.Core.Burn.Bundles
54
55
this.UpdatePayloadPackagingType(payload);
56
57
- if (!this.PayloadHarvester.HarvestStandardInformation(payload))
57
+ if (payload.ContainerRef == BurnConstants.BurnUXContainerName)
58
{
59
- // Remote payloads obviously cannot be embedded.
60
- Debug.Assert(PackagingType.Embedded != payload.Packaging);
59
+ Debug.Assert(PackagingType.Embedded == payload.Packaging);
60
+
61
+ // Nothing needs to be harvested because the engine only uses Id, Name (FilePath), and EmbeddedId (SourcePath).
62
+
63
+ if (payload.ContentFile)
64
+ {
65
+ trackedFiles.Add(this.BackendHelper.TrackFile(sourceFile.Path, TrackedFileType.Input, payload.SourceLineNumbers));
66
+ }
67
}
62
- else // not a remote payload so we have a lot more to update.
68
+ else
69
{
64
- // External payloads need to be transfered.
65
- if (PackagingType.External == payload.Packaging)
70
+ if (!this.PayloadHarvester.HarvestStandardInformation(payload))
71
{
67
- var transfer = this.BackendHelper.CreateFileTransfer(sourceFile.Path, Path.Combine(this.LayoutDirectory, payload.Name), false, payload.SourceLineNumbers);
68
- fileTransfers.Add(transfer);
72
+ // Remote payloads obviously cannot be embedded.
73
+ Debug.Assert(PackagingType.Embedded != payload.Packaging);
74
}
70
-
71
- if (payload.ContentFile)
75
+ else // not a remote payload so we have a lot more to update.
76
{
73
- trackedFiles.Add(this.BackendHelper.TrackFile(sourceFile.Path, TrackedFileType.Input, payload.SourceLineNumbers));
77
+ // External payloads need to be transfered.
78
+ if (PackagingType.External == payload.Packaging)
79
+ {
80
+ var transfer = this.BackendHelper.CreateFileTransfer(sourceFile.Path, Path.Combine(this.LayoutDirectory, payload.Name), false, payload.SourceLineNumbers);
81
+ fileTransfers.Add(transfer);
82
+ }
83
+
84
+ if (payload.ContentFile)
85
+ {
86
+ trackedFiles.Add(this.BackendHelper.TrackFile(sourceFile.Path, TrackedFileType.Input, payload.SourceLineNumbers));
87
+ }
88
}
89
}
90
}
src/wix/test/WixToolsetTest.CoreIntegration/BundleManifestFixture.cs
+1
-1
@@ -219,7 +219,7 @@ namespace WixToolsetTest.CoreIntegration
219
{
220
{ "Payload", new List<string> { "FileSize", "Hash", "SourcePath" } },
221
};
222
- Assert.Equal("<Payload Id='ExampleBext' FilePath='fakebext.dll' FileSize='*' Hash='*' Packaging='embedded' SourcePath='*' />", bundleExtensionPayloads[0].GetTestXml(ignored));
222
+ Assert.Equal("<Payload Id='ExampleBext' FilePath='fakebext.dll' SourcePath='*' />", bundleExtensionPayloads[0].GetTestXml(ignored));
223
}
224
}
225