Updated Utility: WebDeploy

Published Friday, April 02, 2004 4:02 PM

WebDeploy has been updated. Please visit here for more information.

WebDeploy has hit v0.8 with some new features that have been requested since the last version, as well as some fixes to bugs that existed previously.  The user interface hasn't changed much, so no pictures are to come.  But alas, everyone's always interested in what has been changed, fixed or added... so, drumroll please...

  • Added support for visual studio projects as a source.
  • Added button to change the name of a file in the files to copy dialog.
  • Added ability to exclude folders.
  • Fixed error when copying over files when Read Only attribute is set.
  • Fixed settings bitmap to be transparent.
  • Fixed problem updating ftp profiles.
  • Modified to only allow one instance to be running at a time.
  • Modified storage of previously used source & destination locations.

Like always, WebDeploy is freeware, and the source code is not available. If you have any further suggestions/comments/ideas/problems, please do not hesitate to contact me or post them on this blog post.

If you wish to download WebDeploy, click here. You will need the .NET framework 1.1.4322 to run WebDeploy.

by mhawley
Filed under:

Comments

# Chris Martin said on Saturday, April 03, 2004 9:02 AM

After finding your tool and realizing what I needed was to import a VS.NET project file, I decided to write my own little "deployer". It's definately not as cool as your's.

Then I saw this post. YAY!!

But, then I run it only to have it crash on me by just pressing the VS project browse button. BOO!!! ;)

Somebody isn't check boundaries.

Here's the exception.

System.ArgumentOutOfRangeException: Length cannot be less than zero.
Parameter name: length
at System.String.Substring(Int32 startIndex, Int32 length)
at eWorld.Apps.WebDeploy.210ff09a2516b1a7.e66da26517d259bf(Object e0292b9ed559da7d, EventArgs fbf34718e704c6bc)

# Chris Martin said on Saturday, April 03, 2004 9:04 AM

And another thing. Do you really name your classes and methods like that? Or is that the work of some obfusicator?

# Matt Hawley said on Saturday, April 03, 2004 11:38 AM

Obfuscator...I'll get a fix up for that later today, I have an idea on what it is.

# David said on Monday, April 05, 2004 12:00 AM

I downloaded the new version and now I get "Strong name validation failed" errors in WebDeploy-GUI.exe. Unfortunately I lost my old version. Is there a link to the old zip file somewhere?

# Matt Hawley said on Monday, April 05, 2004 1:15 AM

Arr - I forgot to resign the assemblies...too much things going on this weekend. I removed the file at 10:15 PM CST, and I'll get it back up (and working) first thing Monday morning.

# Matt Hawley said on Monday, April 05, 2004 11:52 AM

Okay - everything should be good again.

# David said on Monday, April 05, 2004 11:38 PM

Works great now. thanks!

# Brian said on Wednesday, April 07, 2004 11:45 AM

just downloaded... I am using correct version of .net, Windows XP Pro.

System.InvalidOperationException in WEbDeploy-gui.exe

I rebooted, uninstalled, downloadeda again... same thing.

# Matt Hawley said on Wednesday, April 07, 2004 11:46 AM

Brian - shoot me an email through my contact.

# mystere said on Wednesday, April 07, 2004 9:04 PM

Great work Matt. The read-only option is a real time saver.

One question though, I can't seem to locate the "Exclude Folder" option. Where is it?

A few bugs i noticed: Click Deploy, then click the close button. It starts deploying anyways. Click cancel and it stops, but the button doesn't change back to "Deploy". It only does this the first time you run it AFAICT.

The setting "Show Folders To Include Dialog" doesn't seem to do anything. It still shows the folders whether it's set or not.

Other than that, good job!

# mystere said on Wednesday, April 07, 2004 9:17 PM

One other issue. At least once I've received an exception in the profile configuration. I was unable to duplicate it. Also, on several occasions when I shut down the application, the window closes but the process stays running in memory.

