2016-04-09 17 views
0

Ich habe ein Bootstrapper-Installationsprogramm mit Wix geschrieben. Aber wenn ich die Anwendung ausführe, bleibt das Installationsprogramm immer im Status "Initializing". Daher sind die Schaltflächen zum Installieren und Deinstallieren deaktiviert. Unten ist die Zeile, wo ich nach dem Wert des Installationsbefehls suche.Wix PlanAction-Methode nicht aufgerufen, wenn Programm ausgeführt wird

Wenn ich den Code debuggen, wird die Model.PlanAction-Methode nicht aufgerufen. Es läuft nur über diese Methode, obwohl ich Schritt drücken. Auch der Debug-Punkt der PlanAction-Methode wird nicht getroffen. Was mache ich hier falsch? Unten ist meine ViewModel-Klasse.

Unten ist meine Model-Klasse, die die PlanAction-Methode enthält, die aufgerufen werden sollte.

public class BootstrapperApplicationModel 
    { 
     private IntPtr hwnd; 
     public BootstrapperApplicationModel(
     BootstrapperApplication bootstrapperApplication) 
     { 
      this.BootstrapperApplication = 
      bootstrapperApplication; 
      this.hwnd = IntPtr.Zero; 
     } 
     public BootstrapperApplication BootstrapperApplication 
     { 
      get; 
      private set; 
     } 
     public int FinalResult { get; set; } 
     public void SetWindowHandle(Window view) 
     { 
      this.hwnd = new WindowInteropHelper(view).Handle; 
     } 
     public void PlanAction(LaunchAction action) 
     { 
      this.BootstrapperApplication.Engine.Plan(action); 
     } 
     public void ApplyAction() 
     { 
      this.BootstrapperApplication.Engine.Apply(this.hwnd); 
     } 
     public void LogMessage(string message) 
     { 
      this.BootstrapperApplication.Engine.Log(
      LogLevel.Standard, 
      message); 
     } 

Unten ist meine BootstrapperApplication Klasse, falls Sie sie brauchen.

Antwort

0

Versuchen Sie, wenn etwas unter funktioniert, habe ich nicht mit Ihrem Code versucht, aber wir hatten ähnliches Problem in der Vergangenheit.

Option1: Gleich nach dem Code this.WireUpEventHandlers(); versuchen Sie, Code unter zu setzen, und es sollte Ihr DetectPackageComplete-Ereignis aufrufen, wenn es nicht aufgerufen wird.

this.model.BootstrapperApplication.Engine.Detect(); 

Option2: In DetectPackageComplete Fall sollte das Paket Id "MyInstaller" sein und nicht "MyInstaller.msi", so nehme ich an, dass Sie die Id = "MyInstaller" in Ihrem bundle.wxs gegeben würden

Hoffe, das hilft.

+0

Danke für die Antwort Kumpel. Versuchte beides, immer noch kein Glück :(Wenn ich die Engine.Detect-Zeile gebe, nachdem ich die Event-Handler verkabelt habe, stürzt das Installationsprogramm ab, mit der "Sende einen Fehlerbericht" -Benutzeroberfläche. Aber es gibt nichts, was ich in den Logs finden konnte. – mayooran

+0

Entfernen Sie den Code this.Engine.Detect(); aus der CustomBootstrapperApplication-Klasse und versuchen Sie es erneut. Setzen Sie einen Debugger auf die DetectPackageComplete-Methode und sehen Sie, welchen Status Sie in DetectPackageCompleteEventArgs e erhalten –

Verwandte Themen