none
WPF Anwendung läuft nicht nach Installation RRS feed

  • Frage

  • Hallo!

    Ich habe eine WPF Anwendung geschrieben, die soweit auch tadelloas läuft.
    Wenn ich sie mit ClickOnce auf einem anderen REchner installiere, dann klappt die Installation incl. aller Abhängigkeiten, aber wenn ich die Anwendung starte kriege ich nur die Fehlermeldung, dass die Anwendung nicht mehr funktioniert.

    Im Eventlog steht dann:

    Name der fehlerhaften Anwendung: ShoCoDT.exe, Version: 1.0.0.0, Zeitstempel: 0x4e04637f
    Name des fehlerhaften Moduls: KERNELBASE.dll, Version: 6.1.7601.17514, Zeitstempel: 0x4ce7bafa
    Ausnahmecode: 0xe0434352
    Fehleroffset: 0x0000b727
    ID des fehlerhaften Prozesses: 0x7a8
    Startzeit der fehlerhaften Anwendung: 0x01cc3258d3229b56
    Pfad der fehlerhaften Anwendung: C:\Temp\ShoCoDT.exe
    Pfad des fehlerhaften Moduls: C:\Windows\syswow64\KERNELBASE.dll
    Berichtskennung: 10ee1819-9e4c-11e0-aa52-001f16f24172

    Und:

    Anwendung: ShoCoDT.exe
    Frameworkversion: v4.0.30319
    Beschreibung: Der Prozess wurde aufgrund einer unbehandelten Ausnahme beendet.
    Ausnahmeinformationen: System.ArgumentException
    Stapel:
       bei Microsoft.VisualBasic.Strings.Right(System.String, Int32)
       bei ShoCoDT.Application.Application_Startup(System.Object, System.Windows.StartupEventArgs)
      
    bei System.Windows.Application.OnStartup(System.Windows.StartupEventArgs)
       bei System.Windows.Application.<.ctor>b__1(System.Object)
       bei System.Windows.Threading.ExceptionWrapper.InternalRealCall(System.Delegate, System.Object, Int32)
       bei MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(System.Object, System.Delegate, System.Object, Int32, System.Delegate)
       bei System.Windows.Threading.DispatcherOperation.InvokeImpl()
       bei System.Windows.Threading.DispatcherOperation.InvokeInSecurityContext(System.Object)
       bei System.Threading.ExecutionContext.runTryCode(System.Object)
       bei System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup(TryCode, CleanupCode, System.Object)
       bei System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)
       bei System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)
       bei System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)
       bei System.Windows.Threading.DispatcherOperation.Invoke()
       bei System.Windows.Threading.Dispatcher.ProcessQueue()
       bei System.Windows.Threading.Dispatcher.WndProcHook(IntPtr, Int32, IntPtr, IntPtr, Boolean ByRef)
       bei MS.Win32.HwndWrapper.WndProc(IntPtr, Int32, IntPtr, IntPtr, Boolean ByRef)
       bei MS.Win32.HwndSubclass.DispatcherCallbackOperation(System.Object)
       bei System.Windows.Threading.ExceptionWrapper.InternalRealCall(System.Delegate, System.Object, Int32)
       bei MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(System.Object, System.Delegate, System.Object, Int32, System.Delegate)
       bei System.Windows.Threading.Dispatcher.InvokeImpl(System.Windows.Threading.DispatcherPriority, System.TimeSpan, System.Delegate, System.Object, Int32)
       bei MS.Win32.HwndSubclass.SubclassWndProc(IntPtr, Int32, IntPtr, IntPtr)
       bei MS.Win32.UnsafeNativeMethods.DispatchMessage(System.Windows.Interop.MSG ByRef)
       bei System.Windows.Threading.Dispatcher.PushFrameImpl(System.Windows.Threading.DispatcherFrame)
       bei System.Windows.Threading.Dispatcher.PushFrame(System.Windows.Threading.DispatcherFrame)
       bei System.Windows.Threading.Dispatcher.Run()
       bei System.Windows.Application.RunDispatcher(System.Object)
       bei System.Windows.Application.RunInternal(System.Windows.Window)
       bei System.Windows.Application.Run(System.Windows.Window)
      
    bei ShoCoDT.Application.Main()

    Auf dem Rechner, auf dem ich Sie geschrieben habe, kann ich die .exe auch aus dem \bin\release VErzeichnis starten. Kopiere ich den Inhalt in ein anderes Verzeichnis und starte von da aus bekomme ich die gleichen Fehler wie oben.

    Jemand eine Idee, wo ich da suchen soll? mir fällt nix mehr dazu ein.

    Thx, Jörg

    HAbe das Ganze gerade auch noch Mal mit einem Installationsprogramm (.msi) versucht, gleicher Erfolg. Installation klappt, Programm bricht mit obigen Eventlog Einträgen ab, bevor überhaupt etwas auf dem Bildschirm zu sehen ist.
    Freitag, 24. Juni 2011 11:01