# Matt Hawley said on Wednesday, April 07, 2004 11:52 PM

I'll look into them, keep the bugs coming!

# mystere said on Friday, April 09, 2004 2:09 PM

You didn't answer my question :)

Where is the "Exclude Folders" option? I can't find it.

# Matt Hawley said on Friday, April 09, 2004 2:15 PM

You'll need to configure your profile.

# TrackBack said on Saturday, April 10, 2004 5:56 PM
# mystere said on Tuesday, April 13, 2004 2:43 PM

I did configure the profile, I can't find any setting for excluding folders. On what dialog should it appear?

# Matt Hawley said on Tuesday, April 13, 2004 3:53 PM

It should be with all the other checkboxes on the first profile config screen. Are you sure you're running 1.8 or 1.8.1 ?

# mystere said on Wednesday, April 14, 2004 6:01 PM

Ahh.. Ok, I think I misunderstood the feature. I thought you meant that you could configure which folders to include and persist that.

The Show Folders To Include dialog allows you to unselect foldres, but this doesn't seem to persist.

# Matt Hawley said on Wednesday, April 14, 2004 6:04 PM

Nope, it sure doesn't. Mainly because you can change your source from time to time.

# Brad J said on Monday, April 26, 2004 3:22 PM

If you hit deploy on a project and then hit Show Log you recieve the following error.

Here is the full thing.

************** Exception Text **************
System.IO.IOException: The process cannot access the file "C:\Program Files\WebDeploy\DeployeLOG.wdlog" because it is being used by another process.
at System.IO.__Error.WinIOError(Int32 errorCode, String str)
at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, Boolean useAsync, String msgPath, Boolean bFromProxy)
at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize)
at System.IO.StreamReader..ctor(String path, Encoding encoding, Boolean detectEncodingFromByteOrderMarks, Int32 bufferSize)
at System.IO.StreamReader..ctor(String path)
at eWorld.Apps.WebDeploy.995ed0692c6a073d..ctor(d49f21b461104655 config)
at eWorld.Apps.WebDeploy.210ff09a2516b1a7.e97dda61ecc49717(Object e0292b9ed559da7d, EventArgs fbf34718e704c6bc)
at Reflector.UserInterface.CommandBarControl.OnClick(EventArgs e)
at Reflector.UserInterface.CommandBarControl.PerformClick(EventArgs e)
at Reflector.UserInterface.CommandBar.PerformClick(CommandBarItem item)
at Reflector.UserInterface.CommandBar.WndProc(Message& message)
at System.Windows.Forms.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


************** Loaded Assemblies **************
mscorlib
Assembly Version: 1.0.5000.0
Win32 Version: 1.1.4322.573
CodeBase: file:///c:/windows/microsoft.net/framework/v1.1.4322/mscorlib.dll
----------------------------------------
WebDeploy-GUI
Assembly Version: 0.8.1.0
Win32 Version: 0.8.1.0
CodeBase: file:///C:/Program%20Files/WebDeploy/WebDeploy-GUI.exe
----------------------------------------
System.Windows.Forms
Assembly Version: 1.0.5000.0
Win32 Version: 1.1.4322.573
CodeBase: file:///c:/windows/assembly/gac/system.windows.forms/1.0.5000.0__b77a5c561934e089/system.windows.forms.dll
----------------------------------------
System
Assembly Version: 1.0.5000.0
Win32 Version: 1.1.4322.573
CodeBase: file:///c:/windows/assembly/gac/system/1.0.5000.0__b77a5c561934e089/system.dll
----------------------------------------
CommandBar
Assembly Version: 2.0.0.0
Win32 Version: 2.0.0.0
CodeBase: file:///C:/Program%20Files/WebDeploy/CommandBar.DLL
----------------------------------------
System.Drawing
Assembly Version: 1.0.5000.0
Win32 Version: 1.1.4322.573
CodeBase: file:///c:/windows/assembly/gac/system.drawing/1.0.5000.0__b03f5f7f11d50a3a/system.drawing.dll
----------------------------------------
WebDeploy.Common
Assembly Version: 0.8.1.0
Win32 Version: 0.8.1.0
CodeBase: file:///C:/Program%20Files/WebDeploy/WebDeploy.Common.DLL
----------------------------------------
System.Data
Assembly Version: 1.0.5000.0
Win32 Version: 1.1.4322.573
CodeBase: file:///c:/windows/assembly/gac/system.data/1.0.5000.0__b77a5c561934e089/system.data.dll
----------------------------------------
System.Xml
Assembly Version: 1.0.5000.0
Win32 Version: 1.1.4322.573
CodeBase: file:///c:/windows/assembly/gac/system.xml/1.0.5000.0__b77a5c561934e089/system.xml.dll
----------------------------------------

