Frage

Ich habe eine WPF-Anwendung mit Visual Studio 2008 gebaut und ein Installationsprogramm für it.Works fein erstellt so far.I erkannte, dass es fehlt die automatische Update-Funktion, und nach mehreren Lösungen versucht, ich beschloß, einen Versuch zu Clickonce-Bereitstellung geben .Nach eine erfolgreiche Bereitstellung auf einem Netzwerk-Server, ich habe bemerkt, dass die Anwendung nach der Installation abstürzt der app.It heruntergeladen diese beschwert sich über:

Kann nicht Instanz von 'Login' erstellen definiert in Assembly 'MyApplication, Version = 1.0.0.0, = Kultur neutral, PublicKeyToken = null'. Ausnahme wurde durch das Ziel für einen Aufruf ausgelöst. Fehler im Markup-Datei 'MyApplication; Komponente / login.xaml'. Zeile 1 Position 9

Hier ist die stacktrace

bei System.Windows.Markup.XamlParseException.ThrowException (String Nachricht, Exception innerexception, Int32 Zeilennummer, Int32 Lineposition, Uri baseUri, XamlObjectIds currentXamlObjectIds, XamlObjectIds contextXamlObjectIds, Typ object)
bei System.Windows.Markup.XamlParseException.ThrowException (ParserContext ParserContext, Int32 Zeilennummer, Int32 Lineposition, String-Nachricht, Exception innerexception) bei System.Windows.Markup.BamlRecordReader.ThrowExceptionWithLine (String Nachricht, Exception innerexception)
bei System.Windows.Markup.BamlRecordReader.CreateInstanceFromType (Typ Typ, Int16 TypeId, Boolean throwOnFail)
bei System.Windows.Markup.BamlRecordReader.GetElementAndFlags (BamlElementStartRecord bamlElementStartRecord, Objekt und Element, ReaderFlags & Flaggen, Type & delayCreatedType, Int16 & delayCreatedTypeId)
bei System.Windows.Markup.BamlRecordReader.BaseReadElementStartRecord (BamlElementStartRecord bamlElementRecord)
bei System.Windows.Markup.BamlRecordReader.ReadElementStartRecord (BamlElementStartRecord bamlElementRecord)
bei System.Windows.Markup.BamlRecordReader.ReadRecord (BamlRecord bamlRecord)
bei System.Windows.Markup.BamlRecordReader.Read (Boolean singleRecord)
bei System.Windows.Markup.TreeBuilderBamlTranslator.ParseFragment ()
bei System.Windows.Markup.TreeBuilder.Parse ()
bei System.Windows.Markup.XamlReader.LoadBaml (Stream Stream, ParserContext ParserContext, Objekt Eltern, Boolean closeStream)
bei System.Windows.Application.LoadBamlStreamWithSyncInfo (Stream Stream, ParserContext pc)
bei System.Windows.Application.LoadComponent (Uri resourceLocator, Boolean bSkipJournaledProperties)
bei System.Windows.Application.DoStartup ()
bei System.Windows.Application. <. Ctor> b__0 (Objekt nicht verwendet)
bei System.Windows.Threading.ExceptionWrapper.InternalRealCall (Delegierter Rückruf, Objekt args, Boolean isSingleParameter)
bei System.Windows.Threading.ExceptionWrapper.TryCatchWhen (Object Quelle, Delegierter Rückruf, Objekt args, Boolean isSingleParameter, Delegierter catchHandler)
bei System.Windows.Threading.Dispatcher.WrappedInvoke (Delegierter Rückruf, Objekt args, Boolean isSingleParameter, Delegierter catchHandler)
bei System.Windows.Threading.DispatcherOperation.InvokeImpl ()
bei System.Windows.Threading.DispatcherOperation.InvokeInSecurityContext (Object state)
bei System.Threading.ExecutionContext.runTryCode (Object userdata)
bei System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup (TryCode Code, CleanupCode backoutCode, Object userdata)
bei System.Threading.ExecutionContext.RunInternal (ExecutionContext ExecutionContext, Contextcallback, Objektzustand)
bei System.Threading.ExecutionContext.Run (ExecutionContext ExecutionContext, Contextcallback, Objektzustand)
bei System.Windows.Threading.DispatcherOperation.Invoke ()
bei System.Windows.Threading.Dispatcher.ProcessQueue ()
bei System.Windows.Threading.Dispatcher.WndProcHook (IntPtr HWND, Int32 msg, IntPtr WParam, IntPtr lParam, Boolean & behandelt)
bei MS.Win32.HwndWrapper.WndProc (IntPtr hwnd, Int32 msg, IntPtr WParam, IntPtr lParam, Boolean & behandelt)
bei MS.Win32.HwndSubclass.DispatcherCallbackOperation (Object o)
bei System.Windows.Threading.ExceptionWrapper.InternalRealCall (Delegierter Rückruf, Objekt args, Boolean isSingleParameter)
bei System.Windows.Threading.ExceptionWrapper.TryCatchWhen (Object Quelle, Delegierter Rückruf, Objekt args, Boolean isSingleParameter, Delegierter catchHandler)
bei System.Windows.Threading.Dispatcher.WrappedInvoke (Delegierter Rückruf, Objekt args, Boolean isSingleParameter, Delegierter catchHandler)
bei System.Windows.Threading.Dispatcher.InvokeImpl (DispatcherPriority Priorität, Timespan-Timeout, Delegatmethode, Object args, Boolean isSingleParameter)
bei System.Windows.Threading.Dispatcher.Invoke (DispatcherPriority Priorität, Delegate Methode, Objekt arg)
bei MS.Win32.HwndSubclass.SubclassWndProc (IntPtr hwnd, Int32 msg, IntPtr WParam, IntPtr lParam)
bei MS.Win32.UnsafeNativeMethods.DispatchMessage (MSG & msg)
bei System.Windows.Threading.Dispatcher.PushFrameImpl (DispatcherFrame Rahmen)
bei System.Windows.Threading.Dispatcher.PushFrame (DispatcherFrame Rahmen)
bei System.Windows.Threading.Dispatcher.Run ()
bei System.Windows.Application.RunDispatcher (Objekt ignorieren)
bei System.Windows.Application.RunInternal (Fenster Fenster)
bei System.Windows.Application.Run (Fenster Fenster)
bei System.Windows.Application.Run ()
bei myApplication.App.Main ()

