aboutsummaryrefslogtreecommitdiff
path: root/src/WixToolset.Core.WindowsInstaller/Bind/OptimizeFileFacadesOrderCommand.cs
diff options
context:
space:
mode:
authorRob Mensching <rob@firegiant.com>2020-06-15 16:07:45 -0700
committerRob Mensching <rob@firegiant.com>2020-06-16 12:15:13 -0700
commit678c92c50c6fb7aa9a093f0d74d4f92742abd5e8 (patch)
treeef4d007b74e56734a5258e2235988fbc0ef6996f /src/WixToolset.Core.WindowsInstaller/Bind/OptimizeFileFacadesOrderCommand.cs
parent3fb3475b278803576badecfbe8015760de2e7414 (diff)
downloadwix-678c92c50c6fb7aa9a093f0d74d4f92742abd5e8.tar.gz
wix-678c92c50c6fb7aa9a093f0d74d4f92742abd5e8.tar.bz2
wix-678c92c50c6fb7aa9a093f0d74d4f92742abd5e8.zip
Reorganize media assignment to correctly place facade order optimization
Diffstat (limited to 'src/WixToolset.Core.WindowsInstaller/Bind/OptimizeFileFacadesOrderCommand.cs')
-rw-r--r--src/WixToolset.Core.WindowsInstaller/Bind/OptimizeFileFacadesOrderCommand.cs38
1 files changed, 38 insertions, 0 deletions
diff --git a/src/WixToolset.Core.WindowsInstaller/Bind/OptimizeFileFacadesOrderCommand.cs b/src/WixToolset.Core.WindowsInstaller/Bind/OptimizeFileFacadesOrderCommand.cs
new file mode 100644
index 00000000..6943d345
--- /dev/null
+++ b/src/WixToolset.Core.WindowsInstaller/Bind/OptimizeFileFacadesOrderCommand.cs
@@ -0,0 +1,38 @@
1// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information.
2
3namespace WixToolset.Core.WindowsInstaller.Bind
4{
5 using System;
6 using System.Collections.Generic;
7 using WixToolset.Core.Bind;
8
9 internal class OptimizeFileFacadesOrderCommand
10 {
11 public OptimizeFileFacadesOrderCommand(List<FileFacade> fileFacades)
12 {
13 this.FileFacades = fileFacades;
14 }
15
16 public List<FileFacade> FileFacades { get; private set; }
17
18 public List<FileFacade> Execute()
19 {
20 this.FileFacades.Sort(FileFacadeOptimizer.Instance);
21
22 return this.FileFacades;
23 }
24
25 private class FileFacadeOptimizer : IComparer<FileFacade>
26 {
27 public static readonly FileFacadeOptimizer Instance = new FileFacadeOptimizer();
28
29 public int Compare(FileFacade x, FileFacade y)
30 {
31 // TODO: Sort these facades even smarter by directory path and component id
32 // and maybe file size or file extension and other creative ideas to
33 // get optimal install speed out of MSI.
34 return String.Compare(x.ComponentRef, y.ComponentRef, StringComparison.Ordinal);
35 }
36 }
37 }
38}