************** JIT Debugging **************
To enable just in time (JIT) debugging, the config file for this
application or machine (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>

# William Bartholomew said on Wednesday, May 12, 2004 8:40 PM

Great utility! I use a different web.config file locally to what I use on the production server, it would be great if I could pick a .config file for a profile and have it automatically renamed to web.config when it's deployed.

# TrackBack said on Wednesday, May 12, 2004 9:42 PM
# Matt Hawley said on Thursday, May 13, 2004 10:12 AM

William,

You can inheritely do this -

1. Modify your profile to show the files to be copied prior to copying them.
2. Add a extension that you use for your common config files.
3. Start deployment, and a new window will be opened up where you can choose which files you want to include. At this point, de-select which config files you don't want to be copied. Also at this point, you can rename the 1 config file that you wish to be copied to Web.Config.
4. Continue with the transfer process and the appropriate config file is written as web.config

:)

# Richard E said on Friday, May 14, 2004 11:34 AM

Love the deploy tool. We had been using something similar here at work that we built but I'm giving yours a try for a while.

One thing I find useful that we have incorporated, is the ability to only deploy files that have been updated since a date/time. Makes a nice quick deploy to customers when I'm working through a slow VPN.

# Matt Hawley said on Friday, May 14, 2004 11:37 AM

Don't fret Richard, thats available on a per profile basis :)

# DMA said on Wednesday, May 19, 2004 2:27 PM

Hi MAtt

Love the tool... one thing... though I put a path into the FTP profile, it chooses to dump it in the FTP root... Using .81, and specified dir as www/thedir or www\thedir

# Steve Celius said on Wednesday, May 19, 2004 5:05 PM

Nice!
A little bug with the command line version:
The /s switch does not work if it ends with a backslash. VS.NET post build event macros, $(ProjectDir) for an example, ends with a backslash.

v0.8.1.0, and I'm not specifying a profile (/p)

I hardcoded the paths, as a workaround.

# Vicenç Masanas said on Friday, June 04, 2004 7:04 AM

First of all a great thanks for this wonderful program. I just dowloaded it yesteday and found it very nice.
Now a few suggestions / requests:
- When you start deploying (click Deploy) there no way to cancel the action. If you close the window by clicking the X it just continues. I think a cancel button is needed here

- Exclude files/folder. While you can just deselect the files and folders you don't want to deploy it would be very nice if this feature could be a part of the profile, as the file extensions are. If not the automation is very hard because you don't have control over what files/folder exclude.

- That last one is just to make the perfect tool. Provide a help file both form UI and unatended versions.

Thanks again

# Matt Hawley said on Sunday, June 06, 2004 7:19 PM

Steve Celius,

I just got around to testing your submission, and it seems to be a problem with how arguments are determined. It's passing in a double quote because of \" in the string. Could this be a problem with .NET or the console, probably, but it is (unfortunately) something I cannot handle.

# TrackBack said on Friday, June 25, 2004 4:56 PM
# TrackBack said on Monday, August 23, 2004 11:15 PM
# TrackBack said on Monday, September 13, 2004 2:19 PM
# TrackBack said on Monday, September 13, 2004 2:23 PM