I created already a SQL Installation with my sqlinstalltionCommand using Wix Bootstrapper and I want to pass this exe to my WIX installer as a Prerequisite.
if I opened the SQL Installation it works very fine, but when I call it from WIX Installer it does not work. I know this is not ideal but i need it with my files. Any IDEA??
Running one installer from inside another is not supported. The bootstrapper project can run your prerequisites and your package in one. Do that instead.
Related
I'm looking to create a Windows Installer package that will run an exe that runs another Windows Installer.
I'm putting a package together that has to install three files, an EXE, a CONFIG and an empty TXT. In addition, we also need to run the Access Database Engine 2007 as part of this process. However, when setting custom actions to just run it (with the flag /quiet) it fails because it's attempting to run an MSI inside of an MSI.
Is there any way I could somehow have it launch right after/right before or something? I've looked into WIX but honestly I'm clueless on how it would solve the problem.
Thanks.
You should look at the WiX Burn functionality and prerequisites. Some examples are:
WiX - Install Prerequisites and 3rd party applications
http://www.c-sharpcorner.com/UploadFile/cb88b2/installing-prerequisites-using-wix-bootstrapper-project-and/
You could probably just run the setup from the Burn bootstrapper - it will do its own detection if it's already installed.
I have a working wix bootstrapper, chaining two wix msi installers, and it works fine.
The output file of the bootstrapper is an exe file, I am interested in changing the output file to be an MSI file, is it possible with bootstrapper?
If so, how do i achieve this?
Thanks.
No, it's not possible. Bootstrappers have to be executables, not MSI packages. If you want to write your own bootstrapper from scratch, you could use EmbeddedChainer to create an .msi with a chainer inside it, on Windows Installer 4.5 and later.
our company is using WiX to create our (currently pretty simple) setup. We have a bootstrapper project which installs the .Net 4.0 Framework and runs our MSI package (WiX setup project). We now want to access the filename of the bootstrapper (Setup.exe) during runtime and save it to a file. Just for background: The filename is not fixed and will be changed by our download server frequently, so we have to access it during runtime.
Unfortunately I didn't find any solution to accomplish this with WiX. Can someone help me? Maybe you have some ideas?
Thanks in advance!
This is your own bootstrapper, right? If so, the bootstrapper either knows its own name, or can detect it at runtime (::GetModuleFileName()). When the bootstrapper runs the .msi install, have it pass its name as a public property on the command line:
msiexec /i OurPackage.msi IWASBOOTSTRAPPEDBY=bootstrappername.exe
The property IWASBOOTSTRAPPEDBY is then available to the WiX-based .msi package to do with as it pleases.
For that matter, the bootstrapper program itself could write its name to a text file, and not even bother the .msi package with the task.
I have created a bootstrpper using the dotNetInstaller tool. The created bootstrapper internally has these installers:
.NET Framework 4.0
SQL Server Express
Now through WiX, what are the steps that I need to follow to invoke the above Bootstrapper from WiX?
You should not invoke a bootstrapper from WiX - that has no sense. The idea behind the bootstrapper is to "bootstrap" the prerequisites of the installation (.NET and SQL Express in your case) and the main installation package. The main package you generate with WiX should be launched from inside the bootstrapper when the prerequisites are checked and optionally installed.
See this article for better understanding how to start with bootstrapper authoring with WiX.
If you are using WiX to create installers, I would suggest using WiX to create your bootstrapper as well.
http://wix.sourceforge.net/manual-wix3/authoring_bundle_intro.htm
You can only invoke packages from using bootstrapper, you can't invoke it from WiX. By the use of dotNetInstaller you can easily invoke one after another. One of the process as #Yan introduced. By the help of prerequisites folder. It is a very efficient and popular process. But what can I suggest for you, invoke link instead of folder. So your installation full package wouldn't not so bulky. Whatever the msi need it can directly download from internet and install it one after another. Follow the link.
http://www.codeproject.com/Articles/5116/dotNetInstaller-Setup-Bootstrapper-for-NET-Applica
my application requires the microsoft visual c++ redisributable package (vcredist_x86.exe).
i have a custom action to run the vcredist_x86.exe
i want it to run only if it's not already installed. i created a registry search to check it.
the question: how do i run this action with the check? when using the InstallExecuteSequence element, as shown below, the vcredist_x86.exe crashes because you cannot run an msi while running a different msi
thanks,
Uzi
what you need is a bootstrapper that would install the VC++ redistributable before your MSI starts.
i'm using open source dotNetInstaller and it works pretty well.
Don't use the exe at all. To distribute the VC++ runtime in an msi-based install, use a merge module. No custom actions, no conditions to add, it just works.
Aaron Stebner's blog specifically talks about doing this with WiX.
http://blogs.msdn.com/astebner/archive/2007/02/13/building-an-msi-using-wix-v3-0-that-includes-the-vc-8-0-runtime-merge-modules.aspx