diff options
Diffstat (limited to 'src')
3 files changed, 38 insertions, 26 deletions
diff --git a/src/wix/WixToolset.Core.Native/IWindowsInstallerValidatorCallback.cs b/src/wix/WixToolset.Core.Native/IWindowsInstallerValidatorCallback.cs index f4aff134..0d398acb 100644 --- a/src/wix/WixToolset.Core.Native/IWindowsInstallerValidatorCallback.cs +++ b/src/wix/WixToolset.Core.Native/IWindowsInstallerValidatorCallback.cs | |||
| @@ -2,6 +2,8 @@ | |||
| 2 | 2 | ||
| 3 | namespace WixToolset.Core.Native | 3 | namespace WixToolset.Core.Native |
| 4 | { | 4 | { |
| 5 | using WixToolset.Data; | ||
| 6 | |||
| 5 | /// <summary> | 7 | /// <summary> |
| 6 | /// Callbacks during validation. | 8 | /// Callbacks during validation. |
| 7 | /// </summary> | 9 | /// </summary> |
| @@ -13,15 +15,16 @@ namespace WixToolset.Core.Native | |||
| 13 | bool EncounteredError { get; } | 15 | bool EncounteredError { get; } |
| 14 | 16 | ||
| 15 | /// <summary> | 17 | /// <summary> |
| 16 | /// Validation blocked by another Windows Installer operation. | ||
| 17 | /// </summary> | ||
| 18 | void ValidationBlocked(); | ||
| 19 | |||
| 20 | /// <summary> | ||
| 21 | /// Validation message from an ICE. | 18 | /// Validation message from an ICE. |
| 22 | /// </summary> | 19 | /// </summary> |
| 23 | /// <param name="message">The validation message.</param> | 20 | /// <param name="message">The validation message.</param> |
| 24 | /// <returns>True if validation should continue; otherwise cancel the validation.</returns> | 21 | /// <returns>True if validation should continue; otherwise cancel the validation.</returns> |
| 25 | bool ValidationMessage(ValidationMessage message); | 22 | bool ValidationMessage(ValidationMessage message); |
| 23 | |||
| 24 | /// <summary> | ||
| 25 | /// Normal message encountered while preparing for ICE validation. | ||
| 26 | /// </summary> | ||
| 27 | /// <param name="message">The message to write.</param> | ||
| 28 | void WriteMessage(Message message); | ||
| 26 | } | 29 | } |
| 27 | } | 30 | } |
diff --git a/src/wix/WixToolset.Core.Native/WindowsInstallerValidator.cs b/src/wix/WixToolset.Core.Native/WindowsInstallerValidator.cs index 39242577..4c1a3952 100644 --- a/src/wix/WixToolset.Core.Native/WindowsInstallerValidator.cs +++ b/src/wix/WixToolset.Core.Native/WindowsInstallerValidator.cs | |||
| @@ -65,7 +65,7 @@ namespace WixToolset.Core.Native | |||
| 65 | { | 65 | { |
| 66 | if (!mutex.WaitOne(0)) | 66 | if (!mutex.WaitOne(0)) |
| 67 | { | 67 | { |
| 68 | this.Callback.ValidationBlocked(); | 68 | this.Callback.WriteMessage(VerboseMessages.ValidationSerialized()); |
| 69 | mutex.WaitOne(); | 69 | mutex.WaitOne(); |
| 70 | } | 70 | } |
| 71 | } | 71 | } |
| @@ -124,7 +124,8 @@ namespace WixToolset.Core.Native | |||
| 124 | 124 | ||
| 125 | if (!findCubeFile.Found) | 125 | if (!findCubeFile.Found) |
| 126 | { | 126 | { |
| 127 | throw new WixException(ErrorMessages.CubeFileNotFound(findCubeFile.Path)); | 127 | this.Callback.WriteMessage(ErrorMessages.CubeFileNotFound(findCubeFile.Path)); |
| 128 | continue; | ||
| 128 | } | 129 | } |
| 129 | 130 | ||
| 130 | try | 131 | try |
| @@ -145,10 +146,12 @@ namespace WixToolset.Core.Native | |||
| 145 | { | 146 | { |
| 146 | if (0x6E == e.NativeErrorCode) // ERROR_OPEN_FAILED | 147 | if (0x6E == e.NativeErrorCode) // ERROR_OPEN_FAILED |
| 147 | { | 148 | { |
| 148 | throw new WixException(ErrorMessages.CubeFileNotFound(findCubeFile.Path)); | 149 | this.Callback.WriteMessage(ErrorMessages.CubeFileNotFound(findCubeFile.Path)); |
| 150 | } | ||
| 151 | else | ||
| 152 | { | ||
| 153 | this.Callback.WriteMessage(ErrorMessages.UnexpectedException($"Unexpected exception while merging CUB: {findCubeFile.Path}, detail: {e.Message}", e.GetType().ToString(), e.StackTrace)); | ||
| 149 | } | 154 | } |
| 150 | |||
| 151 | throw; | ||
| 152 | } | 155 | } |
| 153 | } | 156 | } |
| 154 | 157 | ||
| @@ -212,7 +215,7 @@ namespace WixToolset.Core.Native | |||
| 212 | { | 215 | { |
| 213 | if (!this.Callback.EncounteredError) | 216 | if (!this.Callback.EncounteredError) |
| 214 | { | 217 | { |
| 215 | throw e; | 218 | this.Callback.WriteMessage(ErrorMessages.UnexpectedException($"Unexpected exception while executing ICE: {action}, detail: {e.Message}", e.GetType().ToString(), e.StackTrace)); |
| 216 | } | 219 | } |
| 217 | } | 220 | } |
| 218 | 221 | ||
| @@ -236,29 +239,29 @@ namespace WixToolset.Core.Native | |||
| 236 | // this would be the temporary copy and there would be no final output becasue | 239 | // this would be the temporary copy and there would be no final output becasue |
| 237 | // this error occured; and during standalone validation they should know the path | 240 | // this error occured; and during standalone validation they should know the path |
| 238 | // passed in. | 241 | // passed in. |
| 239 | throw new WixException(ErrorMessages.ValidationFailedToOpenDatabase()); | 242 | this.Callback.WriteMessage(ErrorMessages.ValidationFailedToOpenDatabase()); |
| 240 | } | 243 | } |
| 241 | else if (0x64D == e.NativeErrorCode) | 244 | else if (0x64D == e.NativeErrorCode) |
| 242 | { | 245 | { |
| 243 | throw new WixException(ErrorMessages.ValidationFailedDueToLowMsiEngine()); | 246 | this.Callback.WriteMessage(ErrorMessages.ValidationFailedDueToLowMsiEngine()); |
| 244 | } | 247 | } |
| 245 | else if (0x654 == e.NativeErrorCode) | 248 | else if (0x654 == e.NativeErrorCode) |
| 246 | { | 249 | { |
| 247 | throw new WixException(ErrorMessages.ValidationFailedDueToInvalidPackage()); | 250 | this.Callback.WriteMessage(ErrorMessages.ValidationFailedDueToInvalidPackage()); |
| 248 | } | 251 | } |
| 249 | else if (0x658 == e.NativeErrorCode) | 252 | else if (0x658 == e.NativeErrorCode) |
| 250 | { | 253 | { |
| 251 | throw new WixException(ErrorMessages.ValidationFailedDueToMultilanguageMergeModule()); | 254 | this.Callback.WriteMessage(ErrorMessages.ValidationFailedDueToMultilanguageMergeModule()); |
| 252 | } | 255 | } |
| 253 | else if (0x659 == e.NativeErrorCode) | 256 | else if (0x659 == e.NativeErrorCode) |
| 254 | { | 257 | { |
| 255 | throw new WixException(WarningMessages.ValidationFailedDueToSystemPolicy()); | 258 | this.Callback.WriteMessage(WarningMessages.ValidationFailedDueToSystemPolicy()); |
| 256 | } | 259 | } |
| 257 | else | 260 | else |
| 258 | { | 261 | { |
| 259 | var msg = String.IsNullOrEmpty(this.CurrentIce) ? e.Message : $"Action - '{this.CurrentIce}' {e.Message}"; | 262 | var msg = String.IsNullOrEmpty(this.CurrentIce) ? e.Message : $"Action - '{this.CurrentIce}' {e.Message}"; |
| 260 | 263 | ||
| 261 | throw new WixException(ErrorMessages.Win32Exception(e.NativeErrorCode, msg)); | 264 | this.Callback.WriteMessage(ErrorMessages.Win32Exception(e.NativeErrorCode, msg)); |
| 262 | } | 265 | } |
| 263 | } | 266 | } |
| 264 | } | 267 | } |
| @@ -294,9 +297,15 @@ namespace WixToolset.Core.Native | |||
| 294 | 297 | ||
| 295 | continueValidation = this.Callback.ValidationMessage(parsedMessage); | 298 | continueValidation = this.Callback.ValidationMessage(parsedMessage); |
| 296 | } | 299 | } |
| 297 | catch | 300 | catch (WixException e) |
| 301 | { | ||
| 302 | this.Callback.WriteMessage(e.Error); | ||
| 303 | return -1; | ||
| 304 | } | ||
| 305 | catch (Exception e) | ||
| 298 | { | 306 | { |
| 299 | return - 1; | 307 | this.Callback.WriteMessage(ErrorMessages.UnexpectedException($"Unexpected exception while executing action: {this.CurrentIce}, detail: {e.Message}", e.GetType().ToString(), e.StackTrace)); |
| 308 | return -1; | ||
| 300 | } | 309 | } |
| 301 | } | 310 | } |
| 302 | 311 | ||
diff --git a/src/wix/WixToolset.Core.WindowsInstaller/Validate/ValidateDatabaseCommand.cs b/src/wix/WixToolset.Core.WindowsInstaller/Validate/ValidateDatabaseCommand.cs index fe2fd2c2..fa01a119 100644 --- a/src/wix/WixToolset.Core.WindowsInstaller/Validate/ValidateDatabaseCommand.cs +++ b/src/wix/WixToolset.Core.WindowsInstaller/Validate/ValidateDatabaseCommand.cs | |||
| @@ -117,20 +117,20 @@ namespace WixToolset.Core.WindowsInstaller.Validate | |||
| 117 | } | 117 | } |
| 118 | 118 | ||
| 119 | /// <summary> | 119 | /// <summary> |
| 120 | /// Validation blocked by other installation operation for <see cref="IWindowsInstallerValidatorCallback"/>. | 120 | /// Validation message implementation for <see cref="IWindowsInstallerValidatorCallback"/>. |
| 121 | /// </summary> | 121 | /// </summary> |
| 122 | public void ValidationBlocked() | 122 | public bool ValidationMessage(ValidationMessage message) |
| 123 | { | 123 | { |
| 124 | this.Messaging.Write(VerboseMessages.ValidationSerialized()); | 124 | this.LogValidationMessage(message); |
| 125 | return true; | ||
| 125 | } | 126 | } |
| 126 | 127 | ||
| 127 | /// <summary> | 128 | /// <summary> |
| 128 | /// Validation message implementation for <see cref="IWindowsInstallerValidatorCallback"/>. | 129 | /// Normal message encountered while preparing for ICE validation for <see cref="IWindowsInstallerValidatorCallback"/>. |
| 129 | /// </summary> | 130 | /// </summary> |
| 130 | public bool ValidationMessage(ValidationMessage message) | 131 | public void WriteMessage(Message message) |
| 131 | { | 132 | { |
| 132 | this.LogValidationMessage(message); | 133 | this.Messaging.Write(message); |
| 133 | return true; | ||
| 134 | } | 134 | } |
| 135 | 135 | ||
| 136 | /// <summary> | 136 | /// <summary> |
