|
very good solution but old .net version support. Please update to the lastest .net version and auto run the update process.
ChungPn
|
|
|
|
|
Good project, but needs to be updated to at least .NET 3.5. Good use of threading and compressed file transfer. It is too bad Microsoft made so many changes to SOAP since .NET 1.1 to make it almost obsolete now.
|
|
|
|
|
Hi,
I tried to install WebUpdate, and at first it looks like great !
But i changed .ini and .config files, and it doesn't work, it said "No files found".
At first i worked, i changed a few things to adapte it to my application, and after a few problem, i choose to delete all and restart.
Also In the Form1[Design] the button looks like new windows 7 theme, whereas once the project is builded the application has the old windows theme, why ?
Sorry for my english, I hope you'll understand my problem and help me
Regards
modified 8-Oct-11 17:54pm.
|
|
|
|
|
Hello,
if you change the .ini file on the client side, you must rename the subfolder accordingly on ther server (inside the folder Updates)
about the windows theme, check if "Application.EnableVisualStyles()" is present in the constructor ... if not, add id
|
|
|
|
|
May i change all the officeexpert links of the project ?
|
|
|
|
|
Perfect solution for my work
Thank you ~!
|
|
|
|
|
out of the box works, but VS converter messes up the code, so no recompile. Also out of the box, MessageBox.Show("xxxx") are all in french. not english.
Could someone upgrade it to VS2005 and 2008 or something and repost each version?
if i try to run debug i get this funky stuff, VS2005 debug:
See the end of this message for details on invoking
just-in-time (JIT) debugging instead of this dialog box.
************** Exception Text **************
System.Web.Services.Protocols.SoapException: UEsDBBQAAAAIAO1ymDy3jjy5TAEAAEEDAAAKAAAAWmlwcGVkRmlsZa2SPU/DMBCGdyT+w00olYinqgNsjVrBUFE1IAbEcE2uaUTsC2f3i1+P3XwUMSC+huhs5+658+s3PVhHWj3SUqUk2zIjq+bCjjOurEoZ68k+o9qVbK4gZJDADi1sDC4rAsdQC/siC0KvG7JOQRzHF4W7hhY9ZdHoPlBuzRarMoeKTOHWsGIBhDFaikdDyNbotyJ4UOdnAICu4yRsfHOnpsI6ZI+GqZPSFFETwA66ghn6AklSj6rDzfqLJaxr8bP6MSZ7RyYs1IN5K+secgz3fDz8CzAoF6CEOkB9+Ado9MviefNEM/9hQVGYrV2DbuLgk9hf+KGtVIvNqYONGqe026dnoP7XJYyZK0IDbi28uzO9FX7QtHFed6YWhPkcBTV5FWz0TdBJpxs0eUXi1RJqxVk09m1Z3sMwMTnwCkpjvOepG9q/JmYv4AQzCmnvUEsBAhQAFAAIAAgA7XKYPLeOPLlMAQAAQQMAAAoAAAAAAAAAAAAAAAAAAAAAAFppcHBlZEZpbGVQSwUGAAAAAAEAAQA4AAAAdAEAAAAA
at System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClientMessage message, WebResponse response, Stream responseStream, Boolean asyncCall)
at System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters)
at WebUpdate.ws_update.Update.GetAllUpdateInfosCompressed(String version) in C:\Documents and Settings\matt_m\My Documents\My Code Project Downloads\WebUpdate_src\BootStrap\Web References\ws_update\Reference.cs:line 89
at BootStrap.Form1.timer1_Tick(Object sender, EventArgs e) in C:\Documents and Settings\matt_m\My Documents\My Code Project Downloads\WebUpdate_src\BootStrap\Form1.cs:line 228
at System.Windows.Forms.Timer.OnTick(EventArgs e)
at System.Windows.Forms.Timer.TimerNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
************** Loaded Assemblies **************
mscorlib
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.3603 (GDR.050727-3600)
CodeBase: file:///c:/WINDOWS/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll
----------------------------------------
WebUpdate
Assembly Version: 1.0.3735.24093
Win32 Version: 1.0.3735.24093
CodeBase: file:///C:/Documents%20and%20Settings/matt_m/My%20Documents/My%20Code%20Project%20Downloads/WebUpdate_src/BootStrap/bin/Debug/WebUpdate.exe
----------------------------------------
System.Windows.Forms
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.3053 (netfxsp.050727-3000)
CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Windows.Forms/2.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
System
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.3053 (netfxsp.050727-3000)
CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
System.Drawing
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.3053 (netfxsp.050727-3000)
CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Drawing/2.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------
System.Configuration
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.3053 (netfxsp.050727-3000)
CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Configuration/2.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll
----------------------------------------
System.Xml
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.3082 (QFE.050727-3000)
CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Xml/2.0.0.0__b77a5c561934e089/System.Xml.dll
----------------------------------------
System.Web.Services
Assembly Version: 2.0.0.0
Win32 Version: 2.0.50727.3053 (netfxsp.050727-3000)
CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System.Web.Services/2.0.0.0__b03f5f7f11d50a3a/System.Web.Services.dll
----------------------------------------
ttrpptzq
Assembly Version: 1.0.3735.24093
Win32 Version: 2.0.50727.3053 (netfxsp.050727-3000)
CodeBase: file:///C:/WINDOWS/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
************** JIT Debugging **************
To enable just-in-time (JIT) debugging, the .config file for this
application or computer (machine.config) must have the
jitDebugging value set in the system.windows.forms section.
The application must also be compiled with debugging
enabled.
For example:
<configuration>
<system.windows.forms jitDebugging="true" />
</configuration>
When JIT debugging is enabled, any unhandled exception
will be sent to the JIT debugger registered on the computer
rather than be handled by this dialog box.
modified on Wednesday, March 24, 2010 3:27 PM
|
|
|
|
|
This is exactly the level of solution I was looking for. Thanks.
|
|
|
|
|
Hello
I receive {"Response is not well-formed XML."} when executing:
object[] results = this.Invoke("GetAllUpdateInfosCompressed", new object[] {
version});
I see that you received this report quite a while ago but there is no public response posted. Can you give a hint about how to fix this.
Thank You
|
|
|
|
|
have you checked this message :
http://www.codeproject.com/script/Forums/View.aspx?fid=278224&msg=1455457
|
|
|
|
|
Hi,
Yes I saw that and had added the [CompressionExtension]
The code looks like this:
[CompressionExtension]
[System.Web.Services.Protocols.SoapDocumentMethodAttribute
("http://tempuri.org/GetAllUpdateInfosCompressed",
RequestNamespace = "http://tempuri.org/",
ResponseNamespace = "http://tempuri.org/",
Use = System.Web.Services.Description.SoapBindingUse.Literal,
ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
public object[] GetAllUpdateInfosCompressed(string version)
{
object[] results = this.Invoke("GetAllUpdateInfosCompressed", new object[] {
version});
return ((object[])(results[0]));
}
The exception looks like this:
System.InvalidOperationException was unhandled
Message="Response is not well-formed XML."
Source="System.Web.Services"
StackTrace:
at System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String MethodName, Object[] parameters)
at WebUpdateClient.ws_update.Update.GetAllUpdateInfosCompressed(String version) in C:\WebUpdate\webupdateclient\Web References\ws_update\Reference.cs:line 51
at WebUpdateClient.Form1.button1_Click(Object sender, EventArgs e) in C:\WebUpdate\webupdateclient\Form1.cs:line 174
at System.Windows.Forms.Control.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ButtonBase.WndProc(Message& m)
at System.Windows.Forms.Button.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
at System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
at system.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(Int32 dwComponentID, Int32 reason, Int32 pvLoopData)
at System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
at System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)
at System.Windows.Forms.Application.Run(Form mainForm)
at WebUpdateClient.Form1.Main() in C:\WebUpdate\webupdateclient\Form1.cs:line 158
at System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args)
at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.ThreadHelper.ThreadStart()
|
|
|
|
|
this is because you get compressed XML from the server and it's not correctly uncompressed on the client ...
if you want you can call GetAllUpdateInfos instead of GetAllUpdateInfosCompressed to get ride of this problem
|
|
|
|
|
Thank You for your responses,
But, the web service does not have a function defined as "GetAllUpdateInfos", have I downloaded a non current version?
But, why would the compressed XML not uncompress correctly?
I tried removing the compression by "//[CompressionExtension]" but I then get the error "Client found response content type of 'text/html; charset=utf-8', but expected 'text/xml'."
This looks like a really great solution and I would really like to get it working.
Thank You
|
|
|
|
|
if you juste want to use it, just dont try to recompile it
it will work out of the box ... all the problems are caused by vs 2005 or 2008 wich break the reference file from vs2003
|
|
|
|
|
I do need to support the app and I do need to compile it.
I did make progress though....
I tried to do an “update web reference” for "ws_update" in the WebUpdateClient workspace and received an IIS metabase error. I tried to resolve that error with the fix at this link http://geekswithblogs.net/narent/archive/2007/03/23/109573.aspx by issuing the command line command “aspnet_regiis –i” as defined in that web page.
After doing that, the “Response is not well formed-XML” exception encountered at "GetAllUpdateInfosCompressed()" was fixed and downloading of the files worked also.
Of course, if you actually do the "update web reference", the generated Reference.cs file gets overwritten and you will have to add the compression modifications again.
Joe
|
|
|
|
|
thanks for publishing this solution
|
|
|
|
|
Hi,
We have an application that is currently being updated with an updater developed around the Patterns and Practices Updater Block. We now find that updates are only successful, when updating the exe or dll files, when the logged on user has administrative rights .
Can I assume your updater will run into the same issues? Do you have any suggestions? Should we be changing the security for our software folder to allow other users access to it? Thanks for any insight. I plan to try out your code and use it in the future to avoid all the overhead with the updater block's manifest creation process...
Oh, and one other question - Do you think it would be difficult to make the update process a "two phase" process? Where we can start a download of updated files, but start the application right away. Then install those files the next time the user starts the application? Our app runs over a WAN connection, and updates may take quite some time to download, that is why I ask.
Thanks for a great tool.
|
|
|
|
|
Hello, my updater doesn't need the user to have admin rights
And unlike the updater application block, my updater detect updates on any files !! not only assemblies
For your 2 phases process ... it's not possible because the way my updater work is by comparing local and remote files... a way to do it could be to first copy the full app folder then run the updater on the copy and run your app in the original folder, then at each launch rename the copy folder to the original folder name
|
|
|
|
|
Hello. I have used this service many times in the past and it has always worked great for me. However, in a recent implementation, I came across the following exception:
Client found response content type of 'text/plain; charset=utf-8', but expected 'text/xml'. The request failed with the error message: -- System.Web.Services.Protocols.SoapException: Server was unable to process request. ---> System.Security.SecurityException: That assembly does not allow partially trusted callers. at System.Security.CodeAccessSecurityEngine.ThrowSecurityException(Assembly asm, PermissionSet granted, PermissionSet refused, RuntimeMethodHandle rmh, SecurityAction action, Object demand, IPermission permThatFailed) at MasterCSharp.WebServices.CompressionExtension.Unzip(String stringToUnzip) at MasterCSharp.WebServices.CompressionExtension.UnzipSoap(Stream streamToUnzip) at MasterCSharp.WebServices.CompressionExtension.Unzip() at MasterCSharp.WebServices.CompressionExtension.ProcessMessage(SoapMessage message) at System.Web.Services.Protocols.SoapMessage.RunExtensions(SoapExtension[] extensions, Boolean throwOnException) at System.Web.Services.Protocols.SoapServerProtocol.ReadParameters() at System.Web.Services.Protocols.WebServiceHandler.CoreProcessRequest() The action that failed was: LinkDemand The assembly or AppDomain that failed was: CompressionExtension, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null The Zone of the assembly that failed was: MyComputer The Url of the assembly that failed was: file:///D:/Hosting/3553549/html/updates/bin/CompressionExtension.DLL --- End of inner exception stack trace --- --.
Has anybody seen this or know why this might be occurring?
Thanks!
|
|
|
|
|
You are certainly deploying your client through clickonce, you have to set full trust to your clickonce app
|
|
|
|
|
You are correct. I have just confirmed that my hosting provider (GoDaddy) no long supports Full Trust for their Shared hosting accounts. They will however enable Full Trust if I purchase a virtual server account. As that is not an option due to the tremendous difference in cost I will most likely develop an FTP solution instead.
Thanks.
-Shawn
|
|
|
|
|
Hey,
Can i use this on an Asp.net web site to allow itself to call another server to get an update ?
The aspect of updating itself is why i ask this question.
|
|
|
|
|
Ok sorry if this is a stupid question.. but how am I supposed to implement this into my application?
I can't run the WebUpdateClient.exe app from my app's load event since it wont be able to overwrite the exe currently running.
Am I then supposed to run the WebUpdateClient.exe first and then on its completion run my application? Sorry, just a bit confused here.
Thanks
|
|
|
|
|
Your user should start webupdate.exe, this will update webupdateClient.Exe and start your application update then you can modify webupdateClient.exe to start your application.exe at the end of the update
|
|
|
|
|
Thanks for providing WebUpdate, its a simple and effective solution for my updating needs.
I made a change to include the file's md5 hash as a field in the UpdateInfos class and I use that now instead of the file time to check if a file needs to be updated. The reason for this was that when uploading a new version to the website folder the ftp client affected all the files times so all the files would be downloaded instead of only the ones that had really changed.
|
|
|
|