aboutsummaryrefslogtreecommitdiff
path: root/src/WixToolset.Core.WindowsInstaller/Differ.cs
diff options
context:
space:
mode:
authorRob Mensching <rob@firegiant.com>2017-12-19 12:25:40 -0800
committerRob Mensching <rob@firegiant.com>2017-12-19 12:25:40 -0800
commit155a6e96346e0cb3d9ab6f5372fa29b46ebaee89 (patch)
tree59d1f151bfde8068b6014b05b5c8cfea3402c974 /src/WixToolset.Core.WindowsInstaller/Differ.cs
parent6f1665ed759b31bd095f186f9239232c653597cd (diff)
downloadwix-155a6e96346e0cb3d9ab6f5372fa29b46ebaee89.tar.gz
wix-155a6e96346e0cb3d9ab6f5372fa29b46ebaee89.tar.bz2
wix-155a6e96346e0cb3d9ab6f5372fa29b46ebaee89.zip
Integrate simplified message handling
Diffstat (limited to 'src/WixToolset.Core.WindowsInstaller/Differ.cs')
-rw-r--r--src/WixToolset.Core.WindowsInstaller/Differ.cs30
1 files changed, 12 insertions, 18 deletions
diff --git a/src/WixToolset.Core.WindowsInstaller/Differ.cs b/src/WixToolset.Core.WindowsInstaller/Differ.cs
index 9bbde302..7cc204f9 100644
--- a/src/WixToolset.Core.WindowsInstaller/Differ.cs
+++ b/src/WixToolset.Core.WindowsInstaller/Differ.cs
@@ -10,26 +10,29 @@ namespace WixToolset.Core.WindowsInstaller
10 using WixToolset.Data.WindowsInstaller; 10 using WixToolset.Data.WindowsInstaller;
11 using WixToolset.Data.WindowsInstaller.Rows; 11 using WixToolset.Data.WindowsInstaller.Rows;
12 using WixToolset.Extensibility; 12 using WixToolset.Extensibility;
13 using WixToolset.Extensibility.Services;
13 using WixToolset.Msi; 14 using WixToolset.Msi;
14 15
15 /// <summary> 16 /// <summary>
16 /// Creates a transform by diffing two outputs. 17 /// Creates a transform by diffing two outputs.
17 /// </summary> 18 /// </summary>
18 public sealed class Differ : IMessageHandler 19 public sealed class Differ
19 { 20 {
20 private List<IInspectorExtension> inspectorExtensions; 21 private List<IInspectorExtension> inspectorExtensions;
21 private bool showPedanticMessages; 22 private bool showPedanticMessages;
22 private bool suppressKeepingSpecialRows; 23 private bool suppressKeepingSpecialRows;
23 private bool preserveUnchangedRows; 24 private bool preserveUnchangedRows;
24 private const char sectionDelimiter = '/'; 25 private const char sectionDelimiter = '/';
26 private readonly IMessaging messaging;
25 private SummaryInformationStreams transformSummaryInfo; 27 private SummaryInformationStreams transformSummaryInfo;
26 28
27 /// <summary> 29 /// <summary>
28 /// Instantiates a new Differ class. 30 /// Instantiates a new Differ class.
29 /// </summary> 31 /// </summary>
30 public Differ() 32 public Differ(IMessaging messaging)
31 { 33 {
32 this.inspectorExtensions = new List<IInspectorExtension>(); 34 this.inspectorExtensions = new List<IInspectorExtension>();
35 this.messaging = messaging;
33 } 36 }
34 37
35 /// <summary> 38 /// <summary>
@@ -99,17 +102,17 @@ namespace WixToolset.Core.WindowsInstaller
99 // compare the codepages 102 // compare the codepages
100 if (targetOutput.Codepage != updatedOutput.Codepage && 0 == (TransformFlags.ErrorChangeCodePage & validationFlags)) 103 if (targetOutput.Codepage != updatedOutput.Codepage && 0 == (TransformFlags.ErrorChangeCodePage & validationFlags))
101 { 104 {
102 this.OnMessage(WixErrors.OutputCodepageMismatch(targetOutput.SourceLineNumbers, targetOutput.Codepage, updatedOutput.Codepage)); 105 this.messaging.Write(ErrorMessages.OutputCodepageMismatch(targetOutput.SourceLineNumbers, targetOutput.Codepage, updatedOutput.Codepage));
103 if (null != updatedOutput.SourceLineNumbers) 106 if (null != updatedOutput.SourceLineNumbers)
104 { 107 {
105 this.OnMessage(WixErrors.OutputCodepageMismatch2(updatedOutput.SourceLineNumbers)); 108 this.messaging.Write(ErrorMessages.OutputCodepageMismatch2(updatedOutput.SourceLineNumbers));
106 } 109 }
107 } 110 }
108 111
109 // compare the output types 112 // compare the output types
110 if (targetOutput.Type != updatedOutput.Type) 113 if (targetOutput.Type != updatedOutput.Type)
111 { 114 {
112 throw new WixException(WixErrors.OutputTypeMismatch(targetOutput.SourceLineNumbers, targetOutput.Type.ToString(), updatedOutput.Type.ToString())); 115 throw new WixException(ErrorMessages.OutputTypeMismatch(targetOutput.SourceLineNumbers, targetOutput.Type.ToString(), updatedOutput.Type.ToString()));
113 } 116 }
114 117
115 // compare the contents of the tables 118 // compare the contents of the tables
@@ -160,15 +163,6 @@ namespace WixToolset.Core.WindowsInstaller
160 } 163 }
161 164
162 /// <summary> 165 /// <summary>
163 /// Sends a message to the message delegate if there is one.
164 /// </summary>
165 /// <param name="mea">Message event arguments.</param>
166 public void OnMessage(MessageEventArgs e)
167 {
168 Messaging.Instance.OnMessage(e);
169 }
170
171 /// <summary>
172 /// Add a row to the <paramref name="index"/> using the primary key. 166 /// Add a row to the <paramref name="index"/> using the primary key.
173 /// </summary> 167 /// </summary>
174 /// <param name="index">The indexed rows.</param> 168 /// <param name="index">The indexed rows.</param>
@@ -210,7 +204,7 @@ namespace WixToolset.Core.WindowsInstaller
210 } 204 }
211 else if (this.showPedanticMessages) 205 else if (this.showPedanticMessages)
212 { 206 {
213 this.OnMessage(WixWarnings.DuplicatePrimaryKey(row.SourceLineNumbers, primaryKey, row.Table.Name)); 207 this.messaging.Write(ErrorMessages.DuplicatePrimaryKey(row.SourceLineNumbers, primaryKey, row.Table.Name));
214 } 208 }
215 } 209 }
216 else // use the string representation of the row as its primary key (it may not be unique) 210 else // use the string representation of the row as its primary key (it may not be unique)
@@ -370,7 +364,7 @@ namespace WixToolset.Core.WindowsInstaller
370 if (0 != targetTable.Definition.CompareTo(updatedTable.Definition)) 364 if (0 != targetTable.Definition.CompareTo(updatedTable.Definition))
371 { 365 {
372 // continue to the next table; may be more mismatches 366 // continue to the next table; may be more mismatches
373 this.OnMessage(WixErrors.DatabaseSchemaMismatch(targetOutput.SourceLineNumbers, targetTable.Name)); 367 this.messaging.Write(ErrorMessages.DatabaseSchemaMismatch(targetOutput.SourceLineNumbers, targetTable.Name));
374 } 368 }
375 else 369 else
376 { 370 {
@@ -425,7 +419,7 @@ namespace WixToolset.Core.WindowsInstaller
425 this.transformSummaryInfo.TargetProductCode = (string)row[1]; 419 this.transformSummaryInfo.TargetProductCode = (string)row[1];
426 if ("*" == this.transformSummaryInfo.TargetProductCode) 420 if ("*" == this.transformSummaryInfo.TargetProductCode)
427 { 421 {
428 this.OnMessage(WixErrors.ProductCodeInvalidForTransform(row.SourceLineNumbers)); 422 this.messaging.Write(ErrorMessages.ProductCodeInvalidForTransform(row.SourceLineNumbers));
429 } 423 }
430 } 424 }
431 else if ("ProductVersion" == (string)row[0]) 425 else if ("ProductVersion" == (string)row[0])
@@ -466,7 +460,7 @@ namespace WixToolset.Core.WindowsInstaller
466 this.transformSummaryInfo.UpdatedProductCode = (string)row[1]; 460 this.transformSummaryInfo.UpdatedProductCode = (string)row[1];
467 if ("*" == this.transformSummaryInfo.UpdatedProductCode) 461 if ("*" == this.transformSummaryInfo.UpdatedProductCode)
468 { 462 {
469 this.OnMessage(WixErrors.ProductCodeInvalidForTransform(row.SourceLineNumbers)); 463 this.messaging.Write(ErrorMessages.ProductCodeInvalidForTransform(row.SourceLineNumbers));
470 } 464 }
471 } 465 }
472 else if ("ProductVersion" == (string)row[0]) 466 else if ("ProductVersion" == (string)row[0])