NAppUpdate icon indicating copy to clipboard operation
NAppUpdate copied to clipboard

Custom tasks from updated assemblies cannot be deserialized

Open xelibrion opened this issue 13 years ago • 5 comments

Let's say that I have MyUpdateTask bundled within MySuperApp.exe, v.0.1. As soon as I release new version of this assembly, updater starts failing as it loads only new version of assembly into AppDomain and not the old one.

System.Runtime.Serialization.SerializationException: Unable to find assembly 'MySuperApp, Version=0.1, Culture=neutral, PublicKeyToken=null'.
   at System.Runtime.Serialization.Formatters.Binary.BinaryAssemblyInfo.GetAssembly()
   at System.Runtime.Serialization.Formatters.Binary.ObjectReader.GetType(BinaryAssemblyInfo assemblyInfo, String name)
   at System.Runtime.Serialization.Formatters.Binary.ObjectMap..ctor(String objectName, String[] memberNames, BinaryTypeEnum[] binaryTypeEnumA, Object[] typeInformationA, Int32[] memberAssemIds, ObjectReader objectReader, Int32 objectId, BinaryAssemblyInfo assemblyInfo, SizedArray assemIdToAssemblyTable)
   at System.Runtime.Serialization.Formatters.Binary.__BinaryParser.ReadObjectWithMapTyped(BinaryObjectWithMapTyped record)
   at System.Runtime.Serialization.Formatters.Binary.__BinaryParser.Run()
   at System.Runtime.Serialization.Formatters.Binary.ObjectReader.Deserialize(HeaderHandler handler, __BinaryParser serParser, Boolean fCheck, Boolean isCrossAppDomain, IMethodCallMessage methodCallMessage)
   at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize(Stream serializationStream, HeaderHandler handler, Boolean fCheck, Boolean isCrossAppDomain, IMethodCallMessage methodCallMessage)
   at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize(Stream serializationStream, HeaderHandler handler, Boolean fCheck, IMethodCallMessage methodCallMessage)
   at NAppUpdate.Framework.Utils.NauIpc.ReadDto(String syncProcessName)
   at NAppUpdate.Updater.AppStart.Main()

xelibrion avatar Dec 21 '12 13:12 xelibrion

Sorry for not responding earlier - stupid GitHub notifications

This can probably be solved by having your custom Task in a separate DLL?

synhershko avatar Feb 06 '13 20:02 synhershko

@synhershko yeah, this can be done, but it is just a workaround

xelibrion avatar Feb 06 '13 21:02 xelibrion

What do you propose?

synhershko avatar Feb 06 '13 22:02 synhershko

Use less strict serialization format (JSON?) as this problem will appear for newer versions of NAppUpdate as well, as soon as you change assembly version

xelibrion avatar Feb 07 '13 07:02 xelibrion

This makes sense, yes. Could you provide a Pull Request for that?

synhershko avatar Feb 07 '13 09:02 synhershko