Create and Distribute MSI Installers
Wise for Windows Installer 6.0 is a development solution for creating setup kits that use MSI technology.
Wise for Windows Installer 6.0 is a development solution for creating setup kits that use Microsoft's installation (MSI) technology. It supports a wide range of targets, including traditional Windows executables, mobile applications, Web site installations, and product upgrades and patches. You can work in the standalone authoring environment or within the Visual Studio .NET IDE.
This advanced tool goes far beyond the basic utilities that Microsoft provides. This product's prime audience is the specialist package developer who can get the most out of the sophisticated features and customization options. Then again, Wise's user-friendly front end called Installation Expert is a boon for the occasional setup developer. It reminds you to include shortcuts, support information, and enhancements such as custom icons that you might otherwise forget. You can arrange installation files in specific folders on your own working system and then use Wise's useful Files section to drop the files into comparable locations on the target destination.
Version 6 includes a valuable template for installing Web applications on Internet Information Services (IIS) where you have to set permissions and authentication options and create a new Web site or virtual directory (see Figure 1). The creator of the Web installer template wisely emulated Microsoft's IIS GUI so you can configure the eventual destination using a tabbed dialog box that comfortably resembles the Properties dialog used in IIS itself.
Wise Installer makes it easy to ensure that the target system meets prerequisites such as RAM and disk space. You can choose a required OS version from the built-in lists, but you must build specific launch conditions to handle betas and service packs that aren't in the GUI. With the popularity of technical previews, it would be helpful if Wise allowed you to add custom signatures for OS and .NET versions to those dropdowns.
The package includes valuable tools such as a utility for importing project files from InstallShield (a competitor), a validator for logo and Windows installer standards, a patch-creation wizard, and a package editor that supports a wide range of mobile devices. The Import function reads VB, C#, and J# project files and determines automatically what files to include. The WiseUpdate client lets your installed software make periodic checks on the Internet for product updates. The Enterprise version, with its higher price tag, targets corporations that need to track software resources, enforce installation standards, and support deployment teams.
The documentation is well organized and useful. Be sure to work through the Getting Started guide, a fine example of professional technical writing.
Wise Solutions has created a solid, well-rounded package of utilities, designers, and online help. Wise for Windows Installer 6 will raise your confidence level about creating setups that remain robust out in the vast unknown of computer operating systems and software environments.
Wise for Windows Installer Enterprise Edition 6
Phone: 800-554-8565; 734-456-2100
Price: $1,999 for Enterprise (reviewed); $1,199 for Professional; $449 for Standard
Quick Facts: Complete environment and toolkit for creating and distributing installers, updaters, and patches for Windows, Web, and mobile applications.
Pros: Friendly interface; well-designed support for IIS applications; useful and professional documentation and tutorials.
Cons: Can't add OS, beta, and service-pack versions to existing launch conditions lists.
Unplug Code Bottlenecks
by Ken Cox
AQtime 4.3 is an advanced utility for profiling, debugging, and optimizing code in .NET and Win32 applications. You can use it to reveal performance bottlenecks, flag memory leaks, and provide extensive reports on the health of your code (see Figure 1). The software can run either in standalone mode or integrated within the Visual Studio .NET environment.
Advanced developers constitute the primary audience for this package, but it also presents a fine learning opportunity for average programmers who need help writing efficient, tight code. For example, you might be struggling with sluggish performance in a realtime graphing application and wondering where you could optimize it. You can turn AQtime loose on a debug build of the app and watch it report on slow routines and functions that are called frequently. You can use this information to decide where to focus your resourcesfor instance, you might want to use unsafe code for a time-critical algorithm or invest in a third-party graphing engine.
AQtime might overwhelm newcomers at first. A "Getting Started" guide that runs more than 300 dense pages is intimidating enough, but then you're confronted by a busy user interface with a dozen panels and several tabs. Fortunately, you can take it all in bite-sized chunks by heading to the Samples and Tutorials section of the online help. It walks you through several sample applications and acquaints you with the screens, terminology, profiler types, and reports.
You can gather data by pointing AQtime at your modules and tell it what to profile at run time. The useful Get Results button preserves volatile values such as resource usage before garbage collection steps into the picture. You can view results from many anglesthe Editor tab shows the source code for the selected/troublesome routine, the Call Graph displays the hierarchy of calls, and the Call Tree shows a hierarchy of references between objects. You can merge results and export to Excel and other formats for further analysis.
The hard part of using AQtime is interpreting the results, understanding what is wrong, and deciding what to fix. The product offers tidbits if you dig into the right areas. For example, the Summary tab lists "Performance hot spots," such as threads with the worst performance. A search of the online help also provides limited guidance on fixes, such as checking the "% with Children" column to see if the routine is making expensive callsin which case you could consider moving the child call out of a loop. A beefed-up wizard-like Assistant pane that interprets selected results and displays suggestions onscreen dynamically would be a superb addition.
AQtime is a valuable tool for advanced coders and sold at a reasonable price. The next challenge is to broaden its appeal by flattening the learning curve and making it less intimidating to the average developer who probably needs it most.
Quick Facts: Utility for profiling, debugging, and optimizing code in .NET and Win32 applications.
Pros: Quickly produces extensive reports on code and its performance at run time and in static mode; allows many ways to view statistics and drill down into bottlenecks; extensive documentation.
Cons: Oriented mainly toward advanced developers; could use wizard-like advisors to assist average programmers with solving performance issues.