Blogs

This Blog

Subscribe (RSS, Email)

Mehul Harry's DevExpress Blog

JavaScript, HTML 5, ASP.NET, DevExpress, ASP.NET MVC & WebForms, and News - Mehul Harry's DevExpress blog

How To Deploy DevExpress DLLs With Free Utility

Brendon Muck [DX-Squad]  Check out Brendon Muck’s awesome utility that helps you deploy DevExpress runtime DLLs to your servers. Brendon has created a free and open source tool that’s built with DevExpress controls.

Check out Brendon’s guest post for this blog that describes the tool. Oh and please ignore Brendon’s request in the PS line below. :)

----------------------------------------------------------

DX Server Installer By Brendon Muck

----------------------------------------------------------

Based on some of the comments from Julian's EULA blog, I whipped up a little application to handle deploying DevExpress assemblies to a list of target servers and installing them into the Global Assembly Cache of those target machines.

How it Works:

This application uses the Microsoft PsExec tool to invoke console line commands on a remote machine. In this case, it calls the .NET GacUtil executable to install an assembly into the Global Assembly Cache. You select the assemblies you want to install, they are copied to the target server(s), and installed.

How to Use It:

Rather than retrieve assemblies from the Global Assembly  Cache, I went the lazy way and simply browse a directory for DevExpress dlls. This defaults at start-up to the directory where I have MY DevExpress dlls installed. Browse for a directory, or start typing one in (the ButtonEdit control will autocomplete your path for you--did you know that you can do that?) and click "Load Assemblies".

Next, select the file(s) you'd like to deploy, and then head on over to the Target Machines group and enter the machine name for any server you'd like to deploy to.

Finally, click the big install button at the bottom, and cross your fingers that it works.

Requirements:

This was built using DevExpress v9.3.2.0, so that would help. If you have a higher version of DevExpress installed, then use the Project Converter tool to change the references.

The PsExec and GacUtil executables are already included with the package, so there's no need to download/install them.

You will need appropriate network rights to be able to copy your files to the deployment target(s) and install into the GAC.

Screens:

DX Server Installer Screenshot 1

DX Server Installer Screenshot 2 

Downloads:

Binaries only

Source

 

Feedback

Please leave suggestions and application issues through the CodePlex project page: http://dxserverinstaller.codeplex.com/

Support

Please keep in mind that this application is not sanctioned or affiliated with DevExpress in any way. Please do not contact them regarding it.

Disclaimer: (Some web site I copy and pasted this from)

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

PS. In lieu of sending me monetary donations to express your gratitude, feel free to just punch Mehul in the stomach next time you see him at a TechEd or similar event.

---------------------------------------------------------------------------

---------------------------------------------------------------------------

Download the DX Server Installer tool and it’s source code for free from the CodePlex project home page. However…

Please keep in mind that this application is not sanctioned or affiliated with DevExpress in any way. Please do not contact them regarding it. –Brendon

You can leave Brendon feedback through the CodePlex project page: http://dxserverinstaller.codeplex.com/

Thanks Brendon for the guest post and fantastic utility!

Published Feb 05 2010, 10:15 AM by
Filed under: , ,
Bookmark and Share

Comments

Joseph

Why on earth I should use this tool when ClickOnce does much better job.....but having said that using PsExec is bit complicated as well

February 5, 2010 2:22 PM

Brendon Muck [DevExpress MVP]

This is not a ClickOnce replacement. It's meant to install DLLs into the Global Assembly cache of a network machine (typically a web server). Read Julian's referenced blog, and you'll understand why I created it.

February 5, 2010 3:00 PM

Heather

Thanks Brendon... :)

February 5, 2010 5:34 PM

Lex Li

This is a nice post. However, it is not "pure" to me if an open source project relies on non-open source library (even if that library is free).

February 5, 2010 8:08 PM

Brendon Muck [DevExpress MVP]