Antworten

  • Hab's gefunden.
    Manchmal fragt man sich wirklich, wie blöd man sein kann. Um das Startverzeichnis zu finden habe ich im Code in  Application.ResourceAssembly.CodeBase nach "/bin" gesucht und dann einfach mit dem Ergbnis weitergemacht (natürlich außerhalb jeglicher Try / Catch Routine).
    Und beim auskommentieren habe ich das natürlich nicht gesehen, weil es irgendwo zwischen ein paar DIM Anweisungen stand.

    Daher hat es immer funktioniert, wenn das Programm irgendwo unterhalb eines /bin Verzeichnisse war, aber nie , wenn kein "/bin" im Pfad auftauchte.

    Ich geh' jetzt in den Keller und hau eine Stunde lang mit dem Kopf vor die Wand...... 

    • Als Antwort markiert joergsc Dienstag, 28. Juni 2011 17:47
    Dienstag, 28. Juni 2011 17:47

Alle Antworten

  • Hallo Jörg,

    was passiert beim Start deiner Anwendung?
    Das sieht so aus als wenn im Eventhandler "Application_Startup" in der App.xaml.cs der Fehler entsteht.
    Poste das doch mal...

     

    Montag, 27. Juni 2011 06:32
    Beantworter
  • Da passiert nicht sonderlich viel - vor allem ändert sich das Verhalten nicht, wenn ich den gesamten Code in Application_Startup auskommentieren.
    ICh habe mal einen EventHandler für DispatcherUnhandledExceptions eingebaut

     

    Private Sub App_HandleExceptions(ByVal sender As Object, e As DispatcherUnhandledExceptionEventArgs) Handles Me.

    DispatcherUnhandledException

    e.Handled = True
    MessageBox.Show("Fehler " + e.Exception.Message.ToString , "Start" )

    End Sub

      Der gibt "Bei der Initialisierung von ShoCoDT.MainWindow wurde eine Ausnahme ausgelöst" aus. Der Task läuft dann zwar noch (sichtbar im TAskmanager) aber es erscheint kein Fenster.

    Wenn ich den Startcode aus Mainwindow.xaml.cb auskommentiere (von VS wird dann nur das Fenster mit ein paar in XAML definierten Objekten gezeigt) ändert sich die Fehlermeldung in: "Das Argument Length muss grösser oder gleich (0) null sein".

    Das einzige, was mir jetzt noch einfällt ist nach und nach alle XAML Objekte rauszuschmeissen und zu sehen, ob sich was ändert.

    Das habe ich jetzt auch probiert - gleiches Ergebnis :-(  

     

    • Als Antwort markiert joergsc Dienstag, 28. Juni 2011 17:47
    • Tag als Antwort aufgehoben joergsc Dienstag, 28. Juni 2011 17:47
    Dienstag, 28. Juni 2011 15:40
  • Hab's gefunden.
    Manchmal fragt man sich wirklich, wie blöd man sein kann. Um das Startverzeichnis zu finden habe ich im Code in  Application.ResourceAssembly.CodeBase nach "/bin" gesucht und dann einfach mit dem Ergbnis weitergemacht (natürlich außerhalb jeglicher Try / Catch Routine).
    Und beim auskommentieren habe ich das natürlich nicht gesehen, weil es irgendwo zwischen ein paar DIM Anweisungen stand.

    Daher hat es immer funktioniert, wenn das Programm irgendwo unterhalb eines /bin Verzeichnisse war, aber nie , wenn kein "/bin" im Pfad auftauchte.

    Ich geh' jetzt in den Keller und hau eine Stunde lang mit dem Kopf vor die Wand...... 

    • Als Antwort markiert joergsc Dienstag, 28. Juni 2011 17:47
    Dienstag, 28. Juni 2011 17:47