Deploy Any App Anywhere
InstallShield X is a comprehensive and robust installation-authoring tool that supports multiple OSs, development environments, and deployment scenarios.
Deploying any kind of software application is one of the most complex tasks you face as a developer. It's difficult to prepare an app correctly for installation on every possible system configuration and provide deployment options. InstallShield X Professional Edition from InstallShield Software attempts to help you do it all. The product brochure says that InstallShield X is "the most comprehensive all-in-one installation-authoring solution for every platform, operating system, and device." InstallShield X lives up to this ambitious claim.
InstallShield X is a great choice for creating comprehensive installation packages if you need to work with complex deployment scenarios. It's probably overkill if you deploy full desktop or Web applications only on Windows. InstallShield X supports every major OS in widespread use, including Windows, Linux, and various Unix flavors. You can deploy complete installations or only patches on any kind of media or online, to desktop machines as well as mobile devices. The impressive array of InstallShield X features makes it difficult to envision a deployment scenario the product doesn't support.
You can create installation packages by using either the standalone IDE or tools that integrate with various platform tools, such as the VS.NET add-in for working with Windows apps. InstallShield X supports basic Windows Installer (MSI) packages that don't include custom scripting, as well as packages that consist only of custom InstallScript installationsand combinations of the two.
The most difficult aspect of using this comprehensive product is that you have to choose among 18 kinds of setup projects and among many paths that accomplish the same tasks. However, InstallShield X includes plenty of features to guide you through the various processes, including a Welcome Assistant to help you decide which project type to use, a Project Assistant to step you through creating the basic package, and an Installation Designer to let you dive into the details. The company also provides ample online resources to help you deploy applications. The strong UI, great support, and good documentation provide all the help you need to create robust installation packages.
Creating an installation successfully is a complex undertaking that requires a great deal of thought and tweaking, even when you use a powerful product such as InstallShield X. Learning InstallShield X and all its first-rate tools requires hard work, but you'll find that the results are well worth the effort.
InstallShield X Professional Edition
Quick Facts: Comprehensive installation-authoring tool for any platform.
Pros: Support for many OSs, development environments, and deployment scenarios; wizards and tools automate authoring.
Cons: Requires complex choices; sometimes too many ways to accomplish the same task.
Create Robust Forms
by Andy Clark
Developer Express' .NET Windows Forms Components Suite adds completely customizable UI tools to VS.NET. The suite includes a grid control, a hierarchical tree list, a menu-bar editor, a vertical grid control, a report writer, and editors you use throughout the suite. All these tools integrate fully into VS.NET.
You can use the suite to create UI elements that are both visually striking and functional. All the components support a variety of styles, fonts, colors, and other formatting features. You can specify the controls' look-and-feel properties easily at design time and control them at run time through Developer Express' API. The components work with a variety of editors that allow you to incorporate checkboxes, combo boxes, calculators, calendars, progress bars, and many other presentation tools into your components.
The grid controlXtraGridis especially versatile. Many users like working with tables and controlling their tables' format and content with an Excel-like interface. XtraGrid lets you create this type of user environment. The control supports conventional grids, hierarchical grids, and even multitier hierarchies. For example, you can show your users a hierarchical grid of customers, with each customer's orders visible below the customer name and order details visible beneath each order. The users can collapse and expand the order and order-detail information, as in a multitier treeview. XtraGrid links with VS.NET data sets, allowing you to develop grids quickly for your applications. It also supports in-place editing of grid data.
The suite's other tools include a hierarchical tree-list toolXtraTreeList (see my First Look in VSM's October 2003 issue). The XtraVerticalGrid control lets you create a grid that's turned on its side. The headers move to the side of the grid, and the rows of data are presented horizontally. This gives users an intuitive format for comparing data.
The menu-bar toolXtraBarssupports a variety of menu, button-bar, and status-bar capabilities. You can use it to give your applications the look and feel of Office, XP, IE, or any other environment you customize. XtraNavBar works with XtraBars to add browser and explorer capabilities to your applications.
XtraReports, the suite's full-featured report writer, makes building a report similar to creating a .NET form. XtraReports supports charts, subreports, end-user design features, and a variety of other advanced options.
Developer Express provides lots of sample code, and you have the option of purchasing the source code for the suite itself. You'll find good documentation and a set of superb getting-started tutorials. Developer Express' support is timely, professional, and knowledgeable. Developer Express .NET Windows Forms Components Suite is a mature product that can make a significant difference in the quality of your applications.
.NET Windows Forms Components Suite
Quick Facts: Set of .NET WinForms UI tools.
Pros: Fast, flexible, and comprehensive tools; excellent documentation.
Prevent Reverse Engineering
by David Mack
.NET applications' use of Microsoft Intermediate Language and Just In Time compilation makes them vulnerable to reverse engineering. Someone with a decompiler or disassembly tools might be able to determine fairly easily how your program is implemented. Dotfuscator from PreEmptive Solutions "scrambles" your .NET executables and assemblies so they're less susceptible to reverse engineering. It uses variable and function renaming, string encryption, code pruning, and other techniques to protect your intellectual property without interfering with your applications' original functionality. Dotfuscator doesn't necessarily "break" a decompiler or cause it to crash, but it prevents it from generating useful output.
You can run the product as a standalone application or inside VS.NET. Dotfuscator also provides command-line options you can use if you write build scripts. The standalone application's easy-to-use UI lets you create a project, select the options you want for obfuscation, and then build the project. The build process doesn't compile source code but rather obfuscates the files you've selected. It creates a subdirectory in the same folder where your original executable resides and places the obfuscated files in it.
When you register the product, PreEmptive sends you a code to activate the part of Dotfuscator that integrates into VS.NET. Don't confuse the Professional Edition with the Community Edition that comes with VS.NET. The Community Edition provides basic functionality, but it doesn't give you as much protection as the Professional Edition. You can access the same options you find in the Professional Edition's standalone version when you use it within VS.NET, by navigating to them with right-clicks or by double-clicking on properties.
You might encounter a few minor anomalies with Dotfuscator. You can see the stack traces your obfuscated application creates, but they contain the scrambled function names. Dotfuscator's debugging tools help you prevent this from becoming much of a problem. Also, you might need to change your build process so obfuscation doesn't interfere with the strong naming.
It would be nice if future Dotfuscator versions could make intelligent guesses about which files should be obfuscated. The program could then pop up a dialog asking if these are the files you want obfuscated and letting you select and deselect as needed. This would save time when you're working with a large project.
Overall, Dotfuscator is a great product that people at any skill level can use. Developers of most commercial and government .NET apps would be sensible to take advantage of it, given the serious risks their unprotected apps are exposed to.
Dotfuscator Professional Edition
Pricing: $1,495 per license
Quick Facts: Scrambles your executables and assemblies so they're less likely to be reverse engineered; prunes unused code out of files.
Pros: Protects intellectual property or sensitive info; integrates into VS.NET.
Cons: Minor changes to build procedures necessary if you use strong naming.
Design Custom Labels
by David Mack
Suppose you'd like to print labels, inside a custom app, for all or a subset of the information in a large database. You might even want to let your app's users design their own labels. List & Label 10, a report-generating tool from combit GmbH, meets both needs. You can use this product's built-in designer to create customized reports or labels. List & Label supports a variety of programming languages, including VB.NET, C#, Visual C++, and VB.
Installation of List & Label is relatively easy. After a reboot, you can view a "First Steps" section that walks you through integrating the software with your own .NET applications. I created a simple WinForms application using C# and tied it to a data set from SQL Server. Then, I added a couple of dialog buttons in preparation for adding the List & Label control to the applicationone to launch the designer and one to print the list reports. Adding the control is easy, especially if you have experience adding third-party components to .NET apps. It took one line of code to enable the designer launch and one line to enable report printing.
Learning how to create the reports using the List & Label designer is more of a challenge. The designer's interface isn't intuitive and requires more mouse clicking than ought to be necessary. I was able to figure out how to manipulate data fields and labels only through trial and error. The product documentation could be improved. I had to read some sentences multiple times to understand their meaning. Fortunately, you can get some guidance by studying examples that the application installs.
The product's integration with Visual Studio .NET could also be improved. For example, you must right-click on the List & Label icon in the solution to start the designer. You also have to go through the time-consuming task of learning the product's "scripting" language in order to design a label report.
Once I generated my label-report template, I could run the report and go back and tweak incorrect fields easily. A nice feature is the "Preview" functionality that uses real data from your database. It lets you see how the data looks before you commit to a particular format. Another useful feature is the ability to send data files directly to another person, using SMTP. The recipient can't change your data but can still print it. List & Label also offers a PDF export feature that provides similar functionality.
List & Label is a powerful tool with a fairly steep learning curve. You'll find it useful if you can invest the time to learn all of its features. If your users aren't comfortable with the designer, you might prefer to use the product to generate canned reports instead.
List & Label 10 Professional
Pricing: Contact vendor for pricing.
Quick Facts: Tool for developing custom reports and labels.
Pros: Users can design their own labels; ability to e-mail list and reports automatically.
Cons: Time-consuming learning curve is required for effective use.
About the Author
Don Kiely is a senior technology consultant in Fairbanks, Alaska. When he isn't writing software, he's writing about it, speaking about it at conferences, and training developers in it. Reach him at [email protected].