16

I need to deploy a software setup targeting both, Windows 64bit and 32bit. I have two separate Windows Installer databases (created with WiX) for each platform, and I am using dotNetInstaller to combine both into a single installation bootstrapper executable.

I'm currently using version 1.10 of dotNetInstaller and set auto_close_if_installed=True, because I want to comletely hide the bootstrapper from the user. Still, dotNetInstaller insists on displaying a sill progress bar window while my installer is running, and doesn't really auto-close. The user needs to confirm a dialog box telling him that the application was successfully installed. But the real deal-breaker is that it doesn't support Windows 8 (yet).

Upgrading to a later version of dotNetInstaller seems to break auto_close_if_installed, so it's even worse.

So my question is: what is the current state of the art to deploy both setups in a single executable. Would Wix Burn be an option?

I know that in an ideal world, I simply provide my customers with separate installers for either platform. But they happen to be completely unaware of such subtleties, most of them don't even know what platform they are using.

Daniel Gehriger
  • 7,339
  • 2
  • 34
  • 55
  • 2
    I have used Burn for this in the past, but it felt a bit like overkill. I'm interested to see what others think. – bricelam Oct 30 '12 at 22:25
  • 1
    @Brice: the thing is, Burn doesn't seem to be very reliable either. The Visual Studio Update 1 CTP 3 was deployed using it, and it failed to install on my computer because of Burn: [Microsoft Connect 766849](https://connect.microsoft.com/VisualStudio/feedback/details/766849/visual-studio-2012-update-1-ctp-3-crashes-during-installation) – Daniel Gehriger Oct 31 '12 at 07:36
  • 4
    I'd recommend burn for this, with one package marked with InstallCondition="NOT VersionNT64" and the other InstallCondition="VersionNT64". Using burn you can create a single exe package and the users don't have to run the correct one. – Neil Nov 05 '12 at 21:41
  • @NeilSleightholm: would you have a sample to get me started? – Daniel Gehriger Nov 05 '12 at 21:47
  • 2
    This should help: http://neilsleightholm.blogspot.co.uk/2012/05/wix-burn-tipstricks.html. – Neil Nov 05 '12 at 21:51
  • I've done it all in one wix-based setup by using Win64 attributes on components, searches, and actions. But then that was all wix, and the ICEs went nuts – JohnL Dec 20 '12 at 14:04
  • 3
    @DanielGehriger that connect issue you point to is an issue in the WPF Bootsrapper Application written by the Visual Studio team. The Burn engine is working correctly, it's a bug in their code. It isn't easy to discern the issues since the issue is taking down their UI. :) – Rob Mensching Apr 13 '13 at 07:40

2 Answers2

27

I would definitely use Burn in this scenario. Something akin to the following:

<Wix>
  <Bundle...>
    <BootstrapperApplicationRef Id='WixStandardBootstrapperApplication.HyperlinkLicense' />

    <Chain>
      <MsiPackage InstallCondition='NOT VersionNT64' SourceFile='path\to\x86.msi' />
      <MsiPackage InstallCondition='VersionNT64' SourceFile='path\to\x64.msi' />
    </Chain>
  </Bundle>
 </Wix>

This is exactly one of the scenarios Burn was designed to handle.

Rob Mensching
  • 33,834
  • 5
  • 90
  • 130
0

You can do it in a single Wix via Conditions and Features.

<Feature Id='X86' Level='1'>
  <ComponentRef Id='X86Feature1' />
  <Condition Level="1">NOT VersionNT64</Condition>
</Feature>
dvallejo
  • 1,033
  • 11
  • 25
  • Id didn't vote neither up or down. But do you think your read the question carefully? The goal was to combine two MSIs with a boot strapper, wasn't it? – harper Jan 15 '17 at 12:14