2016-05-09 8 views
0

Mit Wix 3.10Wie erros bei der Installation von Voraussetzungen bieten

Bei der Installation von .NET 4.6 auf Windows 8.0, das Microsoft-Paket gibt einen Fehler auftreten zeigen, da der Computer anothger kb von Microsoft fehlt. Das ist soweit in Ordnung, aber ich möchte diese Nachricht vom NET-Installer in meiner benutzerdefinierten wpf-UI anzeigen, aber ich habe nicht herausgefunden, welches Ereignis ausgelöst wird.

In meinem Viewmodel Ich habe die aktuelle Instanz des BootstrapperApplication und mein erster Ansatz wird nichts log:

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))); 
} 

Die Protokolldatei zeigt den Fehler:

[07D0:06D4][2016-05-09T09:16:36]i301: Applying execute package: Netfx4FullInternal, action: Install, path: C:\ProgramData\Package Cache\3049A85843EAF65E89E2336D5FE6E85E416797BE\NDP46-KB3045557-x86-x64-AllOS-ENU.exe, arguments: '"C:\ProgramData\Package Cache\3049A85843EAF65E89E2336D5FE6E85E416797BE\NDP46-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 

Aber wie kann ich umgehen dieser Fehler?

+0

Es funktioniert jetzt. Ich hatte einen dummen Fehler, der meine ba.dll im bundle.wxs bezeichnet. Ich bekomme die (kryptischen) Rückgabecodes, aber nicht die ErrorMessage im ExecutePackageCompleted-Ereignis. Aber jetzt kann ich den Benutzer informieren, dass etwas falsch gelaufen ist, aber die echte ErrorMessage von dem darunterliegenden Installer wäre nett –

Antwort

0

Sie haben bereits die Argumente "/ norestart" und "/ passiv" verwendet, versuchen Sie es mit "/ log C: \ pathtolog \ yourlog.log", damit Sie sehen können, was schief geht.

Bevor Sie Ihr Installationsprogramm versenden, sollten Sie alle Fehler behoben und nicht alle angezeigt haben.

Stellen Sie sich vor, etwas zu installieren und Tausende von Fehlern erscheinen ....

+0

Das .Net-Framework meldet sich im% temp% -Ordner per defailt an, damit ich das echte bekommen kann Fehler, aber nicht in meiner Einrichtung ui. Hier ist das Problem nicht einfach zu lösen. Auf einer neuen Windows 8.1-Installation funktioniert das .Net 4.6-Installationsprogramm nicht, wenn nicht ein anderer Kb von Microsoft installiert ist, und selbst dieses Kb hatte einen anderen Kb, von dem es abhängig war. Also diese Dinge kann mein Setup nicht für alle Konfigurationen im Freien bewältigen, ohne riesig zu werden. –