Hier ist nur der Bereich der Debugger zeigt

<Window x:Class="MyApplication.Login"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:src="clr-namespace:MyApplication"
    xmlns:UI="clr-namespace:UI;assembly=UI"
Title="My Application"  Height="400" Width="550" ResizeMode="NoResize" WindowStyle="ThreeDBorderWindow" WindowStartupLocation="CenterScreen" Name="Logine" Loaded="Logine_Loaded" Closed="Logine_Closed" Icon="orLogo.ico">

Aber die Installer-Version wie in der msi von Setup-Projekt funktioniert fine.so ich sehe nicht, wo der Fehler aus steht vor der Tür, da ich Entwurfsansicht haben.
Frage 1 : Hat jemand ein ähnliches Problem, oder ist das ein bekanntes Problem
? Frage 2 : Wenn es ein bekanntes Problem, was dann alternative.I werden könnte oben auf dem Clickonce geben, aber dann werde ich meine automatische Update-Funktion verloren gehen (wie in es keine gibt, die nicht ovekill oder ernsthaft veraltet das kann ich jetzt) ??finden.
Dank für das lesen und für mich in die richtige Richtung.

War es hilfreich?

Lösung

Wenn Sie den Clickonce-Cache gehen und die ausführbare Datei für Ihre Anwendung finden und doppelklicken Sie darauf, scheitert es immer noch? Wenn ja, dann ist es kein Problem Clickonce per se. Es könnte sein, dass Sie einige Montage in der Bereitstellung fehlen, die erforderlich ist. Oder Sie tun etwas, dass Clickonce nicht zulässt, wie einen Ordner zugreifen, die Administratorrechte erforderlich sind.

Sie können auch versuchen, es aus Ihrem \ bin \ Release-Ordner ausgeführt wird, nachdem ein Build zu tun, aber das wird Ihnen nicht sagen, wenn Sie eine Baugruppe auf Ihrem Rechner haben, dass Sie das verwenden nicht bereitgestellt werden.

Der Clickonce-Cache auf Windows 7 (und Vista) ist hier:
C: \ Users \ Benutzername \ AppData \ Local \ Apps \ 2.0 \ obfuscatedfolder \ obfuscatedfolder

Von dort für einen Sieg Formen App, erstellt es zwei Ordner, eine namens xxxx ... exe_etc und eine namens xxxx ... tion_etc ... derjenige, der beginnt mit xxxx_tion (wobei xxxx = 1. vier Zeichen Ihrer Montage name) ist die, wo die Anwendung aus ausgeführt wird. Ich bin nicht sicher, ob die Ordnernamen sind die gleichen für eine WPF-Anwendung, aber hoffentlich sind sie nicht zu unterschiedlich. Die ausführbare Datei wird nur in einem Ordner sein. (Und ja, würden Sie denken, es im xxxx ... exe_etc Ordner sein würde, aber es ist nicht.)

EDIT - ADDED INFO

Für die Ausgabe der Bilder fehlen: Werden sie in das Projekt als Dateien enthalten? Wenn ja, stellen Sie sicher, dass die Build-Aktion für ‚Inhalt‘ und ‚kopieren zu Ausgabeverzeichnis‘ Eigenschaft auf ‚kopiert immer‘. Andernfalls wird sie nicht im Einsatz ist.

Für die Datenbank, gleiches Problem. Es muss in das Projekt einbezogen werden, und die Eigenschaften müssen entsprechend eingestellt werden (Satz ‚Kopie ...‘ auf ‚wenn neuere kopieren‘). ALSO, öffnen Sie den Dialog Anwendungsdateien und sehen, ob es als Include (Data) gekennzeichnet ist. Wenn ja, dann wird es in das Datenverzeichnis Einsatz. Wenn Sie es auf diese Weise einsetzen, wenn Sie eine neue Version zu veröffentlichen, werden die Daten nach vorn in die neuen Ordner kopieren. Sie können es programmatisch die ApplicationDeployment.DataDirectory Eigenschaft unter Verwendung finden.

Ich empfehle im Allgemeinen nicht um Ihre Daten zu Clickonce zu vertrauen. Wenn Sie etwas wie Daten bereitstellen und die Datums- / Zeitstempel auf dem lokalen Version ändert, wird Clickonce die neue Version bereitstellen, und legen Sie die alte Version in einem Unterordner genannt. \ Vor. Für mich ist dies gefährlich, weil Sie die Daten versehentlich ändern könnten. SQLCE ändert das Datum / Zeitstempel, wenn Sie nur die Datenbank öffnen, an den Tabellenstrukturen zu suchen. Also habe ich die Daten verschieben und die Aktualisierung der Datenbank selbst behandeln. Wenn Sie weitere Informationen zu diesem wollen, lesen Sie auf meine Blog-Post out halten Sie Ihre Daten sicher von Clickonce-Updates .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top