tags:

views:

230

answers:

2

I'm trying to create a way of deploying a set of tools (which are add-ins to 3rd party software) to my users.

I would like to do the following:

  • User Enters Serial
  • Dlls in their directory structure is extracted to program files
  • a file is copied to a location in ProgramData (this registers my add-ins to the 3rd party application)
  • Online activation for software is performed

Can anyone point me into the right direction for this? I had a look at deployment projects in Visual Studio but I'm not sure if they are what I'm after. Main problem is they are ugly, I would like to have a nice WPF installer, and have a more custom experience. But I guess that can be traded off if its going to make things easier.

I was thinking, I could just make my own C# project that extracts the files, but I have no idea how to package them up and extract them all as part of one download (like the MSI files that the deployment projects create). Can anyone point me in the right direction?

A: 

Go to WiX.

It turns out that writing your own installer is way, way more complicated than it looks like it is, and making sure that it plays nice across all versions of windows and so forth is not so simple. So, use theirs.

mmr
A: 

The thing about having a WPF installer is that your users will need an appropriate version of .NET installed just to install your application. This may be fine if you are using .NET 3.0 and your software requires Windows Vista or greater. But if you use .NET 3.5 or 4.0 simply stating .NET as a requirement may not be enough. What do you do if the user uninstalls .NET then tries to uninstall your application?

This is why it is generally considered a bad idea to use .NET custom actions in an installer too.

While mmr's recommendation of WiX is a good one (I've used it and it's very powerful) it should be noted that it has a steep learning curve. Or at least it did when I used it last because there was little or no mature tools support for it. You basically crafted everything by hand.

If you don't have the developer resources to spend a lot of time on the installer, I'd suggest looking at a commercial installer authoring product that will probably enable you to get up and running quickly.

But you can probably save a lot of time by moving the serial number / activation piece out of the installer and do that from within your application on the first run.

Josh Einstein
thanks for your comment.The software is a bunch (say 10) dll files, that are called by a 3rd party software. They are all written in .net 3.5 as that is what the software requires, so if they are installing my tool, they are going to have .net 3.5 already. I see your point on uninstalling though. All I'm trying to do is package up what is effectively an Xcopy install, and then do an activation, which creates a file in the folder which proves its activated (would rather do this early if possible but I see your point on keeping it until the first tool is run)
RodH257