Want to create c# .net installer

445 views Asked by At

I have a .net application in c#. I am using SQL Server 2005 as database. I want to create setup for it. I want that when I run setup it automatically installs SQL Server 2005 which I add in prerequisites.

Please help how to create setup...?

3

There are 3 answers

0
Evren Kuzucuoglu On

You could create a Setup project in Visual Studio. It can create an offline setup, which can include prerrequesites or be configured to download said prerrequesites from an online location when installing the offline setup.

http://msdn.microsoft.com/en-us/library/2kt85ked.aspx

Before going into this, though I would like to share my very bitter experience using SQL Server as a prerrequesite, and why you should really avoid it (whichever deployment system you use, actually).

See, the prerrequesites that are available to your Visual Studio instance depend on a folder present on the same machine where VS is installed: C:\Program Files\Microsoft SDKs\Windows\v7.0A\Bootstrapper\Packages (this is for VS 2010, replace v7.0A with v6.0A for VS 2008, and replace Program Files with Program Files 9x86) if you're on 64 bits).

You can go check it now, you will most likely see a list of folders, called bootstrapper packages, which have this basic structure:

product.xml : an xml file describing the prerrequesite to Visual Studio. This file is the most important one. It lists:

  • the files that are needed to install, upgrade or uninstall a prerrequesite
  • the conditions to evaluate in order to decide which action to undertake. For instance: is the system x86/x64? is the system xp, server 2003, etc? is the prerrequesite already installed? which version? which language?
  • the actions to undertake depending on these conditions. Generally, the command line arguments to use with the exe file you are installing.

a bunch of executable files (msi, exe): the files needed to install the prerrequesite (there can be none if the product.xml refers to online locations where to get these files).

optionnaly, some folders with a locale name: the localization for your prerrequesite.

Now there are two major categories of issues with this system:

drawbacks of this setup system:

First, the product.xml file is very difficult to build. It will most likely imply you to calculate checksums, create certificates, explore Windows Installer install log files, use a very buggy tool called the Bootstrapper Manifest Generator. You will find yourself googling problems, and the only result will be your own unanswered Stack Overflow question. Trust me, I've been there.

Second, this whole boostrapper thing is litteraly out of (source) control, and an insult to the concepts of team work and continuous integration. Having your project install configuration in Program Files means:

  • it has to be the same prerrequesites for all your projects.
  • no versioning.
  • you must keep the whole prerrequesite folder consistent across all machines that could build the solution, including the CI server (which can be a massive hussle if it is used by several teams).

drawbacks of SQL Server as a prerrequesite:

At first sight, the SQL Server install command line seems quite straightforward. You decide the name of the instance, if it's an install or an upgrade, access rights, etc. The thing is, I cannot count the number of issues you will encounter on your path when you actually try that in real life:

  • SQL Server won't upgrade from a language to a different language.
  • SQL Server won't upgrade from SQL Server x86 to SQL Server x64 on an x64 system.
  • SQL Server not en-US won't install on en-US Windows.
  • More generally SQL Server will most likely fail to install if anything close to SQL Server has already been installed on the same machine.

If you run the setup manually, it will tell you why. But if you try to do it as prerrequesite, it means that you have to foresee every single configuration issue that could possibly happen. Believe me, you will never see the end of it: there's a reason why the SQL Server Setup is so complex...

Now what could you do?

  • Ask your clients to have SQL Server installed. It is a decent option, and they have to manage the SQL Server license anyway, since they are the ones using it. Maybe they already have it.
  • Install it yourself.
  • Use a different version of SQL Server, like SQL CE. Very lightweight, some less functionalities but if your just want a local database it can do the trick.
  • Use a different RDB system. I don't know them, maybe they are easier to install.
1
Kendall Frey On

The paid versions of Visual Studio come with the ability to create installer packages, however, that feature is miserably lacking and is being removed in VS11. I have used it, and I can say, its not worth using. There are other free deployment tools out there. I recommend Windows Installer XML.

0
Ricibob On

VisualStudio does have New project -> Other project types -> Setup and Deployment -> Setup Project. As Kendall noted this is a very limited/basic installer solution. However if really all you want to do is have SQL Express as a prerequiste and you app installed then it can manage that (but not much more).

To setup a prerequist:

  • Go to project properties (right click on setup project -> properties) and you will find a "Prerequisites" button on that dialog.
  • This brings up a dialog that lists all the bootstrapper packages that are located in "Program Files\Microsoft SDKs\Windows\v6.0A\Bootstrapper" folder. Select/cehck "SQL Server 2005 Express Edition SP2 x86" if thats what you want.
  • If you want the full version of SQL server then you will need to find a bootstrapper package for it - googing that (sql 2005 full bootstrapper package) should yeild a result.

Note that SQL server 2005 will limit you to an x86 install - if you want a x64 install use SQL Server 2008 Express/full.