Question

Je l'ai construit une application WPF avec Visual Studio 2008 et créé un programme d'installation pour it.Works si bien far.I a réalisé qu'il ne dispose pas des mises à jour automatiques sont équipées, et après avoir essayé plusieurs solutions, j'ai décidé de donner un essai au déploiement de ClickOnce .après un déploiement réussi sur un serveur réseau, j'ai remarqué que l'application se bloque après l'installation du app.It téléchargé se plaint à ce sujet:

  

Impossible de créer une instance de 'Connexion' définie dans l'assemblage monapplication, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = null '. Une exception a été levée par la cible d'un appel. Erreur dans le fichier de balisage monapplication, composant / login.xaml. Ligne 1 Position 9

ici est le stacktrace

  

à System.Windows.Markup.XamlParseException.ThrowException (message String, Exception innerException, Int32 lineNumber, Int32 LinePosition, Uri baseURI, XamlObjectIds currentXamlObjectIds, XamlObjectIds contextXamlObjectIds, type objectType)
     à System.Windows.Markup.XamlParseException.ThrowException (ParserContext parserContext, Int32 lineNumber, Int32 LinePosition, un message String, Exception innerException)      à System.Windows.Markup.BamlRecordReader.ThrowExceptionWithLine (message String, Exception innerException)
     à System.Windows.Markup.BamlRecordReader.CreateInstanceFromType (type Type, Int16 typeId, Boolean throwOnFail)
     à System.Windows.Markup.BamlRecordReader.GetElementAndFlags (BamlElementStartRecord bamlElementStartRecord, Objet et élément, ReaderFlags & drapeaux, Type et delayCreatedType, Int16 & delayCreatedTypeId)
     à System.Windows.Markup.BamlRecordReader.BaseReadElementStartRecord (BamlElementStartRecord bamlElementRecord)
     à System.Windows.Markup.BamlRecordReader.ReadElementStartRecord (BamlElementStartRecord bamlElementRecord)
     à System.Windows.Markup.BamlRecordReader.ReadRecord (BamlRecord bamlRecord)
     à System.Windows.Markup.BamlRecordReader.Read (Boolean singleRecord)
     à System.Windows.Markup.TreeBuilderBamlTranslator.ParseFragment ()
     à System.Windows.Markup.TreeBuilder.Parse ()
     à System.Windows.Markup.XamlReader.LoadBaml (flux Stream, ParserContext parserContext, parent d'objet, Boolean closeStream)
     à System.Windows.Application.LoadBamlStreamWithSyncInfo (stream Stream, pc ParserContext)
     à System.Windows.Application.LoadComponent (Uri resourceLocator, Boolean bSkipJournaledProperties)
     à System.Windows.Application.DoStartup ()
     à System.Windows.Application. <. cteur> b__0 (Object utilisé)
     à System.Windows.Threading.ExceptionWrapper.InternalRealCall (rappel de délégué, args Object, Boolean isSingleParameter)
     à System.Windows.Threading.ExceptionWrapper.TryCatchWhen (source d'objets, rappel délégué, args Object, Boolean isSingleParameter, délégué catchHandler)
     à System.Windows.Threading.Dispatcher.WrappedInvoke (rappel de délégué, args Object, Boolean isSingleParameter, délégué catchHandler)
     à System.Windows.Threading.DispatcherOperation.InvokeImpl ()
     à System.Windows.Threading.DispatcherOperation.InvokeInSecurityContext (état d'objet)
     à System.Threading.ExecutionContext.runTryCode (Object userData)
     à System.Runtime.CompilerServices.RuntimeHelpers.ExecuteCodeWithGuaranteedCleanup (code TryCode, CleanupCode backoutCode, userData Object)
     à System.Threading.ExecutionContext.RunInternal (ExecutionContext ExecutionContext, rappel ContextCallback, état d'objet)
     à System.Threading.ExecutionContext.Run (ExecutionContext ExecutionContext, rappel ContextCallback, état d'objet)
     à System.Windows.Threading.DispatcherOperation.Invoke ()
     à System.Windows.Threading.Dispatcher.ProcessQueue ()
     à System.Windows.Threading.Dispatcher.WndProcHook (hwnd IntPtr, Int32 msg, IntPtr wParam, lParam IntPtr, Boolean et traitées)
     à MS.Win32.HwndWrapper.WndProc (hwnd IntPtr, Int32 msg, IntPtr wParam, lParam IntPtr, Boolean & manipulation)
     à MS.Win32.HwndSubclass.DispatcherCallbackOperation (Object o)
     à System.Windows.Threading.ExceptionWrapper.InternalRealCall (rappel de délégué, args Object, Boolean isSingleParameter)
     à System.Windows.Threading.ExceptionWrapper.TryCatchWhen (source d'objets, rappel délégué, args Object, Boolean isSingleParameter, délégué catchHandler)
     à System.Windows.Threading.Dispatcher.WrappedInvoke (rappel de délégué, args Object, Boolean isSingleParameter, délégué catchHandler)
     à System.Windows.Threading.Dispatcher.InvokeImpl (priorité DispatcherPriority, délai d'attente TimeSpan, méthode délégué, args Object, Boolean isSingleParameter)
     à System.Windows.Threading.Dispatcher.Invoke (priorité de DispatcherPriority, méthode délégué, arg Object)
     à MS.Win32.HwndSubclass.SubclassWndProc (IntPtr hwnd, Int32 msg, IntPtr wParam, lParam IntPtr)
     à MS.Win32.UnsafeNativeMethods.DispatchMessage (MSG & msg)
     à System.Windows.Threading.Dispatcher.PushFrameImpl (cadre de DispatcherFrame)
     à System.Windows.Threading.Dispatcher.PushFrame (cadre de DispatcherFrame)
     à System.Windows.Threading.Dispatcher.Run ()
     à System.Windows.Application.RunDispatcher (Object ignorer)
     à System.Windows.Application.RunInternal (fenêtre de fenêtre)
     à System.Windows.Application.Run (fenêtre de fenêtre)
     à System.Windows.Application.Run ()
     à myApplication.App.Main ()

ici est juste la région du débogueur pointe vers

<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">

Mais la version de l'installateur comme dans le msi de travaux du projet d'installation fine.so je ne peux pas voir où l'erreur est comming de car je peux avoir vue design.
Question 1 : Est-ce que quelqu'un a un problème similaire, ou est-ce un problème connu
? Question 2 : Si c'est un problème connu alors qu'est-ce que alternative.I pourrait renoncer à l'clickonce mais je ma mise à jour automatique sera perdue (comme il n'y a aucune qui ne ovekill ou sérieusement obsolète que je peux trouver en ce moment).
merci de lire ceci et pour moi pointant vers la droite.

Était-ce utile?

La solution

Si vous allez dans le cache de ClickOnce et de trouver l'exécutable pour votre application et double-cliquez dessus, est-il encore échouer? Si oui, alors il est pas un problème de ClickOnce en soi. Il se pourrait que vous manquez un certain assemblage dans votre déploiement est nécessaire. Ou vous faites quelque chose que ClickOnce ne permet pas, comme l'accès à un dossier qui requiert des privilèges d'administrateur.

Vous pouvez également essayer de l'exécuter à partir de votre \ bin \ Release après avoir fait une construction, mais cela ne vous dira si vous avez un montage sur votre machine que vous utilisez ce n'est pas déployée.

Le cache ClickOnce sur Windows 7 (et Vista) est ici:
C: \ Users \ nom d'utilisateur \ AppData \ Local \ Apps \ 2.0 \ obfuscatedfolder \ obfuscatedfolder

A partir de là, pour une application de formes de gagner, il crée deux dossiers, l'un appelé xxxx ... exe_etc et un appelé xxxx ... tion_etc ... Celui qui commence par xxxx_tion (où xxxx = quatre caractères de votre 1er nom assemblage) est celui dans lequel l'application est exécutée à partir. Je ne sais pas si les noms de dossier sont les mêmes pour une application WPF, mais nous espérons qu'ils ne sont pas trop différents. L'exécutable ne sera dans un dossier. (Et oui, on pourrait penser qu'il serait dans le xxxx ... dossier exe_etc, mais ce n'est pas.)

EDIT - INFO AJOUTÉE

Pour la question des images manquantes: Sont-ils inclus dans le projet en tant que fichiers? Si oui, assurez-vous que l'action de construction est « contenu » et le « copier dans le répertoire de sortie » propriété est définie sur «toujours copier. Dans le cas contraire, il ne sera pas les inclure dans le déploiement.

Pour la base de données, même problème. Il doit être inclus dans le projet, et les propriétés doit être en conséquence (ensemble « copie ... » à «copier si plus récent). AUSSI, ouvrez la boîte de dialogue des fichiers d'application et voir si elle est marquée comme Inclure (Data). Dans ce cas, il est déployé dans le répertoire de données. Si vous déployez cette façon, lorsque vous publiez une nouvelle version, il copiera les données avant de les nouveaux dossiers. Vous pouvez le trouver en utilisant programme la propriété ApplicationDeployment.DataDirectory.

Je ne recommande pas en général faire confiance à vos données à ClickOnce. Si vous déployez quelque chose en tant que données, et le timbre de date / heure sur vos changements de version locale, ClickOnce déploiera la nouvelle version, et de mettre l'ancienne version dans un sous-dossier appelé. \ Pré. Pour moi, cela est dangereux, parce que vous pouvez modifier les données accidentellement. SQLCE change la date / heure si vous ouvrez simplement la base de données pour examiner les structures de table. Je propose donc les données et de gérer la mise à jour de moi-même la base de données. Si vous souhaitez plus d'informations à ce sujet, consultez mon blog sur garder votre coffre-fort de données mises à jour de ClickOnce .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top