使用Wix 3.10
在Windows 8.0上安装.NET 4.6时,Microsoft软件包会返回一个错误,因为该计算机丢失了另一个更大的kb。到目前为止还可以,但我想在我的自定义wpf UI中显示来自NET安装程序的这条消息,但我不知道会触发什么事件。
在我的视图模型中,我有BootstrapperApplication的当前实例,我的第一种方法不会记录任何内容:
internal MainViewModel(BootstrapperApplication model, Action<LogLevel, string> onLoggerAction, (....))
{
this.Model = model;
this.Model.DetectPackageComplete += this.DetectPackageComplete;
this.Model.DetectRelatedBundle += new EventHandler<DetectRelatedBundleEventArgs>(this.Model_DetectRelatedBundle);
this.Model.DetectPriorBundle += new EventHandler<DetectPriorBundleEventArgs>(this.Model_DetectPriorBundle);
this.Model.DetectRelatedMsiPackage += new EventHandler<DetectRelatedMsiPackageEventArgs>(this.Model_DetectRelatedMsiPackage);
this.Model.DetectTargetMsiPackage += new EventHandler<DetectTargetMsiPackageEventArgs>(this.Model_DetectTargetMsiPackage);
this.Model.Error += this.SetupError;
[...]
}
public void SetupError(object sender, ErrorEventArgs args)
{
this.onLoggerAction(LogLevel.Standard, string.Format("Error occured. Message: {0}", args.ErrorMessage));
this.onLoggerAction(LogLevel.Standard, string.Format("Error occured. ErrorCode: {0}", args.ErrorCode));
this.onLoggerAction(LogLevel.Standard, string.Format("Error occured. Type: {0}", args.ErrorType));
this.dispatcher.BeginInvoke((Action)(() => this.ShowErrorView(args)));
}
日志文件显示错误:
[07D0:06D4][2016-05-09T09:16:36]i301: Applying execute package: Netfx4FullInternal, action: Install, path: C:ProgramDataPackage Cache3049A85843EAF65E89E2336D5FE6E85E416797BENDP46-KB3045557-x86-x64-AllOS-ENU.exe, arguments: '"C:ProgramDataPackage Cache3049A85843EAF65E89E2336D5FE6E85E416797BENDP46-KB3045557-x86-x64-AllOS-ENU.exe" /passive /norestart'
[07D0:06D4][2016-05-09T09:18:11]e000: Error 0x800713ec: Process returned error: 0x13ec
[07D0:06D4][2016-05-09T09:18:11]e000: Error 0x800713ec: Failed to execute EXE package.
[0928:09AC][2016-05-09T09:18:11]e000: Error 0x800713ec: Failed to configure per-machine EXE package
但是我该如何处理这个错误呢?
您已经使用了"/norestart"one_answers"/passive"参数,请尝试使用"/log C:\pathtolog\yourlog.log",这样您就可以看到哪里出了问题。
在运送安装程序之前,您应该已经修复了所有错误,而不是全部显示。
想象一下,安装了一些东西,却出现了成千上万的错误。。。。