A few weeks ago I was doing Q&A at the SMS booth with some Microsoft employees at TechEd and a woman approached us about the best way to roll out a particular piece of software. If I remember correctly, she currently uses InstallSheild to call the vendor's silent installation routine but her question was in regards to the package reporting fields within the SMS Administrator's console. After she walked away the comment was made to me "People still package software before rolling it out, huh?".
WOW. I was blown away that there are people inside the SMS Product group don't really think that packaging isn't a major piece of a solid SMS Infrastructure. I'd actually go out on a limb and say it's one of the most critical pieces of a good SMS implementation. This made me do a little research into some of the documentation that’s out there for SMS2K3 to find some information on software packaging. Low and behold there really isn't much out there. In fact this is pretty much all there is:
SMS Installer
You can use SMS Installer to create an executable file that you can add to a package and advertise to clients. SMS Installer creates a self-extracting file or Windows Installer file that includes the data and files for the software application and the installation script that you created using SMS Installer. By using the SMS Installer Script Editor, you can modify the installation script that SMS Installer creates.
SMS Installer does not create the package, distribution points, or advertisements within SMS, so you must use another method to perform these tasks. SMS Installer creates a package definition file that can be imported into SMS with either the Distribute Software Wizard or the Create Package from Definition Wizard. For more information about SMS Installer, see Chapter 7, "Creating Software Installation Packages with SMS Installer."
Really when I think back at all the Microsoft demo's and conference sessions you almost always see them call an ISV's silent installation directly in the program command line or an MSI. Now I know that there are many people within the SMS Product group that don't think app's should be deployed like this. In fact I was even talking with one of them (names not divulged to protect the innocent!) when I was in Redmond and he went on for about 20 minutes at lunch telling me about one customer that started taking people with high levels of software development in their backgrounds and made them packagers for SMS. When this started happening the quality of packages and success rates of deployments went up by a dramatic level. Why is this? IMHO for a couple of reasons:
1. Developers are usually more detail orientated. They make sure that a package is fully tested across all platforms and all bugs are worked out before deployment in the same manner that they would test a new product that they developed before selling it to a customer.
2. Developers account for unknown variables in the environment. Just sending out a package isn't enough as you need to think about what might cause your installation to fail as well as fallback on experience of things you know have impacted your installations in the past.
There are also other factors which tell me not everyone believes software packaging is dead. Take a look at the SMS2K3 SDK. If the SMS Product group didn't think that packaging was still important why would they create functions like InstallStatusMIF?
And what about the line of business applications that don't support silent installation parameters? Smaller organizations with budget constraints are stuck with using SMS Installer for repackaging which, lets face it, is getting to be an antiquated tool that hasn't been updated in quite some time. They don't have the resources to put towards an enterprise packaging toolset like Wise or InstallSheild in order to do quality deployments.
Time for an update!
So what needs to change? I think its Microsoft's perception of the SMS Administrator to be perfectly honest, as it is the SMS Admin's toolsets have needed to grow for SMS 2003. The days of the 2.0 Admin are gone with just needing SMS and some domain knowledge. SMS 2003 ties in more closely with AD for one so knowledge of LDAP communication with the directory, etc is needed (and don't even get me started on the amount of time people spend troubleshooting MP communication issues because of SPN registration issues or Computer access/authentication problems) as well as IIS configuration and so forth. Its really funny when I see a vendor at a trade show talking about how their management technology can solve all of your problems because they have all these built in reports, etc, so you won't need to waste time on that stuff. No way any ISV can do that. The purpose of reporting is so it can be customized for your organization so the knowledge to do that stuff has to be in-house, especially with really large organizations. The same thing goes for Software Packaging. Really good packaging teams have reporting built into their installers to make troubleshooting easy and reporting integrated into your SMS site. Some common things done to improve software packages are:
- Standard package logging location with easy to follow flow and error messages
- Registry reporting for inventorying
- Custom SMS Status Messages
- Package Versioning for tracking of bugs
- Anti-Virus Software stopped before installation and restarted after (a common recommendation from ISV's)
- Checking for backups (in the case of major updates like Service Packs)
Most importantly however is the ability to include checks in your scripts for problems. An example would be a problem I ran into with SP4 for Win2K. We had this application called Win Driver which placed a library, Windrvr.sys I believe, in the %sys32%\Drivers directory. Turns out that on every system if it wasn't at the latest version the system would blue screen. Now, if you have 200+ machines that this application is on that could be an issue. So what does a good software packager do here? He (or she) can check to make sure that the file version of Windrvr.sys is recent enough and if its not either abort the installation (and use the good packaging practices above to log this efficiently and report back to SMS) or automatically update the file if its not in use and continue with the SP4 installation.
That’s just one of many examples that can be done through good packaging which is really one of the most lucrative pieces of SMS where effective enterprise management can be seen. Its just a shame that Microsoft won't be providing the tools to do this in the foreseeable future so we are stuck with limited functionality or the purchase of high-end (read: expensive) tools to get the job done. Additionally these 3rd party tools have no impact into the future versions of SMS and integration into the management structure. Yeah, many are gold level partners but lets not kid ourselves here - Microsoft has the biggest impact on Microsoft so if you want to see some cool integration with a software packaging tool they most likely need to be doing it. Why not SMS Installer 3.0 with some new actions like:
- Add new Advanced Client Policy
- Compile data class to WMI (yes! No need to copy your custom sms_def.mof to the client and compile)
- Initiate HINV/SINV
- Initiate Machine Policy Retrieval Cycle
- Update Get System Information to get the SMS Site, Default MP, AD site, etc
When I think about what a major complaint from many Microsoft customers is about SMS, I consistently hear that Software Distributions can be difficult. Now to be fair they aren't claiming there are other products that are hands down easier, just that its problematic with SMS. If the scripting interface were more robust and easier to configure anyone would be able to create awesome packages that could be deployed with great success.