I appreciate your opinion, Lex, and thanks for commenting. I agree that the reliance on the PsExec and GacUtil libraries along with the DevExpress products does mean it's not a "true" open source project. However, I never really intended for it to be an on-going, community-supported open source project. This was just an afternoon coding session I undertook to help some people out by attempting to alleviate their frustrations with regards to deploying DevExpress DLLs to remote machines.

While the application does rely on the user having certain DevExpress products installed on their machine, I felt it would be a good benefit to novice users who want to see various DevExpress products used in a realistic environment. Even with a small application such as this, I'm able to demonstrate the XtraGrid, XtraLayout and XtraBars components and some common functionality among these components.

February 6, 2010 3:11 AM

Brendon Muck [DevExpress MVP]

Heather: I liked your suggestion(s) in Julian's blog about scanning a solution file and creating a specific list of deployment DLLs for a project. I think this is something I will consider building into the next iteration of my project if there is enough interest in it.

February 6, 2010 3:15 AM

Rick Bartlett

Brendon, awesome...

Thank you very much for this effort. We have many servers and this will save me a lot of time.

February 6, 2010 12:31 PM

Rick Bartlett

Hmmm, I get this error in VS2010 de 9.3.3 when I open the frmMain in vs designer. I'm an asp.net developer and have not worked with windows forms in 2010. Is this a compatability issue?

at DevExpress.XtraBars.Utils.BarManagerDockingHelper.UpdateDockingSize()

at DevExpress.XtraBars.Utils.BarManagerDockingHelper.CheckForceUpdateDockControls()

at DevExpress.XtraBars.BarManager.OnFormLayoutChanged(Object sender, LayoutEventArgs e)

at System.Windows.Forms.Control.OnLayout(LayoutEventArgs levent)

at System.Windows.Forms.ScrollableControl.OnLayout(LayoutEventArgs levent)

at System.Windows.Forms.Form.OnLayout(LayoutEventArgs levent)

at DevExpress.XtraEditors.XtraForm.OnLayout(LayoutEventArgs levent)

at System.Windows.Forms.Control.PerformLayout(LayoutEventArgs args)

at System.Windows.Forms.Control.PerformLayout()

at System.Windows.Forms.Design.FormDocumentDesigner.OnLoadComplete(Object source, EventArgs evevent)

at System.EventHandler.Invoke(Object sender, EventArgs e)

at System.ComponentModel.Design.DesignerHost.OnLoadComplete(EventArgs e)

at System.ComponentModel.Design.DesignerHost.System.ComponentModel.Design.Serialization.IDesignerLoaderHost.EndLoad(String rootClassName, Boolean successful, ICollection errorCollection)

at System.ComponentModel.Design.Serialization.BasicDesignerLoader.OnEndLoad(Boolean successful, ICollection errors)

at System.ComponentModel.Design.Serialization.CodeDomDesignerLoader.OnEndLoad(Boolean successful, ICollection errors)

at System.ComponentModel.Design.Serialization.BasicDesignerLoader.System.ComponentModel.Design.Serialization.IDesignerLoaderService.DependentLoadComplete(Boolean successful, ICollection errorCollection)

at System.ComponentModel.Design.Serialization.BasicDesignerLoader.BeginLoad(IDesignerLoaderHost host)

at System.ComponentModel.Design.DesignerHost.BeginLoad(DesignerLoader loader)

February 6, 2010 12:49 PM

Brendon Muck [DevExpress MVP]

The utility was built using v9.3.2.0, so if you're attempting to compile the original source, I'd suggest running the DevExpress Project Converter on it first.

February 6, 2010 1:23 PM

Rick Bartlett

I did run the converter first. So, I reverted back to vs2008 and no problems there.

Note for all...

