Deploying and setting up SQL Express 2008 - installation

Looking into installing an instance of SQL Express for an app. I want to have a separate installer. (I need to run some Transact-SQL stuff afterwards)
I've been referencing this article.
It is recommended that you ship the Express package extracted on your media and then launch Setup.exe directly. To extract the Express package, run the following command.
So far I tried bundling the unpackaged SQL Setup in an MSI (using a Setup and Deployment project). The user installs, which just puts the extracted files in a folder, then in OnAfterInstall I'm the setup process. This doesn't work since SQL's Setup.exe runs some .msi files.

Was able to make my own executable to bootstrap the installation and use FreeExtractor to create a self-extracting zip of the setup and my bootstrapper and then run my executable at the end.

Related

Separating the clickOnce setup.exe

I am trying to deploy the setup.exe that click once creates to users through sccm due to business practices. The issue I am running into is that when I move the setup.exe out of the folder that contains the .VSTO, then the computer the setup.exe is being run on cannot find the VSTO. Is there anyway when publishing to have that setup.exe file look back at the file server that contains the VSTO?
A bootstrapper (setup.exe) just check for prerequisites before running a real installer app for installing the software. Running setup.exe separately doesn't make any sense.
There are two main ways of deploying Office applications:
Deploy an Office solution by using Windows Installer. It is used for centralized deployments like SCCM.
Deploy an Office solution by using ClickOnce.
You may find various custom installers that may embed everything into a single setup.exe file. For example, you may take a look at InstallShield or Advanced Installer .

How to create a multi setup project in Advanced Installer

I’ve two MSI files that I want to be installed in one setup installation.
One is an application – EXE file and the other is a windows service that will start and stop the EXE file.
So, EXE file setup needs to be installed before the windows service.
First I create a project for the EXE file that generates a MSI file. After I create a project to the Windows Service application that generates other MSI. So far so good.
If I install each file separated it works well.
But, I’d like to have just one setup to install these two applications,
For what I read it seems that I need to add the EXE project (MSI file) to the Windows Service application project.
I already tried to add it on Prerequisites page as a Chained Package or as a Feature-based, but only installs the EXE project. The Windows Service is never installed.
What mistake I’m doing?
This is not the correct way. You can modify the project that installs your EXE file, to also install and start the service.
Your project that installs the EXE now just contains the file in Files and Folders page. The new step is to go to Services page and add a new service installation.
The linked example from above is a for a Java application, but he same can be applied to any other executable file.

Visual Studio Setup Project - check for directory existence

I am attempting to install a library DLL using a Visual Studio Setup Project in VS2010. The installer must install the DLL into the Target Application folder, as well as install the DLL into the appropriate folder for each instance of MS SQL Server Reporting Services installed.
i.e. if SQL 2008 reporting services is installed, then the DLL should additionally be installed to [ProgramFiles64Folder]\Microsoft SQL Server\MSRS10.MSSQLSERVER...\bin.
If SQL 2012 Reporting Services is also installed, then the DLL should also be installed to [ProgramFiles64Folder]\Microsoft SQL Server\MSRS10.MSSQLSERVER...\bin, etc.
I am trying to only install the DLL into the appropriate folder, if the corresponding version of SQL Server is installed on the system.
I have tried using the Registry Search, to look for the MSRS*.MSSQLSERVER key, but those keys aren't added to the Wow6432Node, and I couldn't find a way to get the installer to look only in the 64-bit node (built for Any CPU and x64--both ended up looking in the Wow6432Node).
I also tried using a File Search, but couldn't get this to work when looking for the existence of a directory rather than a file.
Is there any simple way to do this determination? To only install a file to a target folder if said target folder already exists?
Setup projects that generate MSI files (Windows Installer) don't do directory search, just file, registry, and installer component guid search. If you knew the installer component guids of representative files from those setups you could search for those with the Windows Installer search and have a property set that tells you whether they are installed or not.

Modify visual studio's SQL Express Bootstrapper

I know there are ways of installing SQL Express from the command line. This link gives an example of that. There is another example in here..
When I make this change in my application:
then when I deploy my application and install it on a computer that does not have that prerequisite I notice that the installer downloads that prerequisite:
If I cancel the installation and then launch the exe file that the installer downloaded then I will see:
If I do not cancel the installer, I believe that the installer then goes ahead and installs SQL Server Express with a technique similar to the one posted by the first two links link 1, link 2.
Where does Visual Studio stores the parameters that are being passed to the exe that it downloads in order to create a silent install? will it be possible to modify those parameters that are being passed to the exe? also I know which file (prerequisites) did visual studio (installer) downloads because I found it on the computer when installing my application but how can I tell from what link does visual studio downloads the prerequisites? I know it depends on the OS version and architecture of the operating system where the application is being installed.
Anyways I am just curious about the last paragraph. In short, I just want to modify the parameters that are being passed to the prerequisites of SQL Server Express 2008. Those parameters should be somewhere in the application that I deployed. Or maybe they get downloaded from Microsoft.
On a 64-bit machine the SQL Server Express bootstrapper is typically located in the following folder:
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bootstrapper\Packages\SqlExpress2008\en
Look inside the package.xml file for the command line parameters for the installer.

Why Visual Studio creates .exe installer files?

when I build solutions in Visual Studio, that generates installer files as .exe and .msi, .exe files are useful for what?
The .EXE file that is created by the installer project is a bootstrapper for the .MSI setup file. It is used to launch the .MSI setup file.
Generally, both will launch the setup program and allow the user to install the application. However, sometimes the setup.exe file will run a custom validation routine to determine if the user's computer meets the minimum requirements for installing the software.
For example, if the user does not have Windows Installer, they will not be able to launch the .MSI file, but the .EXE application will still run and inform them that they need to install Windows Installer first. For .NET applications specifically, the .EXE file verifies the presence of the appropriate version of the .NET Framework, and if it is not present, it prompts the user to download and install it.
You can customize the prerequisites that are required for your application in your installer project using Visual Studio. See these MSDN articles for details on how to do that:
http://msdn.microsoft.com/en-us/library/ms165429(v=VS.100).aspx
http://msdn.microsoft.com/en-us/library/7eh4aaa5(v=VS.100).aspx
Others have commented on the how (.exe bootstraps the .msi) but part of the reason why is that users know that .exe files are the things you run. I don't think your average user knows that .msi files are something that you can click on to install an application.
The .exe file is made for installing the prerequisites of your application.
Let's say your application uses the .Net 3.5 framework, you can tell the installer project to include the installation of the needed libraries if they're not already installed.
You may also deactivate it, so only the .msi is being created.
This page shows how to activate and configure the prerequisites setup, just uncheck the checkbox in order to deactivate it.
You also find more details on the process of Bootstrapping on MSDN:
the capability to automatically detect
the existence of components during
installation and install a
predetermined set of prerequisites
.exe files are useful for executing your programs that you've just built in Visual Studio, assuming you're not doing web applications.
Pretty much every Windows program out there is executed using files with an .exe suffix.
Installer exe files are normally just the msi wrapped in a bootstrapper. The bootstrapper can do anything, but normally its purpose is to ensure the user is running a sufficient version of Windows Installer, then extract the msi and invoke msiexec.exe to start installing the msi. Generating installers as exe's is deprecated these days, but some still do it.

Resources