views:

126

answers:

5

Hi, I would like to know if you could share some (trusted) sources of information (books, URLs) that you consider the most relevant for learning Windows Installer. They could be for starting on this technology or for an advanced or professional level of knowledge.

I'll be really grateful.

UPDATE: I would like to know where a future deployment engineer can start and where he can go to keep on the right direction (step by step).

+4  A: 

I'm obviously biased but I think my blog and the WiX toolset are good ways to learn:

http://robmensching.com/blog

http://wix.sf.net (click on the Manual or Tutorial links on the right)

Some people like Phil Wilson's "The Definitive Guide to Windows Installer" but I never read it. I learned straight out of the MSI SDK.

Rob Mensching
@Mario Rob is clearly a trusted source!
ewall
@ewall thanks I know... :)
Mario
Thaks a lot Rob.
Mario
+1  A: 

Mario--this is a reasonable question without a simple answer. The primary reason is that most install developers use a specific tool which in turn hides the bulk of Windows Installer behavior. While it would be nice if those developers had an in-depth knowledge of Windows Installer, that's not the case. 

My suggestion would be as follows: 

(1) Focus on a specific tool. Many of the dev environments offer a trial period and some are free. The on-line help for these tools plus the act of building some sample packages will be a helpful process.  

(2) If practical, consider taking a training class for the tool. I know Flexera sells their Basic and Advanced InstallShield course manuals. A bit over-priced but it does include need-to-know Windows Installer specifics. The problem you'll run into is that most documentation is specific to the tool without explaining a lot of the connectivity to Windows Installer.

(3) You'll need the Windows Installer SDK--in addition to the help file there are some interesting tools and VBScripts. Orca is one tool that is included with the SDK and there are similar tools on the Internet (SuperOrca, InstEd, etc.). The SDK is not a great read but it is a great reference. As you come across specific questions regarding Windows Installer use the SDK help file to understand the deeper internals.

(4) Google 'windows installer blog'. You probably don't want to hear that, but there are many great blogs available that cover many bits and pieces of Windows Installer. Make sure you pick up the Windows Installer Team blog.

No matter what path you choose, you'll find learning Windows Installer to be a hands-on process. Hope this helps! 

Leslie
@Leslie, Thanks for your suggestion. I'm using WiX for a year by now, and I'm trying to polish my knowledge deeper on the underlying technology.
Mario
+4  A: 

I did 7 years of writing InstallScript installers before ever picking up MSI. While there is a huge difference between procedural script-driven imperative installs and data driven declarative installs, they both do the same fundemental thing: deploy software.

I became an MSI Expert but studying everything I could on the domain, writing LOTS of installs and by blogging for 7 years and answering over 4,400 posts on the InstallShield community forums. The only way to go in my book is to have been there and done that.

So the first step in your quest should be to understand the Windows Platform and related technologies very thoroughly. These evolve over the years but you should get a decent understanding of:

Fundamentals

  • Registry
  • FileSystem
  • NTFS
  • ACL's
  • DLL Types ( Win32, COM, .NET Assembly)
  • Win32 API
  • .NET Base Class Libraries
  • Service Control Manager Drivers ODBC
  • SQL IIS Active Directory ( GPO, LDAPand so on )
  • Global Assembly Cache
  • WinSxS Cache
  • DLL Hell
  • Good and Bad Installer Behavior

The second step is

Tools

Now let's start to writing installs. As Leslie ( Easter I assume ) said in another answer, pick a tool and learn how to use it to accomplish the above things. But don't stop there, as soon as you can go to the next step.

MSI

Start digging deep down into how your tool is working behind the scenes as soon as you can. Just as you can write C# in .NET and look at the IL with ILDASM, learn to use ORCA and see what is happening. Read the MSI SDK. Yes, it's rough and cryptic but I spent 3 months commuting beween DC and TX and I spent at least 16 hours a week traveling away from internet connections but nothing except the SDK to read. Read it, know it, live it... the cryptic help topics will eventually start to click and become second nature.

And finally, read my blog: DeploymentEngineering.com and every other blog you can find.

Christopher Painter
Thanks for the "understanding of the Windows Platform and related technologies very thoroughly", I find it a must know before trying to build any installer for Windows.
Mario
It's critical and I'm sometimes shocked by how often I see developers try to write an install when they don't understand the platform. Just today I had a bug in the QA lab because we switched to InstallShield 2010 and were testing on Windows 7. The short version is a bunch of AppPools were created with no CLR version and the webservices wouldn't JIT. This is a design change in IIS that needs to be acconted for. Now I know and it won't happen again. :-)
Christopher Painter
A: 

Hi I'm also biased but this might be helpful. I recently revisited Wix for a real-world Windows Installer project, and wrote up my solution which ultimately plugged into a continuous integration server.

The steps in the article take you through using Wix, localizing the MSI, and creating a Bootstrapper for installing any prerequisites.

http://www.codeproject.com/KB/install/WixWindowsInstallerDemo1.aspx

TheCodeKing
A: 

For learning Wix this tutorial helped me a lot:

http://www.tramontana.co.hu/wix/

Here is a nice little blog post about how to debug custom actions:

http://blog.torresdal.net/CommentView,guid,BFEBE347-AD82-4C76-A96E-1C22AA39EFC9.aspx

KnightsArmy