Create a share on the deployment server first and then change: string RemotePath = String.Format(@"\\{0}\ADMIN$\{1}" accordingly in AssemblyInstaller.cs

February 6, 2010 1:39 PM

Brendon Muck [DevExpress MVP]

What OS is the server you're deploying to? ADMIN$ is just a generic UNC path to an administrative share. It is possible to disable admin shares, but the path the DLL is copied to isn't really important; in fact, it's deleted immediately after GAC registration.

Perhaps I can provide an option for the user to specify where to (temporarily) copy the assembly.

As for your previous post regarding VS 2010 compatibility: I believe DevExpress is still working on making their components compatible with the 2010 IDE. I don't have a 2010 BETA installed, so I can't test against it, but DX has blogged about problems with 2010.

February 7, 2010 1:09 AM

Rick Bartlett

Not a network guru, but ADMIN$ was not doing it for me. I'm a local admin on the server, 2003 R2 Enterprise x64

Side note: no problems developing Asp.net DX applications on vs2010. Other that vs 2010 crashing regularly.

February 7, 2010 12:25 PM

Heather

The scanning version would be a most welcome addition.  We typically do not deploy our support dll's into the GAC on our servers.  We isolate the dll's to the applications because it is easier to manage multiple versions with testing, etc.  

February 7, 2010 9:07 PM

Saif Khan

Kudos Brendon! Nice work!

February 8, 2010 11:26 AM

Christopher D. Todd

I've heard people on occasion mention that it was difficult to get the dlls deployed. I've always found it easy for both web and form apps. I just go to the project's reference section and set the "Copy Local" property for each DevExpress reference to True. When ever I make a build, it copies the dlls to the bin folder.

February 8, 2010 10:13 PM

Christian Andersen

I do the same as Christopher. Why go through all this for deployin the dll's when i can be done the way Christopher describes?

February 10, 2010 6:52 AM

Rick Bartlett

I don't see this option "Copy Local" in a Website project. Maybe I'm blind. I know it's there for Winforms, my VS must be broken.

February 10, 2010 8:24 PM

Brendon Muck [DevExpress MVP]

Rick,

I believe it depends on how you create your project to begin with. That is, if you choose FILE --> New Project versus FILE --> New Web site in VS.

February 11, 2010 10:14 AM

goran sabados

hi,

any idea why this nice utility works fine for 2009 dll's but can't find newer version.

List is empty when I direct it to folder with 2010.1 dll's !?

October 20, 2010 8:59 AM

Brendon Muck [DevExpress MVP]

Hi Goran,

I don't have v2010 so I can't do any full tests, but if you look at the source code (available at the Codeplex link above), you can look at the DxAssembly class' RetrieveAssemblies method to see if it's failing. Essentially, that method should collect ANY managed DLL which doesn't contain "design" in the filename (since DevExpress design dlls shouldn't be deployed).

There's nothing special to what is going on in that method or anything version-specific. I've even pointed the program to another directory containing non-DX .NET dlls, and it picks them up just fine. The method will NOT drill-down through directories, so it needs to be pointed to the EXACT folder containing the dlls (on my machine, this is a folder called "DevExpress.DLL").

October 21, 2010 9:39 AM

Anastasius

THANK YOU!

April 22, 2013 8:45 AM

About Mehul Harry (DevExpress)

Mehul Harry is an ASP.NET technical evangelist at Developer Express. You can reach him directly at mharry@DevExpress.com. You can also follow him on Twitter: http://twitter.com/mehulharry
LIVE CHAT

Chat is one of the many ways you can contact members of the DevExpress Team.
We are available Monday-Friday between 7:30am and 4:30pm Pacific Time.

If you need additional product information, write to us at info@devexpress.com or call us at +1 (818) 844-3383

FOLLOW US

DevExpress engineers feature-complete Presentation Controls, IDE Productivity Tools, Business Application Frameworks, and Reporting Systems for Visual Studio, along with high-performance HTML JS Mobile Frameworks for developers targeting iOS, Android and Windows Phone. Whether using WPF, Silverlight, ASP.NET, WinForms, HTML5 or Windows 8, DevExpress tools help you build and deliver your best in the shortest time possible.

Copyright © 1998-2014 Developer Express Inc.
All trademarks or registered trademarks are property of their respective owners