diff options
author | Sean Hall <r.sean.hall@gmail.com> | 2021-05-19 10:21:50 -0500 |
---|---|---|
committer | Sean Hall <r.sean.hall@gmail.com> | 2021-05-19 12:15:13 -0500 |
commit | d5a183de3ba20d7baddf5e57e3c9605658524e32 (patch) | |
tree | a52177d64414ab1e157dd83f0681138d2ab99954 | |
parent | 2c085b3aa89150fff9a0ea6df2cde0ce56e3066d (diff) | |
download | wix-d5a183de3ba20d7baddf5e57e3c9605658524e32.tar.gz wix-d5a183de3ba20d7baddf5e57e3c9605658524e32.tar.bz2 wix-d5a183de3ba20d7baddf5e57e3c9605658524e32.zip |
Try to make building Bal.wixext and IntegrationBurn faster.
6 files changed, 33 insertions, 43 deletions
diff --git a/src/ext/Bal/test/examples/Wix.Build.props b/src/ext/Bal/test/examples/Wix.Build.props index aad94bb6..78ad462f 100644 --- a/src/ext/Bal/test/examples/Wix.Build.props +++ b/src/ext/Bal/test/examples/Wix.Build.props | |||
@@ -6,5 +6,6 @@ | |||
6 | <TargetExt>.exe</TargetExt> | 6 | <TargetExt>.exe</TargetExt> |
7 | <HarvestDirectoryAdditionalOptions>-generate payloadgroup</HarvestDirectoryAdditionalOptions> | 7 | <HarvestDirectoryAdditionalOptions>-generate payloadgroup</HarvestDirectoryAdditionalOptions> |
8 | <OutputPath>$(OutputPath)examples\</OutputPath> | 8 | <OutputPath>$(OutputPath)examples\</OutputPath> |
9 | <DefaultCompressionLevel>None</DefaultCompressionLevel> | ||
9 | </PropertyGroup> | 10 | </PropertyGroup> |
10 | </Project> | 11 | </Project> |
diff --git a/src/test/burn/README.md b/src/test/burn/README.md index 6c6e0dd9..1f2168cf 100644 --- a/src/test/burn/README.md +++ b/src/test/burn/README.md | |||
@@ -1,6 +1,6 @@ | |||
1 | # integration | 1 | # integration |
2 | 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 | 4 | ||
5 | ## Running tests | 5 | ## Running tests |
6 | 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. | 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. | 10 | They should be run on a VM instead, where you can easily roll back. |
11 | 11 | ||
12 | 1. Run appveyor.cmd to build everything (the tests will refuse to run). | 12 | 1. Run build.cmd to build everything (the tests will not automatically run). |
13 | 1. Copy the build\Release\netcoreapp3.1 folder to your VM. | 13 | 1. Copy the build\IntegrationBurn\Debug\netcoreapp3.1 folder to your VM. |
14 | 1. Open a command prompt and navigate to the netcoreapp3.1 folder. | 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. | 15 | 1. Run the runtests.cmd file to run the tests. |
16 | 16 | ||
17 | You can modify the runtests.cmd to run specific tests. | 17 | You can modify the runtests.cmd to run specific tests. |
18 | For example, the following line runs only the specified test: | 18 | For example, the following line runs only the specified test: |
19 | 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 | 21 | ||
22 | The VM must have: | 22 | The VM must have: |
23 | 1. x64 .NET Core SDK of 5.0 or later (for the test runner) | 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) | 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) | 25 | 1. x86 .NET Core Desktop Runtime of 5.0 or later (for the .NET Core TestBA) |
26 | 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 | |||
40 | ## Building with local changes | 27 | ## Building with local changes |
41 | 28 | ||
42 | The micro repo model makes this very difficult and painful. | 29 | The current build process will poison your NuGet package cache, so you may have to run the following command to clear it: |
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: | ||
49 | 30 | ||
50 | > nuget locals all -clear \ No newline at end of file | 31 | > nuget locals all -clear \ No newline at end of file |
diff --git a/src/wix/WixToolset.Core.Burn/Bundles/CreateBurnManifestCommand.cs b/src/wix/WixToolset.Core.Burn/Bundles/CreateBurnManifestCommand.cs index 77f20e5c..2e53a948 100644 --- a/src/wix/WixToolset.Core.Burn/Bundles/CreateBurnManifestCommand.cs +++ b/src/wix/WixToolset.Core.Burn/Bundles/CreateBurnManifestCommand.cs | |||
@@ -691,12 +691,8 @@ namespace WixToolset.Core.Burn.Bundles | |||
691 | 691 | ||
692 | writer.WriteStartElement("Payload"); | 692 | writer.WriteStartElement("Payload"); |
693 | 693 | ||
694 | // TODO: The engine should be updated to not require FileSize, Hash, or Packaging for UX payloads since the values are never used. | ||
695 | writer.WriteAttributeString("Id", payload.Id.Id); | 694 | writer.WriteAttributeString("Id", payload.Id.Id); |
696 | writer.WriteAttributeString("FilePath", payload.Name); | 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"); | ||
700 | writer.WriteAttributeString("SourcePath", payload.EmbeddedId); | 696 | writer.WriteAttributeString("SourcePath", payload.EmbeddedId); |
701 | 697 | ||
702 | writer.WriteEndElement(); | 698 | writer.WriteEndElement(); |
diff --git a/src/wix/WixToolset.Core.Burn/Bundles/ProcessMsiPackageCommand.cs b/src/wix/WixToolset.Core.Burn/Bundles/ProcessMsiPackageCommand.cs index 18c1ddf8..d42a591a 100644 --- a/src/wix/WixToolset.Core.Burn/Bundles/ProcessMsiPackageCommand.cs +++ b/src/wix/WixToolset.Core.Burn/Bundles/ProcessMsiPackageCommand.cs | |||
@@ -393,7 +393,6 @@ namespace WixToolset.Core.Burn.Bundles | |||
393 | Compressed = packagePayload.Compressed, | 393 | Compressed = packagePayload.Compressed, |
394 | UnresolvedSourceFile = cabinetName, | 394 | UnresolvedSourceFile = cabinetName, |
395 | ContainerRef = packagePayload.ContainerRef, | 395 | ContainerRef = packagePayload.ContainerRef, |
396 | ContentFile = true, | ||
397 | DownloadUrl = packagePayload.DownloadUrl, | 396 | DownloadUrl = packagePayload.DownloadUrl, |
398 | Packaging = packagePayload.Packaging, | 397 | Packaging = packagePayload.Packaging, |
399 | ParentPackagePayloadRef = packagePayload.Id.Id, | 398 | ParentPackagePayloadRef = packagePayload.Id.Id, |
@@ -462,7 +461,6 @@ namespace WixToolset.Core.Burn.Bundles | |||
462 | Compressed = packagePayload.Compressed, | 461 | Compressed = packagePayload.Compressed, |
463 | UnresolvedSourceFile = name, | 462 | UnresolvedSourceFile = name, |
464 | ContainerRef = packagePayload.ContainerRef, | 463 | ContainerRef = packagePayload.ContainerRef, |
465 | ContentFile = true, | ||
466 | DownloadUrl = packagePayload.DownloadUrl, | 464 | DownloadUrl = packagePayload.DownloadUrl, |
467 | Packaging = packagePayload.Packaging, | 465 | Packaging = packagePayload.Packaging, |
468 | ParentPackagePayloadRef = packagePayload.Id.Id, | 466 | ParentPackagePayloadRef = packagePayload.Id.Id, |
diff --git a/src/wix/WixToolset.Core.Burn/Bundles/ProcessPayloadsCommand.cs b/src/wix/WixToolset.Core.Burn/Bundles/ProcessPayloadsCommand.cs index fa70251a..92fe86f2 100644 --- a/src/wix/WixToolset.Core.Burn/Bundles/ProcessPayloadsCommand.cs +++ b/src/wix/WixToolset.Core.Burn/Bundles/ProcessPayloadsCommand.cs | |||
@@ -54,23 +54,37 @@ namespace WixToolset.Core.Burn.Bundles | |||
54 | 54 | ||
55 | this.UpdatePayloadPackagingType(payload); | 55 | this.UpdatePayloadPackagingType(payload); |
56 | 56 | ||
57 | if (!this.PayloadHarvester.HarvestStandardInformation(payload)) | 57 | if (payload.ContainerRef == BurnConstants.BurnUXContainerName) |
58 | { | 58 | { |
59 | // Remote payloads obviously cannot be embedded. | 59 | Debug.Assert(PackagingType.Embedded == payload.Packaging); |
60 | 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 | } | ||
61 | } | 67 | } |
62 | else // not a remote payload so we have a lot more to update. | 68 | else |
63 | { | 69 | { |
64 | // External payloads need to be transfered. | 70 | if (!this.PayloadHarvester.HarvestStandardInformation(payload)) |
65 | if (PackagingType.External == payload.Packaging) | ||
66 | { | 71 | { |
67 | var transfer = this.BackendHelper.CreateFileTransfer(sourceFile.Path, Path.Combine(this.LayoutDirectory, payload.Name), false, payload.SourceLineNumbers); | 72 | // Remote payloads obviously cannot be embedded. |
68 | fileTransfers.Add(transfer); | 73 | Debug.Assert(PackagingType.Embedded != payload.Packaging); |
69 | } | 74 | } |
70 | 75 | else // not a remote payload so we have a lot more to update. | |
71 | if (payload.ContentFile) | ||
72 | { | 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 | } | ||
74 | } | 88 | } |
75 | } | 89 | } |
76 | } | 90 | } |
diff --git a/src/wix/test/WixToolsetTest.CoreIntegration/BundleManifestFixture.cs b/src/wix/test/WixToolsetTest.CoreIntegration/BundleManifestFixture.cs index 6d769bd6..19d0a2fc 100644 --- a/src/wix/test/WixToolsetTest.CoreIntegration/BundleManifestFixture.cs +++ b/src/wix/test/WixToolsetTest.CoreIntegration/BundleManifestFixture.cs | |||
@@ -219,7 +219,7 @@ namespace WixToolsetTest.CoreIntegration | |||
219 | { | 219 | { |
220 | { "Payload", new List<string> { "FileSize", "Hash", "SourcePath" } }, | 220 | { "Payload", new List<string> { "FileSize", "Hash", "SourcePath" } }, |
221 | }; | 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 | } | 223 | } |
224 | } | 224 | } |
225 | 225 | ||