WiX burn bootstrapping x86 and x64 msi's into single No-UI bootstrapper
Asked Answered
M

3

10

I have x64 and x86 versions of my installer .msi, and want to ship a single executable which simply checks the machine architecture and runs the x86/x64 MSI. The MSIs are basically identical, they install the same AnyCPU files, which I bundle in a shared .cab file so as not to double the size of the installer.

So far I've tried WiX Burn, which pops up a GUI which I don't want (I just want to use the MSI GUI), and I tried disabling the burn GUI via /silent flag - this propagates this flag to the MSIs so it disables all GUI for MSIs (not what I want).

I think I am correct when I say there is no default No-GUI version of Burn bootstrapper, and to create one you must edit the source code yourself? This sounds like a massive missing feature?

I've also tried DotNetInstaller which has it's own set of problems with a confusing user interface. I've also tried setupbld which does not support MSIs with an external cab.

Militiaman answered 1/2, 2013 at 11:18 Comment(0)
D
10

For the architecture detection you could use the InstallCondition attribute in the MsiPackage element.

To put it simply try:

<MsiPackage SourceFile="..\Example\bin\Release\x86\example.msi" Compressed="no" InstallCondition="NOT VersionNT64" />
<MsiPackage SourceFile="..\Example\bin\Release\x64\example.msi" Compressed="no" InstallCondition="VersionNT64" />

Sources: http://wix.sourceforge.net/manual-wix3/wix_xsd_msipackage.htm

Displacement answered 15/7, 2013 at 14:51 Comment(0)
P
1

As the other answers suggest you can use the VERSIONNT64 variable to check the on which platform you are installing.

Wix Burn supports NO-GUI or quiet mode by passing the command line parameter "-q".

Along with that it supports the following other arguments too:

The wixstdba supports only the "standard package switches":

-q, -quiet, -s, -silent = silent install 
-passive = progress bar only install 
-norestart = suppress any restarts 
-forcerestart = restart no matter what (I don't know why this is still around) 
-promptrestart = prompt if a restart is required (default) 
-layout = create a local image of the bootstrapper (i.e. download files so they can be burned to DVD) 
-l, -log = log to a specific file (default is controled by bundle developer) 
-uninstall = uninstall 
-repair = repair (or install if not installed) 
-package,-update = install (default if no -uninstall or -repair) 

Type your wixburnexename /? To get the details on your machine.

Pileous answered 31/7, 2013 at 12:2 Comment(0)
H
-4

You could use custom actions and Burn Built-in Variables to check whether you are running on X86 or x64. Based on this you could execute/arrange the list of actions.

<InstallExecuteSequence>
   <Custom Action="Windows32bitInstall" After="InstallFiles">NOT VersionNT64</Custom>
   <Custom Action ="Windows64bitInstall" After="InstallFiles" >VersionNT64</Custom>
   <Custom Action="InstallHelp" After="Windows64bitInstall">NOT Installed</Custom>
</InstallExecuteSequence>

This would execute with the same elevation.

<CustomAction Id="InstallHelp" Directory="ProgramFilesFolder"
          Execute="deferred" Impersonate="no" Return="ignore"
          ExeCommand="[HELPDIR]\help.exe /log" />
Huth answered 26/2, 2013 at 3:42 Comment(1)
There are no custom actions in WIX bundle/bootstrapper. It's not an MSI and does not have an MSI properties/functionalities, it's an exe/application which helps in chaining!Pileous

© 2022 - 2024 — McMap. All rights reserved.